278. 프로세스·지속성 — 지속성 메커니즘 종합 분석

changseop lee·2026년 10월 7일

시스템 보안 · 취약점

목록 보기
278/450

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

선행 학습

1. 개념

3단계(지속성 메커니즘, F19~27)를 종합합니다. 다양한 지속성 메커니즘을 위치·실행 시점·깊이로 묶어, "어디를 전수 점검하고 어떻게 제거하는가"를 정리합니다.

지속성 메커니즘 종합 체계(깊이순)
 [사용자 수준] 셸 설정·사용자 systemd·autostart (F21·22)
 [스케줄]      cron·systemd 타이머 (F19·20)
 [서비스]      systemd·init·rc (F20·23)
 [인증]        SSH 키·PAM (F25·26)
 [라이브러리]  LD_PRELOAD (F24)
 [커널]        LKM rootkit (F27) ← 가장 깊음

핵심: 모든 자동 실행 지점 전수 점검 + 전수 제거

지속성은 하나만 남아도 침해가 반복되므로, 전수 점검(모든 메커니즘)과 전수 제거가 핵심입니다. 공격자는 중복 설치로 복원력을 높입니다.

2. 왜 중요한가

  • 지속성은 하나만 남아도 침해가 반복되므로 전수 점검·제거가 필수입니다.
  • 공격자는 여러 메커니즘에 중복 설치해 하나를 제거해도 복원합니다.
  • 깊이(사용자→커널)에 따라 탐지·제거 난이도가 다르며, 커널이 가장 어렵습니다.

3. 핵심 명령어 / 설정

메커니즘실행 시점편
셸·autostart로그인·셸 시작F21·22
cron·타이머주기·부팅F19·20
systemd·init부팅·재시작F20·23
SSH 키·PAM재접속·인증F25·26
LD_PRELOAD·커널전역·커널F24·27

4. 실습 (실습 예시)

# 지속성 전수 점검 (분석 방법)
echo "[cron]"; sudo grep -rlE '/tmp/|curl|@reboot' /etc/cron* /var/spool/cron/ 2>/dev/null
echo "[systemd]"; diff /root/baseline/services.txt <(systemctl list-unit-files --state=enabled 2>/dev/null|sort)|grep '^>'
echo "[셸]"; sudo grep -rlE 'curl|/tmp/' /etc/profile.d/ /home/*/.bashrc 2>/dev/null
echo "[SSH]"; for f in /home/*/.ssh/authorized_keys /root/.ssh/authorized_keys; do wc -l "$f" 2>/dev/null; done
echo "[preload]"; cat /etc/ld.so.preload 2>/dev/null
echo "[커널]"; diff /root/baseline/lsmod.txt <(lsmod|sort) 2>/dev/null|grep '^>'

5. 정상 상태

[cron] [systemd] [셸] [preload] [커널] 모두 기준선 일치(지속성 없음)

모든 지속성 메커니즘(cron·systemd·셸·SSH·preload·커널)이 기준선과 일치하는, 지속성이 없는 상태가 정상입니다.

6. 이상 상태

[cron] /etc/cron.d/0hourly-x
[systemd] > updater.service
[preload] /tmp/.so
[SSH] /root/.ssh/authorized_keys: 2줄(신규 키)
  • cron·systemd·preload·SSH 키 4개 메커니즘에 동시 지속성 → 중복 백도어
  • 하나를 제거해도 나머지로 복원 → 전수 제거 필요
  • 다중 메커니즘 지속성 → 견고한 장기 침해 → 정탐

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

지속성 전수 점검·제거 흐름입니다(가상의 예시).

[전수 점검] 모든 자동 실행 지점
 사용자: 셸·autostart·사용자 systemd
 스케줄: cron·타이머
 서비스: systemd·init·rc
 인증: SSH 키·PAM
 라이브러리: LD_PRELOAD
 커널: LKM
      ↓
[발견] 중복 지속성(4개 메커니즘)
      ↓
[전수 제거] 모두 제거 + 기준선 갱신
 → 하나라도 남으면 침해 반복
깊이제거 난이도
사용자·스케줄낮음
서비스·인증중간
라이브러리·커널높음

전수 점검으로 모든 메커니즘을 찾고, 전수 제거로 복원을 막습니다.

8. SOC 관제 포인트

  • 지속성은 깊이별(사용자→커널) 여러 메커니즘에 설치되며, 전수 점검·제거가 필수입니다.
  • 하나만 남아도 침해가 반복되고, 공격자는 중복 설치로 복원력을 높입니다.
  • 모든 자동 실행 지점(cron·systemd·셸·인증·라이브러리·커널)을 기준선화·감시합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,persistence,">
  <!-- 동일 세션 내 다중 지속성 메커니즘 등록(중복 백도어) -->
  <rule id="105270" level="15" frequency="2" timeframe="900">
    <if_matched_sid>105180,105190,105230,105240,105250</if_matched_sid>
    <same_field>audit.session</same_field>
    <description>동일 세션 내 다중 지속성 메커니즘 설치(중복 백도어·심각)</description>
    <mitre><id>T1543</id><id>T1053</id><id>T1546</id></mitre>
  </rule>
</group>

개별 룰(F19~27) 상위에 다중 지속성 상관 룰을 두어 중복 백도어를 최고 레벨로 경보합니다.

10. 대응 방법

  1. 초기 확인 — 모든 지속성 메커니즘(사용자·스케줄·서비스·인증·라이브러리·커널)을 전수 점검합니다.
  2. 범위 확인 — 여러 메커니즘 중복 설치·기준선 이탈을 확인합니다.
  3. 증거 확보 — 전 메커니즘의 지속성 흔적·등록 이벤트를 보존합니다.
  4. 차단/조치 — 지속성 정탐이면 모든 메커니즘 전수 제거·기준선 갱신·재침해 감시를 진행합니다.
  5. 재발 방지 — 자동 실행 지점 전수 감시 지속성 탐지 체계를 운영합니다.

11. 핵심 정리

메커니즘실행 시점
셸·autostart로그인·셸 시작
cron·타이머주기·부팅
systemd·init부팅·재시작
SSH 키·PAM·커널재접속·인증·커널
면접 포인트"지속성은 하나만 남아도 반복 — 전수 점검+전수 제거, 중복 설치 주의"

12. 다음 편 예고

다음 편 279. 프로세스·지속성 — 리버스 셸(reverse shell) 징후 탐지 에서는 4단계로 넘어가 리버스 셸(reverse shell) 징후 탐지를 다룹니다.


이전 편: 277. 프로세스·지속성 — 커널 모듈·rootkit 지속성 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글