Claude Code 에이전트가 자꾸 멈추길래 봤더니, 내 맥에 15일 동안 숨어있던 암호화폐 채굴기가 있었음
My Claude Code agents kept stalling. One of them noticed a crypto miner that had been on my Mac for 15 days
핵심 요약
Claude Code 에이전트가 작업 중 발견한 암호화폐 채굴기를 통해 15일간 지속된 맥 해킹 피해를 복구한 사례입니다.
- 채굴기 발견 — 에이전트가 작업 중 시스템 부하를 분석하다가 xmrig 채굴 프로세스를 찾아냄
- 해킹 경로 — 15일 전 가짜 '사람 인증' 페이지에서 터미널 명령어를 복사해 붙여넣은 것이 원인
- AI의 대응 — 백도어 제거, AWS 키 교체, SSH 키 변경 등 보안 조치를 성공적으로 수행함
- 보안 교훈 — 에이전트가 비정상적으로 느려지면 시스템 리소스 점검이 필수적임
세 줄 요약: 클로드 코드(Claude Code)로 멀티 에이전트 워크플로우 돌리면서 고객 영상 작업 중이었는데, 에이전트들이 자꾸 멈추고 재시작되더라. 마라티어 오디오 받아쓰기만 하던 서브 에이전트가 위스퍼(Whisper) 왜 이렇게 느린지 보려고 ps를 쳤는데, 내 CPU 8코어 중 6개를 xmrig가 먹고 모네로 채굴하고 있는 걸 발견해서 보고서 끝에 적어놨음. 알고 보니 이게 백도어 뚫린 거였고, 비번 털리고 맥 15,500대 규모 봇넷에 감염된 사건임.
어떻게 걸렸나
워크플로우 에이전트들이 죄다 멈추는 거임. 스톨 감지기가 계속 에이전트들을 재시작시키는데, 어떤 건 6번이나 재시작됐고 로드 에버리지는 67까지 찍더라. 난 그냥 내 렌더링 작업 때문인 줄 알았지.
그러다 받아쓰기 서브 에이전트가 자기 할 일 다 끝내고 보고서 끝에 이런 내용을 추가함 (의역): "보안 관련해서 별개 이슈가 있음: xmrig라는 암호화폐 채굴 프로그램이 이 맥에서 돌아가는 중임. PID 8946이고 /private/tmp/rigupdater에서 시작됐고, 6개 스레드 쓰면서 pool.hashvault.sh로 보내고 있음. 난 건드린 거 없으니까 사용자한테 전달해 줘. 이것 때문에 위스퍼랑 영상 렌더링도 느려지는 거임."
자기 할 일 딱 지키면서, 딴짓 안 하고 바로 보고 올린 거임. 서브 에이전트한테 딱 바라는 모습이지.
클로드가 어떻게 처리했나
내가 조사해보라고 시켰더니 한 세션 만에 다 해냄:
-
채굴기가 숨겨진 LaunchAgent에서 base64로 인코딩된 애플스크립트를 돌리는 걸 찾아냈고, 실행도 안 하고 정적으로 디코딩함: 폴리곤 스마트 컨트랙트에서 C2 서버 주소를 읽어오는 백도어였음.
-
내 zsh 히스토리에서 원인을 찾아냄: 15일 전에 가짜 "사람인지 확인하세요" 페이지에서 복사해서 붙여넣은 명령어였음. 브라우저 히스토리랑 타임스탬프 대조해보니까, 내가 21초 전에 들어갔던 멀쩡한 중소기업 워드프레스 사이트였는데, 거기 아직도 블록체인 로더가 심어져 있더라.
-
파일 접근 시간을 분석해서 뭐가 털렸는지 알아냄: 공격자가 스테이징 폴더 만든 지 9초 뒤에 내 비트워든(Bitwarden) 확장 프로그램 저장소가 읽혔고, 그 뒤 10초 동안 브라우저 비번이랑 쿠키 데이터베이스가 털림.
-
유니파이드 로그 읽어보더니 공격자가
dscl로 내 맥 비번이 맞는지 확인한 것까지 찾아냄. -
내 승인 하에: 백도어 삭제하고, AWS 키 교체하고, 운영 서버 2대 SSH 키도 바꿈 (새 키 테스트 먼저 하고 옛날 키 삭제함).
-
병렬 포렌식 에이전트들을 돌려서 (접근 시간 분석, 노출된 계정, 시스템 로그 확인) 수동적인(passive-only) 위협 인텔리전스 워크플로우를 실행함. C2 컨트랙트 온체인 기록을 다 읽어서 5월부터 서버 39번 바꾼 거랑, 채굴 지갑의 공개 풀 통계까지 다 털어냄: 활성 채굴기 15,554대, 그중 12,860대가 애플 실리콘, 지금까지 약 17,600달러 벌어감.
맘에 들었던 안전장치
-
뭘 삭제하기 전에 꼭 물어봄. 자동 모드에서 복구 불가능한 삭제를 막았을 때, 그냥 우회하는 대신 나한테 명령어를 직접 줌.
-
내가 저장된 브라우저 비번 보여달라고 하니까, 채팅창에 출력하는 대신 비발디(Vivaldi) 자체 비번 뷰어로 안내함.


