시스템 보안 · 취약점 › H. 방어 회피 · 흔적 삭제 징후 · 26/50편 (전체 376/450)
학습 단계: 보안 기능 무력화·은닉
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
루트킷(H24·H25) 외에도 공격자는 여러 기법으로 프로세스·파일을 숨깁니다. 숨김 이름·비정상 위치·마운트 은폐·메모리 전용 실행 등이며, 각각 다른 교차 점검으로 드러납니다.
프로세스·파일 은닉 기법
숨김 파일: .으로 시작, 공백·특수문자 이름
비정상 위치: /dev/shm·/tmp·/var/tmp 실행 파일
마운트 은폐: 디렉터리 위에 마운트로 가리기
메모리 전용: memfd_create·fileless 실행(디스크 없음)
프로세스 위장: 커널 스레드명[...] 흉내
탐지: /proc 교차·숨김 실행 파일·마운트 비교·deleted 바이너리
핵심은 "정상 위치·형태가 아닌 프로세스·파일"입니다. /proc의 실제 상태와 디렉터리 리스팅을 교차하면 은닉이 드러납니다.
| 은닉 | 방식 | 탐지 |
|---|---|---|
| 숨김 이름 | .·특수문자 | find 숨김 파일 |
| 비정상 위치 | /dev/shm 실행 | 실행 파일 스캔 |
| 마운트 은폐 | overmount | 마운트 비교 |
| 메모리 전용 | memfd·fileless | /proc exe deleted |
| 프로세스 위장 | [kthread] 흉내 | 계보·exe 확인 |
# 프로세스·파일 은닉 탐지 (분석 방법)
# 비정상 위치 실행 파일(메모리·임시)
sudo ls -la /proc/*/exe 2>/dev/null | grep -E '/tmp/|/dev/shm/|memfd:|\(deleted\)' | head
# 숨김 실행 파일
sudo find /tmp /dev/shm /var/tmp -name '.*' -type f -perm -u+x 2>/dev/null | head
# 커널 스레드 위장(exe 있는 [대괄호] 프로세스)
for p in /proc/[0-9]*; do n=$(cat $p/comm 2>/dev/null); e=$(readlink $p/exe 2>/dev/null); [ -n "$e" ] && echo "$n" | grep -q '^\[' && echo "$p $n $e"; done 2>/dev/null | head
$ (비정상 위치 exe) (없음)
$ (숨김 실행 파일) (없음)
$ (스레드 위장) (없음 — 진짜 커널 스레드는 exe 없음)
프로세스 exe가 정상 경로이고, 비정상 위치·숨김 실행 파일·스레드 위장이 없는 상태가 정상입니다.
$ (비정상 위치 exe)
/proc/6666/exe -> /dev/shm/.x (memfd/임시 실행)
/proc/7777/exe -> /tmp/.payload (deleted) (삭제 후 메모리 실행)
$ (스레드 위장)
PID 8888 comm="[kworker/0:2]" exe=/tmp/.k (커널 스레드 위장)
프로세스·파일 은닉 분석입니다(가상의 예시).
[공격자 은닉 기법]
① /dev/shm/.x 실행 → 메모리 전용(디스크 흔적 적음)
② 실행 후 파일 삭제 → exe (deleted)
③ comm을 [kworker]로 위장 → ps에서 정상처럼
↕ (교차 탐지)
[분석가]
/proc/PID/exe → /dev/shm·memfd·(deleted) 확인
[대괄호] 이름인데 exe 존재 → 위장 발각
숨김 실행 파일 find
↓
= /proc 실제 상태 교차로 은닉 발각 → 정탐
| 은닉 | /proc 단서 |
|---|---|
| 메모리 실행 | exe memfd |
| 삭제 후 실행 | exe (deleted) |
| 스레드 위장 | [이름]+exe |
/proc/PID/exe 교차가 프로세스·파일 은닉 탐지의 핵심입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_h,defense_evasion,">
<rule id="107250" level="13">
<if_sid>107000</if_sid>
<field name="audit.exe" type="pcre2">/dev/shm/|memfd:|/tmp/\.|\(deleted\)</field>
<description>비정상 위치·메모리 전용·삭제 후 실행(프로세스·파일 은닉)</description>
<mitre><id>T1564</id><id>T1620</id></mitre>
</rule>
</group>
/proc/PID/exe를 주기 스캔해 memfd·(deleted)·비정상 위치 실행을 탐지합니다. 커널 스레드명 위장은 exe 유무로 구분합니다.
| 은닉 | 방식 |
|---|---|
| 숨김 이름 | .·특수문자 |
| 비정상 위치 | /dev/shm 실행 |
| 메모리 전용 | memfd·fileless |
| 프로세스 위장 | [kthread] 흉내 |
| 면접 포인트 | "fileless는 디스크에 없음 — /proc/PID/exe의 memfd·(deleted)로 포착" |
다음 편 377. 방어 회피·흔적 삭제 — 네트워크 연결 은닉 탐지 에서는 네트워크 연결 은닉을 다루는 네트워크 연결 은닉 탐지를 다룹니다.
이전 편: 375. 방어 회피·흔적 삭제 — LD_PRELOAD·syscall 후킹 은닉 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점