시스템 보안 · 취약점 › F. 비정상 프로세스 · 지속성 징후 · 34/50편 (전체 284/450)
학습 단계: 백도어·C2·은닉 징후
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
rootkit(F24 라이브러리·F27 커널)은 ps·ls·netstat 등 사용자 도구의 출력을 조작해 악성 프로세스·파일·포트를 숨깁니다. 조작된 도구를 믿을 수 없으므로, 교차 검증(cross-view)으로 숨은 요소를 찾아냅니다.
rootkit 은닉과 교차 검증(cross-view)
은닉: ps에서 프로세스 숨김, ls에서 파일 숨김, netstat에서 포트 숨김
교차 검증 원리:
ps 목록 vs /proc 직접 조회 → 불일치 = 숨은 프로세스
ls 목록 vs 직접 접근/inode → 불일치 = 숨은 파일
netstat vs /proc/net 직접 → 불일치 = 숨은 포트
핵심: 조작 가능한 도구 vs 저수준 소스 비교
rootkit이 상위 도구를 조작해도 저수준 소스(/proc·inode)까지 완벽히 숨기기는 어렵습니다. 두 관점의 불일치가 은닉의 증거입니다.
| 은닉 대상 | 교차 검증 | 불일치 의미 |
|---|---|---|
| 프로세스 | ps vs /proc | 숨은 프로세스 |
| 파일 | ls vs inode/직접 | 숨은 파일 |
| 포트 | netstat vs /proc/net | 숨은 포트 |
| 모듈 | lsmod vs /sys | 숨은 모듈 |
| PID | ps vs /proc/[0-9]* | 숨은 PID |
# rootkit 은닉 교차 검증 (분석 방법)
# 프로세스 교차 검증: ps vs /proc
diff <(ps -eo pid --no-headers | tr -d ' ' | sort -n) <(ls /proc/ | grep -E '^[0-9]+$' | sort -n)
# 포트 교차 검증: ss vs /proc/net
# 숨은 포트는 ss에 없지만 /proc/net/tcp에 있을 수 있음
# rootkit 점검 도구(설치 시)
sudo rkhunter --check --sk 2>/dev/null | grep -i warning | tail
$ (ps vs /proc) (차이 없음)
$ (rkhunter) (경고 없음)
ps와 /proc의 프로세스 목록이 일치하고, rootkit 점검 도구에 경고가 없는 상태가 정상입니다.
$ (ps vs /proc)
> 3002 (/proc엔 있으나 ps엔 없음 = 숨은 프로세스)
$ (rkhunter)
Warning: Hidden process / Suspicious file properties
rootkit 교차 검증 분석입니다(가상의 예시).
[조작된 뷰] ps → 3001, 3003 (3002 숨김)
vs
[저수준 뷰] /proc/ → 3001, 3002, 3003
↓ (비교)
[불일치] 3002가 /proc엔 있고 ps엔 없음
↓
[결론] rootkit이 3002를 은닉 → 숨은 악성 프로세스 발견
[확정] /proc/3002/exe·cmdline으로 정체 분석
| 뷰 | 3002 |
|---|---|
| ps(조작) | 안 보임 |
| /proc(저수준) | 있음 |
| 불일치 | 은닉 증거 |
교차 검증 불일치가 rootkit이 숨긴 요소를 드러냅니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,rootkit,">
<!-- 교차 검증 결과(숨은 프로세스·rootkit 경고)를 로그로 수집 -->
<rule id="105330" level="14">
<decoded_as>json</decoded_as>
<field name="check" type="pcre2">hidden_process|rootkit</field>
<field name="status">found</field>
<description>rootkit 은닉 탐지(교차 검증·숨은 프로세스/파일)</description>
<mitre><id>T1014</id></mitre>
</rule>
</group>
교차 검증·rkhunter/chkrootkit 결과를 로그로 수집·경보합니다. rootkit 확정 시 오프라인 분석·재설치를 검토합니다.
| 은닉 대상 | 교차 검증 |
|---|---|
| 프로세스 | ps vs /proc |
| 파일 | ls vs inode |
| 포트 | netstat vs /proc/net |
| 모듈 | lsmod vs /sys |
| 면접 포인트 | "rootkit은 도구 출력 조작 — 도구 vs 저수준 소스 불일치(cross-view)로 탐지" |
다음 편 285. 프로세스·지속성 — 로그·흔적 삭제(anti-forensic) 탐지 에서는 로그·흔적 삭제를 다루는 로그·흔적 삭제(anti-forensic) 탐지를 다룹니다.
이전 편: 283. 프로세스·지속성 — 프로세스 인젝션·후킹 징후 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점