시스템 보안 · 취약점 › H. 방어 회피 · 흔적 삭제 징후 · 25/50편 (전체 375/450)
학습 단계: 보안 기능 무력화·은닉
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
커널 루트킷(H24)과 달리 사용자 영역 루트킷(userland rootkit)은 LD_PRELOAD·/etc/ld.so.preload로 공유 라이브러리 함수를 가로채 결과를 조작합니다. readdir·open 등 libc 함수를 후킹해 특정 파일·프로세스를 숨깁니다. 커널 모듈 없이 동작해 적재 흔적이 다릅니다.
사용자 영역 루트킷 은닉
LD_PRELOAD=/tmp/evil.so <명령> (프로세스 단위)
/etc/ld.so.preload에 악성 .so 등록 (전역·영구)
후킹: readdir(파일 숨김)·open·access(접근 조작)
특징: 커널 모듈 없이 libc 함수 가로채기
탐지: ld.so.preload 변경·비정상 LD_PRELOAD·정적 바이너리 교차
핵심은 /etc/ld.so.preload입니다. 이 파일에 악성 .so가 등록되면 모든 동적 링크 프로그램이 영향받습니다. 정적 컴파일 도구(busybox)로 교차하면 은닉이 드러납니다.
| 방식 | 수단 | 범위 |
|---|---|---|
| 프로세스 단위 | LD_PRELOAD=... | 단일 실행 |
| 전역·영구 | /etc/ld.so.preload | 전체 |
| 함수 후킹 | readdir·open | 파일 은닉 |
| 교차 탐지 | 정적 바이너리 | 우회 확인 |
| 정상 | 디버깅 라이브러리 | 정상 |
# 사용자 영역 루트킷 탐지 (분석 방법)
# ld.so.preload 존재·변경(핵심 신호)
ls -la /etc/ld.so.preload 2>/dev/null && cat /etc/ld.so.preload 2>/dev/null
sudo ausearch -k log_tamper,proc_exec -i --start recent 2>/dev/null | grep -E 'ld.so.preload|LD_PRELOAD' | tail
# 동적 vs 정적 도구 결과 교차(은닉 확인)
ls /tmp | wc -l; busybox ls /tmp 2>/dev/null | wc -l # 불일치면 후킹 의심
$ (ld.so.preload) 없음(정상 — 대부분 미사용)
$ (동적 vs 정적) 일치
/etc/ld.so.preload가 없거나 정상 라이브러리만 등록되고, 동적·정적 도구 결과가 일치하는 상태가 정상입니다.
$ (ld.so.preload)
/etc/ld.so.preload: /tmp/.libhide.so (악성 .so 등록)
$ (동적 vs 정적)
ls /tmp → 8개 / busybox ls /tmp → 10개
→ 동적 ls가 2개 파일 숨김(readdir 후킹)
사용자 영역 루트킷 분석입니다(가상의 예시).
[공격자] /tmp/.libhide.so (readdir 후킹 라이브러리)
echo /tmp/.libhide.so > /etc/ld.so.preload (전역 등록)
↓ (후킹 효과)
동적 링크 프로그램(ls·ps)이 .libhide.so를 먼저 로드
→ readdir에서 악성 파일·프로세스 제거
↕ (교차 탐지)
[분석가]
· /etc/ld.so.preload 내용 확인(비정상 .so)
· busybox(정적) ls vs 동적 ls 불일치
↓
= preload 등록·도구 불일치로 은닉 발각 → 정탐
| 관찰 | 해석 |
|---|---|
| ld.so.preload | 전역 후킹 등록 |
| 동적 vs 정적 | 은닉 확인 |
| readdir 후킹 | 파일 숨김 |
ld.so.preload 점검 + 정적 교차가 사용자 영역 루트킷 탐지의 핵심입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_h,defense_evasion,">
<rule id="107240" level="14">
<if_sid>107000</if_sid>
<field name="audit.file" type="pcre2">/etc/ld\.so\.preload</field>
<description>ld.so.preload 변조(사용자 영역 루트킷 은닉)</description>
<mitre><id>T1574.006</id><id>T1014</id></mitre>
</rule>
</group>
/etc/ld.so.preload를 FIM 핵심 감시 대상에 포함합니다. 비정상 LD_PRELOAD 실행과 동적·정적 도구 교차 점검을 병행합니다.
| 방식 | 수단 |
|---|---|
| 프로세스 단위 | LD_PRELOAD=... |
| 전역·영구 | /etc/ld.so.preload |
| 함수 후킹 | readdir·open |
| 교차 탐지 | 정적 바이너리 |
| 면접 포인트 | "사용자 영역 루트킷은 ld.so.preload — 정적 바이너리 교차로 후킹 우회 탐지" |
다음 편 376. 방어 회피·흔적 삭제 — 프로세스·파일 은닉 탐지 에서는 프로세스·파일 은닉을 다루는 프로세스·파일 은닉 탐지를 다룹니다.
이전 편: 374. 방어 회피·흔적 삭제 — 커널 모듈·루트킷 기반 은닉 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점