254. 프로세스·지속성 — 프로세스 정상 기준선 만들기

changseop lee·5일 전

시스템 보안 · 취약점

목록 보기
254/450

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

선행 학습

1. 개념

비정상 프로세스·지속성 탐지의 전제는 정상 기준선입니다. 시스템에서 정상적으로 실행되는 프로세스·서비스·cron·지속성 항목을 목록화해야, 새로 나타난 비정상 항목을 구분할 수 있습니다.

프로세스·지속성 기준선 요소
 [프로세스] 정상 실행 바이너리·경로·부모·소유자
 [서비스]   enabled된 systemd 서비스 목록
 [스케줄]   정상 cron·systemd 타이머
 [지속성]   정상 .bashrc·authorized_keys·모듈
 [해시]     정상 바이너리 해시(변조 탐지)

기준선 이탈 = 비정상 후보

기준선은 "무엇이 정상인가"의 스냅샷입니다. 깨끗한 상태에서 수립하고, 이후 변경을 diff로 탐지합니다.

2. 왜 중요한가

  • 기준선 없이는 수많은 프로세스 중 어느 것이 새로 생긴 비정상인지 구분 불가합니다.
  • 서비스·cron·지속성 목록의 기준선 이탈이 지속성 공격 탐지의 핵심입니다.
  • 바이너리 해시 기준선은 정상 바이너리의 변조(트로이목마)를 탐지합니다.

3. 핵심 명령어 / 설정

기준선수립 대상이탈 신호
프로세스경로·부모·소유자비표준·이상 계보
서비스enabled 목록신규 서비스
cron·타이머스케줄 목록신규 스케줄
지속성키·설정·모듈신규 등록
해시바이너리변조

4. 실습 (실습 예시)

# 프로세스·지속성 기준선 수립 (분석 방법)
# enabled 서비스 기준선
systemctl list-unit-files --state=enabled 2>/dev/null | sort > /root/baseline/services.txt
# cron 기준선
ls /etc/cron.d/ /etc/cron.*/ /var/spool/cron/ 2>/dev/null | sort > /root/baseline/cron.txt
# 정상 실행 바이너리 해시(주요 경로)
find /usr/bin /usr/sbin -type f -exec sha256sum {} \; 2>/dev/null > /root/baseline/bin_hashes.txt

5. 정상 상태

$ (서비스 diff) (차이 없음)
$ (cron diff) (차이 없음)
$ (해시 diff) (차이 없음)

서비스·cron·바이너리 해시가 모두 기준선과 일치해, 비정상 실행·지속성 항목이 없는 상태가 정상입니다.

6. 이상 상태

$ (서비스 diff) > updater.service (신규)
$ (cron diff) > /etc/cron.d/0hourly-x (신규)
$ (해시 diff) /usr/bin/ssh 해시 불일치(변조)
  • 신규 서비스(updater.service) → systemd 지속성 의심(F20)
  • 신규 cron(0hourly-x) → cron 지속성 의심(F19)
  • ssh 바이너리 해시 변조 → 트로이목마(자격증명 탈취)
  • 기준선 이탈 다수 → 지속성·변조 → 정탐

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

프로세스·지속성 기준선 비교 흐름입니다(가상의 예시).

[기준선 수립] 깨끗한 상태의 서비스·cron·해시 스냅샷
      ↓ (주기 비교)
[현재 수집] 현재 서비스·cron·해시
      ↓ (diff)
[이탈 탐지] 신규 서비스·cron, 해시 변조
      ↓
[판정] 이탈 항목 = 비정상 후보 → 상세 분석
기준선정상이탈
서비스목록 일치신규
cron목록 일치신규
해시일치변조

기준선 diff가 지속성 등록·바이너리 변조를 명확히 드러냅니다.

8. SOC 관제 포인트

  • 프로세스·지속성 탐지는 정상 기준선(프로세스·서비스·cron·지속성·해시) 수립이 전제입니다.
  • 깨끗한 상태에서 수립하고 주기적 diff로 이탈(신규·변조)을 탐지합니다.
  • 바이너리 해시 기준선은 정상 바이너리의 변조(트로이목마)를 포착합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,baseline,">
  <!-- 주기 점검 스크립트 결과(기준선 이탈)를 로그로 수집·경보 -->
  <rule id="105030" level="10">
    <decoded_as>json</decoded_as>
    <field name="check">baseline_drift</field>
    <field name="status">new_item</field>
    <description>프로세스·지속성 기준선 이탈(신규 서비스·cron·해시 변조)</description>
    <mitre><id>T1543</id><id>T1053</id></mitre>
  </rule>
</group>

기준선 diff 결과는 Wazuh rootcheck/FIM이나 주기 스크립트 로그로 수집합니다. 해시 기준선은 FIM과 연계합니다(F46).

10. 대응 방법

  1. 초기 확인 — 서비스·cron·지속성·해시 기준선 대비 이탈 항목을 확인합니다.
  2. 범위 확인 — 신규 서비스·cron·지속성 등록·바이너리 변조를 확인합니다.
  3. 증거 확보 — 기준선과 이탈 항목·관련 로그를 보존합니다.
  4. 차단/조치 — 이탈이 정탐이면 해당 지속성·변조 제거(F19~28)로 대응합니다.
  5. 재발 방지 — 프로세스·지속성 기준선 기반 이탈 탐지를 운영합니다.

11. 핵심 정리

기준선이탈 신호
프로세스비표준·이상 계보
서비스신규 서비스
cron·타이머신규 스케줄
해시바이너리 변조
면접 포인트"기준선 diff로 신규 지속성·바이너리 변조 탐지 — 깨끗한 상태에서 수립"

12. 다음 편 예고

다음 편 255. 프로세스·지속성 — 프로세스 계보(부모-자식)와 이상 탐지 원리 에서는 프로세스 계보를 다루는 프로세스 계보(부모-자식)와 이상 탐지 원리를 다룹니다.


이전 편: 253. 프로세스·지속성 — 프로세스 감사의 기반 구성(auditd execve)
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글