
백도어가 삽입된 Claude Code 2.1.313 확장(Cursor 마켓플레이스, 2026년 10월)을 위한 읽기 전용 스캐너: SSH 키, 지속성, 리버스 터널. macOS + Linux.
트로이 목마화된 [email protected] 확장 프로그램을 위한 읽기 전용 스캐너 및 탐지 규칙입니다.
[!WARNING] Cursor 마켓플레이스는 2026-10-29, 09:27–20:35 UTC에 Anthropic이 게시하지 않은 빌드를 제공했습니다. 이 빌드는 SSH 키와 지속성(persistence)을 심은 뒤
134.209.82[.]225로 리버스 터널을 엽니다. 2.1.314로 업데이트하면 확장 프로그램은 제거되지만, 그것이 심어놓은 것은 제거되지 않습니다.
HappyHackingSpace가 만든 독립 커뮤니티 도구입니다. Anthropic 또는 Cursor와 제휴 관계가 없습니다.
목차: 빠른 시작 · 검사 항목 · 탐지 규칙 · 탐지 결과가 나온 경우 · C2 차단 · IOC · 참고 자료
git clone https://github.com/happyhackingspace/claude-code-backdoor-check.git
cd claude-code-backdoor-check
bash check.sh # fast scan
bash check.sh --deep # + sshd log analysis (slower on macOS)
0 정상 · 1 지표 발견 · 2 사용법 오류.| 출력 | 종료 | 의미 |
|---|---|---|
✖ COMPROMISED | 1 | 활성 아티팩트 발견: 키, 드롭된 파일, 지속성, 터널, C2 호스트 키 또는 악성 빌드 |
! EXPOSED | 1 | 2.1.313이 어느 시점에 설치되었으나 활성 상태인 것은 발견되지 않음 |
✔ CLEAN | 0 | 지표 없음 |
| # | 영역 | 탐지 대상 |
|---|---|---|
| 1 | 확장 | Cursor / VS Code / Windsurf / VSCodium 디렉터리의 2.1.313, 악성 extension.js 해시, 로더 문자열 |
| 2 | 설치 이력 | extensions.json, .obsolete, VSIX 캐시, 편집기 로그의 2.1.313 |
| 3 | SSH 키 | authorized_keys의 svc-telemetry 키 |
| 4 | 드롭된 파일 | ~/.config/.smt, .smtk, .stk_* 임시 파일 |
| 5 | 지속성 | macOS: LaunchAgents/Daemons · Linux: cron, systemd, autostart · 공통: 셸 rc 파일 |
| 6 | 프로세스 | 리버스 터널(ssh -R *:0:localhost:22 tunnel@…) 및 .smt 실행기 |
| 7 | 네트워크 | 활성 C2 연결; known_hosts의 C2 |
| 8 | SSH 서버 | :22 리스너; --deep 사용 시 공격자 키 또는 127.0.0.1을 통한 sshd 로그인 |
| 9 | 노출 | 교체해야 할 자격 증명 환경 변수 이름 및 자격 증명 파일(값은 절대 읽지 않음) |
[!NOTE]
com.apple.sysmond는 실제 Apple 시스템 데몬이기도 합니다. 사용자 도메인(~/Library/LaunchAgents)에 있는 사본만 악성입니다.
EDR/SIEM 파이프라인 및 전사적 헌팅용입니다. 이 README의 나머지 부분과 달리, 규칙 파일은 C2와 일치해야 하므로 C2를 디펑(defang)하지 않은 상태로 포함합니다.
rules/sigma/)| 규칙 | 로그 소스 | 수준 |
|---|---|---|
| C2로의 리버스 SSH 터널 | process_creation | critical |
| C2 연결 | network_connection | critical |
| 드롭된 터널 스크립트 / 키 | file_event | high |
위조 com.apple.sysmond LaunchAgent | file_event · macOS | high |
| 편집기 프로세스 트리에서 활성화된 원격 로그인 | process_creation · macOS | high |
@reboot cron / .smt 실행 | process_creation · Linux | high |
SysMon 예약 작업 / 편집기에서의 OpenSSH 설치 | process_creation · Windows | high |
pip install sigma-cli
sigma plugin install splunk # or elasticsearch, microsoft365defender, …
sigma convert -t splunk --without-pipeline rules/sigma/
rules/yara/claude_code_backdoor.yar)| 규칙 | 일치 항목 |
|---|---|
HHS_ClaudeCode_Backdoor_Loader | 트로이 목마화된 extension.js (해시 또는 로더 문자열) |
HHS_ClaudeCode_Backdoor_TunnelScript | 드롭된 .smt / smt.cmd |
HHS_ClaudeCode_Backdoor_Persistence | 스크립트를 가리키는 LaunchAgent, @reboot cron, SysMon 작업 |
HHS_ClaudeCode_Backdoor_AuthorizedKey | svc-telemetry 키가 포함된 authorized_keys |
yara -r -s rules/yara/claude_code_backdoor.yar \
~/.cursor/extensions ~/.vscode/extensions ~/.config ~/.ssh ~/Library/LaunchAgents
[!TIP] Sigma 규칙은 Windows(예약 작업, OpenSSH 설치)도 다루지만,
check.sh는 이를 다루지 않습니다.
[!CAUTION] 이 지속성 메커니즘은 약 60초마다 터널을 다시 엽니다. 먼저 격리한 후 정리하십시오. Cursor는 공식 수정 스크립트도 제공합니다: 보안 공지를 참조하십시오.
1. 격리. 머신을 오프라인으로 전환하거나 C2를 차단하십시오.
2. 증거 보존. 삭제하기 전에 증거를 보존하십시오:
mkdir -p ~/ioc-evidence && cd ~/ioc-evidence
bash /path/to/check.sh --deep --no-color > scan.txt
cp -p ~/.ssh/authorized_keys ~/.ssh/known_hosts ~/.config/.smt ~/.config/.smtk . 2>/dev/null
[!IMPORTANT]
.smtk는 공격자의 개인 터널 키입니다. 증거 폴더를 비공개로 유지하세요.
3. 정리합니다. 지속성을 제거하고, 터널을 종료하고, 아티팩트를 삭제합니다:
C2="$(echo '134.209.82[.]225' | tr -d '[]')"
launchctl bootout gui/$(id -u)/com.apple.sysmond
rm -f ~/Library/LaunchAgents/com.apple.sysmond.plist
pkill -f "tunnel@$C2"; pkill -f 'autossh -M 0'; pkill -f '\.config/\.smt'
sed -i.bak '/svc-telemetry/d' ~/.ssh/authorized_keys
ssh-keygen -R "$C2"
rm -f ~/.config/.smt ~/.config/.smtk "$TMPDIR"/.stk_*
sudo systemsetup -setremotelogin off # if you don't use SSH
crontab -l | grep -vE '\.config/\.smt|tunnel@' | crontab -
# disable and remove any systemd/autostart entries check.sh reported
pkill -f "tunnel@$C2"; pkill -f 'autossh -M 0'; pkill -f '\.config/\.smt'
sed -i.bak '/svc-telemetry/d' ~/.ssh/authorized_keys
ssh-keygen -R "$C2"
rm -f ~/.config/.smt ~/.config/.smtk /tmp/.stk_* /var/tmp/.stk_*
sudo systemctl disable --now ssh # if you don't use SSH
4. 확장 프로그램을 교체하세요. anthropic.claude-code-2.1.313*을 제거하고 2.1.314 이상을 설치하세요.
5. 검증하세요. bash check.sh --deep가 0을 반환해야 합니다.
6. 다른 깨끗한 머신에서 자격 증명을 교체하세요. SSH 키, git 토큰, 클라우드 및 API 키, 레지스트리 토큰을 교체하세요. [9/9] 아래의 목록부터 시작하세요.
7. C2가 known_hosts에 있거나 sshd가 공격자 키를 수락한 경우 머신을 재구축하세요.
--deep으로 실행하세요. 이름이 비컨으로 전송되었으므로 최소한 [9/9] 아래에 나열된 비밀 정보를 교체하세요. C2는 계속 차단된 상태로 유지하세요.
임플란트는 IP에 직접 연결하므로 DNS 필터(NextDNS, Pi-hole)는 이를 감지하지 못합니다. 방화벽에서 차단하세요:
| 도구 | 명령 |
|---|---|
| LuLu | Rules → Add Rule → process *, address 134.209.82[.]225 (대괄호 제외), port *, Block |
| pf | echo "block drop out quick to $C2" | sudo tee -a /etc/pf.conf && sudo pfctl -f /etc/pf.conf -e |
| iptables | sudo iptables -I OUTPUT -d "$C2" -j DROP (Docker 호스트에서는 DOCKER-USER도 해당) |
| nftables | sudo nft add rule inet filter output ip daddr "$C2" drop |
| 유형 | 값 |
|---|---|
| 패키지 | [email protected] (darwin-arm64, win32-x64) |
| C2 | 134.209.82[.]225: tcp/22 역방향 SSH, tcp/8099 hxxp://…/beacon |
| SSH 키 | 주석 svc-telemetry |
| 키 지문 | SHA256:0Z6R+DF64Do2nwQic8a7kkfDLNNk4IiK+2U2Rci4htk |
extension.js SHA-256 | ecb58cb29078d9646ad1dcdbe51526f2d9cfea06be5fb2ab183e8ecc3ab6bf15 |
| 파일 | ~/.config/.smt, ~/.config/.smtk, $TMPDIR/.stk_<hex> |
| 지속성 · macOS | ~/Library/LaunchAgents/com.apple.sysmond.plist |
| 지속성 · Linux | @reboot crontab 항목 |
| 지속성 · Windows | 예약 작업 SysMon, 시작 프로그램 sysmon.cmd, %USERPROFILE%\.config\smt.cmd |
| 프로세스 | ssh -N -R '*:0:localhost:22' tunnel@…, autossh -M 0 |
| 정찰 서비스 | api.ipify[.]org, ifconfig[.]me |
check.sh는 Windows를 지원하지 않습니다. Sigma 규칙이나 Cursor의 remediate-windows.ps1을 사용하세요.known_hosts가 비어 있다고 해서 터널이 연결된 적이 없다는 증거는 아닙니다.© 2026 HappyHackingSpace