시스템 보안 · 취약점 › F. 비정상 프로세스 · 지속성 징후 · 28/50편 (전체 278/450)
학습 단계: 지속성(persistence) 메커니즘
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
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) ← 가장 깊음
핵심: 모든 자동 실행 지점 전수 점검 + 전수 제거
지속성은 하나만 남아도 침해가 반복되므로, 전수 점검(모든 메커니즘)과 전수 제거가 핵심입니다. 공격자는 중복 설치로 복원력을 높입니다.
| 메커니즘 | 실행 시점 | 편 |
|---|---|---|
| 셸·autostart | 로그인·셸 시작 | F21·22 |
| cron·타이머 | 주기·부팅 | F19·20 |
| systemd·init | 부팅·재시작 | F20·23 |
| SSH 키·PAM | 재접속·인증 | F25·26 |
| LD_PRELOAD·커널 | 전역·커널 | F24·27 |
# 지속성 전수 점검 (분석 방법)
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 '^>'
[cron] [systemd] [셸] [preload] [커널] 모두 기준선 일치(지속성 없음)
모든 지속성 메커니즘(cron·systemd·셸·SSH·preload·커널)이 기준선과 일치하는, 지속성이 없는 상태가 정상입니다.
[cron] /etc/cron.d/0hourly-x
[systemd] > updater.service
[preload] /tmp/.so
[SSH] /root/.ssh/authorized_keys: 2줄(신규 키)
지속성 전수 점검·제거 흐름입니다(가상의 예시).
[전수 점검] 모든 자동 실행 지점
사용자: 셸·autostart·사용자 systemd
스케줄: cron·타이머
서비스: systemd·init·rc
인증: SSH 키·PAM
라이브러리: LD_PRELOAD
커널: LKM
↓
[발견] 중복 지속성(4개 메커니즘)
↓
[전수 제거] 모두 제거 + 기준선 갱신
→ 하나라도 남으면 침해 반복
| 깊이 | 제거 난이도 |
|---|---|
| 사용자·스케줄 | 낮음 |
| 서비스·인증 | 중간 |
| 라이브러리·커널 | 높음 |
전수 점검으로 모든 메커니즘을 찾고, 전수 제거로 복원을 막습니다.
<!-- 실습 예시 룰: 적용 전 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) 상위에 다중 지속성 상관 룰을 두어 중복 백도어를 최고 레벨로 경보합니다.
| 메커니즘 | 실행 시점 |
|---|---|
| 셸·autostart | 로그인·셸 시작 |
| cron·타이머 | 주기·부팅 |
| systemd·init | 부팅·재시작 |
| SSH 키·PAM·커널 | 재접속·인증·커널 |
| 면접 포인트 | "지속성은 하나만 남아도 반복 — 전수 점검+전수 제거, 중복 설치 주의" |
다음 편 279. 프로세스·지속성 — 리버스 셸(reverse shell) 징후 탐지 에서는 4단계로 넘어가 리버스 셸(reverse shell) 징후 탐지를 다룹니다.
이전 편: 277. 프로세스·지속성 — 커널 모듈·rootkit 지속성 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점