379. 방어 회피·흔적 삭제 — 정상 프로세스 위장(masquerading) 탐지

changseop lee·5일 전

시스템 보안 · 취약점

목록 보기
379/450

시스템 보안 · 취약점 › H. 방어 회피 · 흔적 삭제 징후 · 29/50편 (전체 379/450)
학습 단계: 위장·난독화·흔적 분석
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

4단계는 위장·난독화를 다룹니다. 첫 번째는 정상 프로세스 위장(masquerading)입니다. 공격자는 악성 프로세스에 sshd·cron·[kworker] 같은 정상 이름을 붙여, ps 목록에서 정상처럼 보이게 합니다. ATT&CK T1036에 해당합니다.

정상 프로세스 위장(masquerading)
 프로세스명 위장: argv[0]을 "sshd"로 설정(실제는 악성)
 커널 스레드 위장: [kworker/0:1] 등 대괄호 이름
 정상 경로 위장: /usr/sbin/sshd 흉내(실제는 /tmp)
 특징: 이름은 정상 — exe 경로·계보·부모가 비정상

탐지: 이름 vs exe 경로 불일치, 비정상 부모·위치

핵심은 "이름은 정상인데 실체가 다른 것"입니다. comm/argv는 위장해도 exe 경로·부모 프로세스·실행 위치는 비정상이므로 교차하면 드러납니다.

2. 왜 중요한가

  • 프로세스 위장은 ps 목록에서 악성 프로세스를 정상처럼 보이게 해 분석가를 속입니다.
  • 이름(comm·argv)은 위조해도 exe 경로·부모·실행 위치는 실체를 드러냅니다.
  • 커널 스레드명[...] 위장은 exe 유무로 진짜 커널 스레드와 구분됩니다.

3. 핵심 명령어 / 설정

위장방식실체 단서
이름 위장argv[0]=sshdexe 경로
커널 스레드[kworker] 흉내exe 존재
경로 위장/usr/sbin 흉내실제 /tmp
부모 위장정상 부모인 척계보 불일치
정상진짜 sshd일치

4. 실습 (실습 예시)

# 정상 프로세스 위장 탐지 (분석 방법)
# comm(이름) vs exe(경로) 불일치
for p in /proc/[0-9]*; do n=$(cat $p/comm 2>/dev/null); e=$(readlink $p/exe 2>/dev/null); case "$n" in sshd|cron|crond|systemd) echo "$n -> $e" | grep -vE '/usr/sbin|/usr/lib|/lib/systemd' && echo "의심: $p $n $e";; esac; done 2>/dev/null | head
# 정상 이름인데 비정상 위치 실행
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -E 'exe="/tmp/.*(sshd|cron|systemd)"' | tail

5. 정상 상태

$ (이름 vs 경로) sshd -> /usr/sbin/sshd (일치, 정상)
$ (비정상 위치) (없음)

정상 이름 프로세스의 exe 경로가 정상 위치와 일치하고, 정상 이름을 쓴 비정상 위치 실행이 없는 상태가 정상입니다.

6. 이상 상태

$ (이름 vs 경로)
comm="sshd" exe="/tmp/.x" (이름은 sshd, 실체는 /tmp 악성)
comm="[kworker/0:3]" exe="/dev/shm/.k" (커널 스레드 위장)
$ (부모 불일치)
"cron" 프로세스의 부모가 /tmp/.loader (정상 cron 아님)
  • comm=sshd인데 exe=/tmp/.x → 이름 위장(실체 악성)
  • [kworker] 이름인데 exe 존재 → 커널 스레드 위장(진짜는 exe 없음)
  • 이름 정상 vs exe·부모·위치 비정상 → masquerading → 정탐

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

정상 프로세스 위장 분석입니다(가상의 예시).

[공격자] /tmp/.x 악성 실행
   argv[0]="sshd" 설정 (ps에서 sshd로 보임)
      ↕ (교차 탐지)
[분석가]
 ps: sshd (정상처럼 보임)
 /proc/PID/exe → /tmp/.x (실체 노출)
 부모: /tmp/.loader (정상 sshd 부모 아님)
 위치: /tmp (정상 /usr/sbin 아님)
   ↓
= 이름은 속여도 exe·부모·위치가 실체 → 정탐
관점위장실체
comm/argvsshd위조됨
exe/usr/sbin/sshd 흉내/tmp/.x
부모정상인 척/tmp/.loader

이름과 exe·부모·위치 교차가 위장 탐지의 핵심입니다.

8. SOC 관제 포인트

  • 정상 프로세스 위장(masquerading, T1036)은 악성 프로세스에 정상 이름을 붙여 ps에서 속입니다.
  • comm·argv는 위조해도 exe 경로·부모·실행 위치는 실체를 드러냅니다.
  • 커널 스레드명[...] 위장은 exe 유무로 진짜 커널 스레드와 구분합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_h,defense_evasion,">
  <rule id="107280" level="13">
    <if_sid>107000</if_sid>
    <field name="audit.comm" type="pcre2">^(sshd|cron|crond|systemd|init|bash)$</field>
    <field name="audit.exe" type="pcre2">(/tmp/|/dev/shm/|/var/tmp/|/home/)</field>
    <description>정상 프로세스명 + 비정상 실행 위치(masquerading)</description>
    <mitre><id>T1036.004</id><id>T1036.005</id></mitre>
  </rule>
</group>

정상 프로세스명과 정상 exe 경로의 매핑을 기준선화하고, 이름-경로 불일치를 탐지합니다. 커널 스레드명은 exe 존재 여부로 판별합니다.

10. 대응 방법

  1. 초기 확인 — 정상 이름 프로세스의 comm vs exe 경로 불일치를 확인합니다.
  2. 범위 확인 — 커널 스레드 위장·경로 위장·부모 불일치를 확인합니다.
  3. 증거 확보 — 위장 프로세스·exe·계보·실행 이벤트를 보존합니다.
  4. 차단/조치 — 프로세스 위장 정탐이면 실체 프로세스 분석·악성 바이너리 조사를 진행합니다.
  5. 재발 방지 — 정상 프로세스 위장 탐지를 운영합니다.

11. 핵심 정리

위장실체 단서
이름 위장exe 경로
커널 스레드exe 존재
경로 위장실제 /tmp
부모 위장계보 불일치
면접 포인트"masquerading은 이름만 정상 — exe·부모·위치 교차로 실체 간파"

12. 다음 편 예고

다음 편 380. 방어 회피·흔적 삭제 — 파일명·확장자 위장 탐지 에서는 파일명·확장자 위장을 다루는 파일명·확장자 위장 탐지를 다룹니다.


이전 편: 378. 방어 회피·흔적 삭제 — 보안 기능 무력화 종합 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글