시스템 보안 · 취약점 › F. 비정상 프로세스 · 지속성 징후 · 27/50편 (전체 277/450)
학습 단계: 지속성(persistence) 메커니즘
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
가장 깊은 지속성은 커널 수준(LKM rootkit)입니다. 커널 모듈은 운영체제 핵심에서 동작해 프로세스·파일·네트워크·로그를 은닉하고, 사용자 수준 탐지를 모두 우회합니다. 탐지·제거가 가장 어렵습니다.
커널 모듈 rootkit 지속성
악성 LKM 로드: insmod/modprobe로 커널 모듈 삽입
→ 시스템 콜 후킹, 프로세스·파일·포트 은닉
자동 로드: /etc/modules, modules-load.d (부팅 로드)
은닉: lsmod에서 자신을 숨김
커널 수준 백도어: 특정 신호로 활성화
특징: 사용자 수준 탐지 우회, 가장 깊고 제거 어려움
커널 rootkit은 ls·ps·netstat 등 사용자 도구의 결과를 커널 수준에서 조작하므로, 사용자 수준 탐지를 신뢰할 수 없게 만듭니다.
| rootkit 요소 | 메커니즘 | 위험 |
|---|---|---|
| 악성 LKM | insmod/modprobe | 매우 높음 |
| 자동 로드 | modules-load.d | 높음 |
| 시스템 콜 후킹 | 은닉·조작 | 매우 높음 |
| lsmod 자기 은닉 | 탐지 회피 | 매우 높음 |
| 정상 모듈 | 정상 | 정상 |
# 커널 모듈 rootkit 지속성 탐지 (분석 방법)
# 모듈 로드 이벤트(init_module/finit_module 감사)
sudo ausearch -k persist -i --start recent 2>/dev/null | grep -E 'init_module|insmod|modprobe' | tail
# 자동 로드 설정 변경
sudo grep -rE '.' /etc/modules /etc/modules-load.d/ 2>/dev/null | grep -vE '^#'
# 로드된 모듈 vs 기준선(은닉 모듈은 불일치·흔적으로 탐지)
diff /root/baseline/lsmod.txt <(lsmod | sort) 2>/dev/null
$ (모듈 로드) (없음 또는 정상 드라이버)
$ (자동 로드) 정상 모듈만
$ (lsmod diff) (차이 없음)
커널 모듈 로드가 정상 드라이버뿐이고, 자동 로드 설정·모듈 목록이 기준선과 일치하는 상태가 정상입니다.
$ (모듈 로드)
04:15 comm="insmod" proctitle="insmod /tmp/.ko" (비표준 경로 모듈)
$ (자동 로드)
/etc/modules-load.d/x.conf: hidekit
$ (lsmod diff) (dmesg에 모듈 로드 흔적 있으나 lsmod엔 없음 = 자기 은닉)
커널 모듈 rootkit 분석입니다(가상의 예시).
[로드] insmod /tmp/.ko (init_module 감사)
↓
[후킹] 시스템 콜 테이블 조작
├ 프로세스 은닉(ps에서 숨김)
├ 파일 은닉(ls에서 숨김)
├ 포트 은닉(netstat에서 숨김)
└ 자기 은닉(lsmod에서 숨김)
↓
[지속] modules-load.d 등록 → 부팅 시 재로드
= 커널 수준 은닉, 사용자 도구 신뢰 불가
| 요소 | 해석 |
|---|---|
| .ko 로드 | 커널 침투 |
| 콜 후킹 | 전방위 은닉 |
| 자기 은닉 | 탐지 회피 |
| 자동 로드 | 부팅 지속 |
로드 시점(init_module 감사)·dmesg 흔적이 사용자 수준 은닉을 우회한 탐지 단서입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,persistence,">
<rule id="105260" level="14">
<if_sid>105000</if_sid>
<field name="audit.syscall" type="pcre2">^(init_module|finit_module)$</field>
<description>커널 모듈 로드(LKM rootkit 지속성 가능성)</description>
<mitre><id>T1547.006</id><id>T1014</id></mitre>
</rule>
</group>
모듈 로드(init_module) 감사가 로드 시점 탐지의 핵심입니다. 정상 드라이버는 경로·서명으로 구분하고, rootkit 의심 시 재설치를 검토합니다.
| rootkit 요소 | 메커니즘 |
|---|---|
| 악성 LKM | insmod/modprobe |
| 자동 로드 | modules-load.d |
| 시스템 콜 후킹 | 은닉·조작 |
| lsmod 자기 은닉 | 탐지 회피 |
| 면접 포인트 | "커널 rootkit은 가장 깊은 지속성 — 사용자 도구 신뢰 불가, 로드 시점 감사로 탐지" |
다음 편 278. 프로세스·지속성 — 지속성 메커니즘 종합 분석 에서는 지속성 메커니즘 3단계를 마무리하는 지속성 메커니즘 종합 분석을 다룹니다.
이전 편: 276. 프로세스·지속성 — PAM·인증 모듈 지속성 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점