From zzizily
Linux 서버 백도어/맬웨어 침해 포렌식 진단. read-only 명령(ps/ss/find/strings/lsof/stat/journalctl)으로 프로세스·네트워크·파일·로그 조사 후 증거 수집·로컬 다운로드·보고서 자동 생성. Use when 백도어 의심 증상 - CPU 급증, 역외 연결, 모르는 계정, /etc 변경, 로그인 실패 급증, libudev.so/gcc.sh 흔적, Mirai. 서버 변경(rm/kill/iptables)은 backdoor-remediation 스킬.
How this skill is triggered — by the user, by Claude, or both
Slash command
/zzizily:backdoor-investigationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Linux 서버 백도어 침해 포렌식 진단. **read-only 명령만 사용**해 서버를 변경하지 않고 조사 → 증거 보존 → 보고서 생성. 대응(제거)은 별도 스킬.
Linux 서버 백도어 침해 포렌식 진단. read-only 명령만 사용해 서버를 변경하지 않고 조사 → 증거 보존 → 보고서 생성. 대응(제거)은 별도 스킬.
/tmp는 임시 수집 단계, 최종 증거는 scp로 로컬(~/forensic/)에 보존.ssh <host>로 직접 실행.backdoor-remediation 스킬에서 승인 후./etc, /bin, /usr/bin), 이상한 파일libudev.so, gcc.sh, /etc/init.d/ 랜덤이름)/zzizily:backdoor-investigation <host>
<host>: ~/.ssh/config Host alias 또는 /etc/hosts 호스트명~/.ssh/config가 SoT. ProxyJump도 거기 정의됨graph TD
A[1. triage 1분 진단] --> B{의심 징후}
B -- 없음 --> F[5. 보고서 생성]
B -- 있음 --> C[2. 심층 진단]
C --> D[3. 증거 수집]
D --> E[4. 로컬 다운로드]
E --> F
F --> G[대응 필요시 remediation 스킬]
ssh <host> 'ps auxf | head -100'
ssh <host> 'ss -tuln; echo ---; ss -tnp | grep ESTAB'
ssh <host> 'who -a; echo ---; last -20; echo ---; lastb -20 2>/dev/null'
ssh <host> 'uptime; echo ---; dmesg | tail'
분석: 의심 프로세스, 역외 ESTAB, 모르는 접속자, 최근 커널 메시지.
# 최근 7일 /etc·/bin 변경
ssh <host> 'find /etc /bin /usr/bin -mtime -7 -type f -ls 2>/dev/null'
# 크론
ssh <host> 'crontab -l 2>/dev/null; echo ---; ls /etc/cron.*; echo ---; cat /etc/crontab'
# 백도어 파일 흔적 - Mirai 전형
ssh <host> 'find / -name "*libudev*" -o -name "gcc.sh" 2>/dev/null'
# 최근 설치된 의심 실행파일 - 백도어 랜덤이름 (예: imzfhjbuof)
ssh <host> 'find /usr/bin /usr/sbin /bin /sbin -mtime -30 -type f -perm /111 -ls 2>/dev/null'
# init.d 백도어 - 최근 추가된 비표준 스크립트 (랜덤이름)
ssh <host> 'find /etc/init.d/ -mtime -30 -type f -ls 2>/dev/null'
ssh <host> 'find /tmp -type f -perm /111 -ls 2>/dev/null'
# 프로세스 실행 파일 경로
ssh <host> 'for p in $(ps -eo pid); do ls -la /proc/$p/exe 2>/dev/null; done'
# 의심 PID 상세 - 열린 파일/소켓
ssh <host> 'lsof -p <PID> 2>/dev/null'
# Mirai 지문 - libudev.so strings (XOR *6F62 / 자동시작 / C2 / nameserver)
ssh <host> 'strings /lib/libudev.so 2>/dev/null | grep -E "POST|GET|Host:|\\*6F62|update-rc|chkconfig|/proc/net/tcp|nameserver" | head'
ssh <host> 'md5sum /lib/libudev.so 2>/dev/null'
# 네트워크 심층 - 사설/CGNAT 대역 제외 역외 필터 (10/172.16-31/192.168/169.254/100.64-127/127)
ssh <host> 'ss -tnp | awk "\$5 !~ /^(10\\.|192\\.168\\.|172\\.(1[6-9]|2[0-9]|3[01])\\.|169\\.254\\.|100\\.(6[4-9]|[7-9][0-9]|1[01][0-9]|12[0-7])\\.|127\\.)/"'
ssh <host> 'ip addr show; ip route show; iptables -L -n -v'
분석: /etc 변경 시간, 크론 악용, libudev.so Mirai 지문, /usr/bin·init.d 랜덤이름 바이너리, 역외 IP.
| 유형 | 특징 | 위치 |
|---|---|---|
| Mirai | libudev.so 위장, C2 통신 | /lib/libudev.so, /usr/bin/[랜덤] |
| cron 백도어 | 크론 주기 실행 | /etc/cron.hourly/gcc.sh |
| init.d 백도어 | 부팅 시 자동 시작 | /etc/init.d/[랜덤이름] |
| SSH 키 | 인증키 몰래 추가 | ~/.ssh/authorized_keys |
| rc.local | 부팅 스크립트 | /etc/rc.local |
원본 로그가 소실된 경우 파일 mtime이 핵심 증거(cluster-06 사고가 mtime 기반으로 재구성됨):
# 의심 파일 정확 생성/수정 시각
ssh <host> 'stat /lib/libudev.so /etc/cron.hourly/gcc.sh 2>/dev/null'
# 최근 변경 전체 타임라인 (시각순)
ssh <host> 'find /etc /usr/bin /lib -mtime -7 -type f -exec stat -c "%y %n" {} \; 2>/dev/null | sort'
# 인증 로그 기반 타임라인
ssh <host> 'grep -E "Accepted|Failed|session opened" /var/log/auth.log 2>/dev/null | tail -50'
PVE 하이퍼바이저 (cluster-06 사고 경로 - PVE Web UI 8006 무차별 대공격 → root@pam 침해):
ssh <host> 'qm list 2>/dev/null'
ssh <host> 'cat /etc/pve/user.cfg 2>/dev/null' # 백도어 계정(root@pam 외 추가) 확인
ssh <host> 'journalctl -b | grep -E "pvedaemon|pveproxy" | grep -iE "auth|login|Failed|successful" | tail -50'
K8s 노드:
ssh <host> 'crictl ps -a 2>/dev/null | head -50'
ssh <host> 'ls /etc/kubernetes/manifests/ 2>/dev/null'
ssh <host> 'systemctl status kubelet 2>/dev/null | head'
ssh <host> 'bash -s' < scripts/collect-evidence.sh
# 원격 /tmp/backdoor-evidence-<host>-<ts>.tar.gz 생성
# 스크립트 출력의 EVIDENCE: <경로> 를 Phase 4에서 사용
스크립트는 read-only 수집만. 원본 미변경.
mkdir -p ~/forensic/<host>-<ts>/
chmod 700 ~/forensic/<host>-<ts>/
# collect-evidence.sh 출력 EVIDENCE: 경로를 정확히 사용 (와일드카드 금지 - 이전 수집물 섞임 방지)
scp <host>:/tmp/backdoor-evidence-<host>-<ts>.tar.gz ~/forensic/<host>-<ts>/
md5sum ~/forensic/<host>-<ts>/*.tar.gz > ~/forensic/<host>-<ts>/md5.txt
수집 결과를 바탕으로 보고서 작성:
/zzizily:backdoor-remediation 안내아래는 전부 backdoor-remediation에서 승인 후 실행:
rm/mv/sed -i (사본만 /tmp)kill/pkill (프로세스 관찰만)iptables/ufw 변경 (조회만)passwd/useradddocs/Mirai/backdoor-investigation-guide.md §1-7docs/Mirai/incident-report-cluster-06-backdoor.mdbackdoor-remediation 스킬npx claudepluginhub deuxksy/ai-agent-skill --plugin deuxksyGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
Dispatches multiple subagents concurrently for independent tasks without shared state. Use when facing 2+ unrelated failures or subsystems that can be investigated in parallel.