255. 프로세스·지속성 — 프로세스 계보(부모-자식)와 이상 탐지 원리

changseop lee·6일 전

시스템 보안 · 취약점

목록 보기
255/450

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

선행 학습

1. 개념

프로세스는 항상 부모로부터 생성됩니다(fork/exec). 이 부모-자식 계보(lineage)는 가장 강력한 이상 탐지 수단입니다. 정상 프로세스는 예상 가능한 부모를 갖지만, 공격 프로세스는 비정상 부모에서 생성되기 때문입니다.

프로세스 계보 이상 탐지
 정상 계보: systemd → sshd → bash(로그인 셸)
            systemd → nginx(웹 서비스)
 비정상 계보: nginx → bash (웹서버가 셸 생성 = 웹셸)
            mysqld → sh → curl (DB가 셸·다운로드)
            cron → nc (스케줄이 netcat)

핵심: "이 부모가 이 자식을 만드는 게 정상인가?"

예: nginx·mysqld 같은 서비스는 셸을 생성하지 않습니다. 서비스가 셸·네트워크 도구를 생성하면 거의 확실히 침해입니다.

2. 왜 중요한가

  • 부모-자식 계보는 명령줄·경로를 바꿔도 유지되는 강력한 탐지 신호입니다.
  • 서비스(웹·DB)가 셸·네트워크 도구를 생성하는 것은 침해의 결정적 증거입니다.
  • 계보 분석은 공격 체인(무엇이 무엇을 실행했나)을 재구성하는 기초입니다(F43).

3. 핵심 명령어 / 설정

비정상 계보의미위험
웹서버 → 셸웹셸 실행매우 높음
DB → 셸·curlDB 침해·다운로드높음
cron → nc/셸스케줄 백도어높음
셸 → 다운로드→실행페이로드높음
systemd → 서비스정상정상

4. 실습 (실습 예시)

# 프로세스 계보 이상 탐지 (분석 방법)
# 서비스가 셸을 생성한 경우(비정상 계보)
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -E 'comm="(sh|bash|dash)"' | grep -E 'ppid.*(nginx|httpd|mysqld|apache)' | tail
# 프로세스 트리로 계보 확인
ps -eo pid,ppid,comm --forest 2>/dev/null | grep -A2 -E 'nginx|httpd|mysqld'

5. 정상 상태

$ (서비스→셸 계보) (없음)
$ (프로세스 트리)
nginx(985) ─ nginx: worker (정상, 셸 자식 없음)

웹·DB 서비스가 셸을 생성하지 않고 정상 워커만 두는, 예상된 계보 상태입니다.

6. 이상 상태

$ (서비스→셸 계보)
ppid comm="nginx" → comm="sh" → args="sh -c id;uname -a"
$ (프로세스 트리)
nginx(985) ─ sh(3001) ─ /tmp/.x(3002)
  • nginx(웹서버)가 sh 생성 → 웹셸을 통한 명령 실행
  • sh → /tmp/.x → 페이로드 실행 계보
  • 서비스가 셸·비표준 바이너리 생성 → 비정상 계보 → 정탐

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

프로세스 계보 이상 분석입니다(가상의 예시).

[정상] systemd(1) → nginx(985) → nginx worker
[비정상] nginx(985) → sh(3001) → /tmp/.x(3002) → nc(3003)
         웹서버 → 셸 → 페이로드 → 네트워크
         = 웹셸 → 실행 → C2 (공격 체인)
계보 단계해석
nginx→sh웹셸
sh→/tmp/.x페이로드 실행
/tmp/.x→ncC2 연결

계보를 따라가면 웹셸→실행→C2의 공격 체인 전체가 드러납니다.

8. SOC 관제 포인트

  • 프로세스 계보(부모-자식)는 명령줄·경로를 바꿔도 유지되는 강력한 이상 신호입니다.
  • 서비스(웹·DB)가 셸·네트워크 도구를 생성하면 거의 확실히 침해입니다.
  • 계보 분석이 공격 체인 재구성(F43)의 기초입니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,process,">
  <!-- 웹/DB 서비스가 셸을 생성(비정상 계보) -->
  <rule id="105040" level="13">
    <if_sid>105010</if_sid>
    <field name="audit.ppid_comm" type="pcre2">^(nginx|httpd|apache2?|mysqld|postgres|php-fpm|tomcat)$</field>
    <field name="audit.comm" type="pcre2">^(sh|bash|dash|zsh|nc|ncat|python|perl)$</field>
    <description>웹/DB 서비스의 셸·도구 생성(비정상 계보·웹셸)</description>
    <mitre><id>T1059</id><id>T1505.003</id></mitre>
  </rule>
</group>

ppid_comm(부모 프로세스명) 추출이 핵심입니다. Sysmon(F46)이나 auditd ppid로 계보를 파싱합니다.

10. 대응 방법

  1. 초기 확인 — 비정상 부모-자식 계보(서비스→셸·도구)를 확인합니다.
  2. 범위 확인 — 계보를 따라 웹셸→실행→C2 공격 체인을 재구성합니다.
  3. 증거 확보 — 계보·프로세스 트리·관련 실행 로그를 보존합니다.
  4. 차단/조치 — 비정상 계보 정탐이면 전체 계보 프로세스 종료·웹셸 제거를 진행합니다.
  5. 재발 방지 — 프로세스 계보 기반 이상 탐지를 핵심 수단으로 운영합니다.

11. 핵심 정리

비정상 계보의미
웹서버 → 셸웹셸 실행
DB → 셸·curlDB 침해·다운로드
cron → nc/셸스케줄 백도어
systemd → 서비스정상
면접 포인트"계보(부모-자식)는 가장 강력한 신호 — 서비스가 셸 생성하면 거의 확실히 침해"

12. 다음 편 예고

다음 편 256. 프로세스·지속성 — 실행 경로·명령줄·해시 기반 분석 축 에서는 실행 경로·명령줄·해시 분석 축을 다루는 실행 경로·명령줄·해시 기반 분석 축을 다룹니다.


이전 편: 254. 프로세스·지속성 — 프로세스 정상 기준선 만들기
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글