293. 프로세스·지속성 — 프로세스 계보 기반 공격 체인 재구성

changseop lee·2026년 10월 7일

시스템 보안 · 취약점

목록 보기
293/450

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

선행 학습

1. 개념

타임라인(F39)이 "시간순"이라면, 계보 기반 공격 체인 재구성은 "인과순"입니다. 프로세스 계보(부모-자식)를 따라가면 "최초 무엇이 무엇을 실행했고, 그것이 무엇으로 이어졌는가"의 인과 관계를 복원해, 최초 침투점(root cause)을 찾습니다.

계보 기반 공격 체인 재구성
 프로세스 트리를 역추적:
   C2 프로세스 → 부모 → 부모 ... → 최초 침투점
   /tmp/.x → sh → nginx(웹셸) → 웹 요청(최초)
 각 노드: 실행·지속성·C2 행위 매핑
 목적: 최초 침투점(root cause) + 전체 영향 범위

핵심: 계보(인과) + 각 노드 행위 = 공격 스토리

계보 재구성의 목적은 root cause(최초 침투점) 식별입니다. C2 프로세스에서 부모를 역추적하면 웹셸·취약점 등 최초 진입점에 도달합니다.

2. 왜 중요한가

  • 계보 재구성은 최초 침투점(root cause)을 찾아 근본 원인을 제거하게 합니다.
  • 시간순(타임라인)과 달리 인과순이라 "무엇이 무엇을 유발했는가"를 보여줍니다.
  • 전체 영향 범위(계보에 속한 모든 프로세스·거점)를 파악해 전수 제거합니다.

3. 핵심 명령어 / 설정

재구성 요소내용가치
역추적C2→부모→최초root cause
노드 행위실행·지속성·C2행위 매핑
최초 침투점웹셸·취약점근본 원인
영향 범위계보 전체전수 제거
분기여러 자식확산 파악

4. 실습 (실습 예시)

# 계보 기반 공격 체인 재구성 (분석 방법)
# C2 프로세스에서 부모 역추적
PID=3002
while [ "$PID" -gt 1 ]; do
  read -r PPID COMM < <(ps -o ppid=,comm= -p $PID 2>/dev/null)
  echo "$PID ($COMM) ← 부모 $PPID"; PID=$PPID
done 2>/dev/null
# auditd 계보로 재구성(ppid 체인)
sudo ausearch -k proc_exec -i --session 99 2>/dev/null | grep -E 'pid=|ppid=|comm=|exe='

5. 정상 상태

$ (계보 역추적)
정상: bash ← sshd ← systemd (로그인 계보, root cause=정상 로그인)

프로세스 계보를 역추적했을 때 정상 로그인(systemd→sshd→bash)에 도달하는, 정상 인과 구조입니다.

6. 이상 상태

$ (계보 역추적)
3002 (/tmp/.x) ← 3001 (sh) ← 985 (nginx) ← 1 (systemd)
$ (노드 행위 매핑)
nginx(985): 웹 요청 처리(최초 침투 — 웹셸)
sh(3001): 웹셸 명령 실행
/tmp/.x(3002): 페이로드 + cron/systemd 지속성 + C2
  • C2 프로세스(/tmp/.x)에서 역추적 → sh → nginx(웹셸) → 최초 침투점
  • root cause = nginx 웹셸(웹 취약점·업로드)
  • 전체 영향: nginx 웹셸·sh·/tmp/.x·지속성·C2 → 전수 제거 대상

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

계보 기반 공격 체인 재구성입니다(가상의 예시).

[최초 침투 root cause]
 웹 요청 → nginx(985) 웹셸
      ↓ (실행)
 sh(3001) 웹셸 명령
      ↓ (실행)
 /tmp/.x(3002) 페이로드
      ├ cron/systemd 지속성(F19·20)
      ├ bash→/dev/tcp C2(F29)
      └ rm 로그(F35)
 → root cause(nginx 웹셸) + 전체 영향 범위
노드행위역할
nginx웹셸root cause
sh명령중간
/tmp/.x페이로드거점
지속성·C2유지·제어영향

계보를 역추적하면 root cause와 전체 영향이 한 그림으로 복원됩니다.

8. SOC 관제 포인트

  • 계보 기반 재구성은 인과순으로 공격 체인을 복원해 최초 침투점(root cause)을 찾습니다.
  • C2 프로세스에서 부모를 역추적하면 웹셸·취약점 등 최초 진입점에 도달합니다.
  • 계보 전체(모든 프로세스·거점)를 영향 범위로 파악해 전수 제거·근본 원인 차단합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,lineage,">
  <!-- 웹셸 계보에서 지속성·C2까지 전체 체인(root cause=웹서버) -->
  <rule id="105420" level="15">
    <if_sid>105410</if_sid>
    <field name="audit.ppid_comm" type="pcre2">^(nginx|httpd|apache2?|php-fpm|tomcat)$</field>
    <description>웹서버 기원 공격 체인 재구성(root cause=웹셸)</description>
    <mitre><id>T1505.003</id><id>T1059</id></mitre>
  </rule>
</group>

계보 재구성은 Sysmon·ELK 프로세스 트리 시각화로 보완합니다. root cause(최초 침투점)를 찾아 근본 원인(취약점·업로드)을 제거합니다.

10. 대응 방법

  1. 초기 확인 — C2·악성 프로세스에서 부모를 역추적해 계보를 재구성합니다.
  2. 범위 확인 — 각 노드의 행위(실행·지속성·C2)·최초 침투점(root cause)을 확인합니다.
  3. 증거 확보 — 전체 계보·노드 행위·root cause를 사건 증거로 보존합니다.
  4. 차단/조치 — root cause(웹셸·취약점) 제거 + 계보 전체 전수 제거를 진행합니다.
  5. 재발 방지 — 계보 기반 공격 체인 재구성을 근본 원인 분석으로 운영합니다.

11. 핵심 정리

재구성 요소가치
역추적(C2→최초)root cause
노드 행위 매핑행위 스토리
최초 침투점근본 원인
영향 범위전수 제거
면접 포인트"계보 재구성은 인과순 — root cause(최초 침투점) 찾아 근본 원인 제거"

12. 다음 편 예고

다음 편 294. 프로세스·지속성 — Wazuh 기반 프로세스·지속성 탐지 에서는 6단계로 넘어가 Wazuh 기반 프로세스·지속성 탐지를 다룹니다.


이전 편: 292. 프로세스·지속성 — 프로세스·지속성 이벤트 상관분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글