277. 프로세스·지속성 — 커널 모듈·rootkit 지속성 탐지

changseop lee·2026년 10월 7일

시스템 보안 · 취약점

목록 보기
277/450

시스템 보안 · 취약점 › F. 비정상 프로세스 · 지속성 징후 · 27/50편 (전체 277/450)
학습 단계: 지속성(persistence) 메커니즘
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

가장 깊은 지속성은 커널 수준(LKM rootkit)입니다. 커널 모듈은 운영체제 핵심에서 동작해 프로세스·파일·네트워크·로그를 은닉하고, 사용자 수준 탐지를 모두 우회합니다. 탐지·제거가 가장 어렵습니다.

커널 모듈 rootkit 지속성
 악성 LKM 로드: insmod/modprobe로 커널 모듈 삽입
   → 시스템 콜 후킹, 프로세스·파일·포트 은닉
 자동 로드: /etc/modules, modules-load.d (부팅 로드)
 은닉: lsmod에서 자신을 숨김
 커널 수준 백도어: 특정 신호로 활성화

특징: 사용자 수준 탐지 우회, 가장 깊고 제거 어려움

커널 rootkit은 ls·ps·netstat 등 사용자 도구의 결과를 커널 수준에서 조작하므로, 사용자 수준 탐지를 신뢰할 수 없게 만듭니다.

2. 왜 중요한가

  • 커널 rootkit은 커널 수준에서 은닉해 사용자 수준 탐지를 모두 우회합니다.
  • 프로세스·파일·포트·로그를 은닉해 공격 흔적을 커널에서 지웁니다.
  • 가장 깊은 지속성이라 탐지·제거가 어려워, 재설치가 권장되기도 합니다.

3. 핵심 명령어 / 설정

rootkit 요소메커니즘위험
악성 LKMinsmod/modprobe매우 높음
자동 로드modules-load.d높음
시스템 콜 후킹은닉·조작매우 높음
lsmod 자기 은닉탐지 회피매우 높음
정상 모듈정상정상

4. 실습 (실습 예시)

# 커널 모듈 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

5. 정상 상태

$ (모듈 로드) (없음 또는 정상 드라이버)
$ (자동 로드) 정상 모듈만
$ (lsmod diff) (차이 없음)

커널 모듈 로드가 정상 드라이버뿐이고, 자동 로드 설정·모듈 목록이 기준선과 일치하는 상태가 정상입니다.

6. 이상 상태

$ (모듈 로드)
04:15 comm="insmod" proctitle="insmod /tmp/.ko" (비표준 경로 모듈)
$ (자동 로드)
/etc/modules-load.d/x.conf: hidekit
$ (lsmod diff) (dmesg에 모듈 로드 흔적 있으나 lsmod엔 없음 = 자기 은닉)
  • /tmp의 커널 모듈(.ko) 로드 → 비표준 경로 악성 LKM
  • modules-load.d에 자동 로드 등록 → 부팅 시 rootkit 로드(지속성)
  • dmesg엔 로드 흔적, lsmod엔 없음 → 자기 은닉 rootkit → 정탐(최고 위험)

7. 로그 분석 (분석 방법)

커널 모듈 rootkit 분석입니다(가상의 예시).

[로드] insmod /tmp/.ko (init_module 감사)
   ↓
[후킹] 시스템 콜 테이블 조작
   ├ 프로세스 은닉(ps에서 숨김)
   ├ 파일 은닉(ls에서 숨김)
   ├ 포트 은닉(netstat에서 숨김)
   └ 자기 은닉(lsmod에서 숨김)
   ↓
[지속] modules-load.d 등록 → 부팅 시 재로드
 = 커널 수준 은닉, 사용자 도구 신뢰 불가
요소해석
.ko 로드커널 침투
콜 후킹전방위 은닉
자기 은닉탐지 회피
자동 로드부팅 지속

로드 시점(init_module 감사)·dmesg 흔적이 사용자 수준 은닉을 우회한 탐지 단서입니다.

8. SOC 관제 포인트

  • 커널 모듈 rootkit은 커널 수준에서 은닉해 사용자 수준 탐지를 모두 우회하는 가장 깊은 지속성입니다.
  • 프로세스·파일·포트·자신을 은닉하고, modules-load.d로 부팅 지속성을 확보합니다.
  • 모듈 로드 시점(init_module 감사)·dmesg 흔적·기준선 이탈로 탐지합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 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 의심 시 재설치를 검토합니다.

10. 대응 방법

  1. 초기 확인 — 로드된 커널 모듈·경로·서명·자동 로드 설정을 확인합니다.
  2. 범위 확인 — 비표준 경로 모듈·자기 은닉(dmesg vs lsmod)·시스템 콜 후킹을 확인합니다.
  3. 증거 확보 — 모듈 로드 이벤트·dmesg·기준선을 보존합니다.
  4. 차단/조치 — 커널 rootkit 정탐이면 모듈 언로드 시도·자동 로드 제거·시스템 재설치를 검토합니다.
  5. 재발 방지 — 모듈 로드 시점 감사 기반 rootkit 탐지를 운영합니다.

11. 핵심 정리

rootkit 요소메커니즘
악성 LKMinsmod/modprobe
자동 로드modules-load.d
시스템 콜 후킹은닉·조작
lsmod 자기 은닉탐지 회피
면접 포인트"커널 rootkit은 가장 깊은 지속성 — 사용자 도구 신뢰 불가, 로드 시점 감사로 탐지"

12. 다음 편 예고

다음 편 278. 프로세스·지속성 — 지속성 메커니즘 종합 분석 에서는 지속성 메커니즘 3단계를 마무리하는 지속성 메커니즘 종합 분석을 다룹니다.


이전 편: 276. 프로세스·지속성 — PAM·인증 모듈 지속성 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글