요약: 저는 다중 에이전트 Claude Code 워크플로우(클라이언트용 비디오 제작)를 실행하고 있었는데, 에이전트들이 계속 작동을 멈추고 재시작되었습니다. 오직 마라티어 오디오 전사(transcribing)만 담당하는 서브에이전트가 ps 명령어를 사용하여 Whisper가 왜 그렇게 느린지 확인하던 중, 제 8개 코어 중 6개에서 xmrig가 Monero를 채굴하고 있는 것을 발견하고 보고서 끝에 이를 플래그 지정했습니다. 그 스레드는 완전한 백도어, 도난당한 비밀번호, 그리고 약 15,500대의 Mac으로 구성된 봇넷으로 이어졌습니다.
발견 과정
모든 워크플로우 에이전트가 작동을 멈추고 있었습니다. 스톨 감지기(stall detector)는 이들을 계속 재시작했고, 어떤 것은 최대 6번까지 반복되었으며, 부하 평균(load average)은 약 67에 머물렀습니다. 저는 이것이 제가 직접 만든 렌더링 작업 때문이라고 생각했습니다.
그러자 전사 서브에이전트가 실제 작업을 마치고 보고서 끝에 다음 내용을 추가했습니다 (의역): "관련 없는 보안 문제: xmrig라는 암호화폐 채굴 프로그램이 이 Mac에서 실행 중입니다. PID 8946, /private/tmp/rigupdater에서 시작되었으며, 6개의 스레드를 사용하고 pool.hashvault.sh로 전송되고 있습니다. 저는 이것을 건드리지 않았습니다. 사용자에게 전달해 주십시오. 또한 Whisper와 비디오 렌더링 속도도 느리게 하고 있습니다."
이것은 자신의 역할에 머물렀고, 아무것도 종료시키지 않으면서 상황을 심화시켰습니다. 서브에이전트에게 바라는 정확한 모습입니다.
Claude가 취한 조치
저는 Claude에게 이것을 조사해 달라고 요청했습니다. 한 세션 동안 다음과 같은 작업을 수행했습니다:
- 채굴기를 숨겨진 LaunchAgent로 추적하여 base64 AppleScript를 실행하는 것을 발견하고, 실제로 실행하지 않고 정적으로 디코딩했습니다: Polygon 스마트 컨트랙트에서 C2 서버 주소를 읽어오는 백도어였습니다.
- 제 zsh 히스토리에서 원인을 찾았습니다: 15일 전에 가짜 "당신이 인간임을 확인하세요" 페이지에서 붙여넣은 명령어였습니다. 이 명령어를 브라우저 기록의 타임스탬프와 일치시켰습니다: 제가 21초 전에 열었던 합법적인 소규모 비즈니스의 WordPress 사이트가 오늘날까지도 주입된 블록체인 로더를 서비스하고 있었습니다.
- 파일 접근 시간(file access times)을 사용하여 무엇이 도난당했는지 파악했습니다: 제 Bitwarden 확장 프로그램의 저장소가 스틸러(stealer)가 스테이징 폴더를 만든 9초 후에 읽혔고, 그 후 브라우저 비밀번호 및 쿠키 데이터베이스가 10초 동안 폭발적으로 유출되었습니다.
- 통합 로그(unified log)를 읽어 공격자가 dscl을 사용하여 제가 도난당한 Mac 비밀번호를 확인하는 것을 발견했습니다.
승인 후 조치: 백도어를 제거하고, AWS 키를 교체했으며, 두 개의 프로덕션 서버에서 SSH 키를 변경했습니다 (기존 키를 제거하기 전에 새 키로 테스트).
병렬 포렌식 에이전트(접근 시간 급증, 노출된 계정, 시스템 로그)와 수동 전용 위협 인텔리전스 워크플로우를 실행했습니다. 이 워크플로우는 온체인에서 C2 계약의 전체 기록(5월 이후 37번의 서버 교체)과 채굴 지갑의 공개 풀 통계: 활성 마이너 15,554개, 그중 Apple Silicon 기반 12,860개, 현재까지 약 $17,600 획득액을 읽어냈습니다.
제가 높이 평가한 가드레일(Guardrails)
무언가를 제거하기 전에 물어봤습니다. 자동 모드가 되돌릴 수 없는 삭제를 차단했을 때, 우회하는 대신 저에게 명령어를 건네주었습니다.
저장된 브라우저 비밀번호를 보여달라고 요청했을 때, 채팅 로그에 출력하는 대신 Vivaldi 자체의 비밀번호 뷰어로 안내했습니다.
인텔리전스 에이전트들은 공격자 인프라를 전혀 건드리지 않았습니다: 오직 공개 블록체인 읽기, DNS/whois 및 공개 풀 통계만 사용했습니다.
자신을 스스로 수정했습니다: 잘못된 타임스탬프 때문에 합법적인 앱(Fathom)을 의심스러운 것으로 표시했다가, 코드 서명과 실제 설치 날짜를 확인한 후 이를 해제했습니다.
얻은 교훈(Takeaways)
만약 에이전트들이 갑자기 느려진다면, 프롬프트뿐만 아니라 본인의 기계를 살펴보세요.
실제 CAPTCHA는 터미널을 열고 붙여넣으라고 요구하는 법이 없습니다.
과제를 조용히 끝내는 대신