시스템 보안 · 취약점 › C. Linux 정보 노출 및 수집 · 36/50편 (전체 136/450)
학습 단계: 프로세스·서비스·파일 정보 수집
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

cron은 systemd와 함께 대표적 지속성 수단입니다. 공격자는 예약 작업 구조(어디에 등록되고, 어떤 작업이 이미 있는가)를 조회해 악성 예약 작업 등록 위치를 물색합니다.

cron 구조 조회
 crontab -l             → 현재 사용자 crontab
 ls /etc/cron.d/        → 시스템 cron 작업(A영역 26편)
 cat /etc/crontab       → 시스템 crontab
 ls /var/spool/cron/    → 사용자별 crontab
 ls /etc/cron.{hourly,daily,...} → 주기 작업 디렉터리

목적: 악성 cron을 어디에 등록할지, 기존 작업에 섞을 수 있는지 파악

A영역 26편(cron 접근 제어)·linsec 31편(cron 지속성 탐지)이 방어라면, 여기서는 공격자가 등록 위치를 조회하는 정찰입니다.

2. 왜 중요한가

  • cron 기반 지속성(F영역·linsec 31편)은 재부팅·세션 종료 후에도 실행돼, 공격자가 선호합니다.
  • 기존 cron 작업을 조회해 그 작업에 섞거나 비슷하게 위장하면 눈에 덜 띕니다.
  • cron 디렉터리 조회 직후 예약 작업 생성(A영역 26편·F영역)이 이어지면 지속성 확보입니다.

3. 핵심 명령어 / 설정

조회정보
crontab -l현재 사용자 crontab
/etc/cron.d/, /etc/crontab시스템 cron(A영역 26편)
/var/spool/cron/사용자별 crontab
/etc/cron.{hourly,daily}주기 작업

4. 실습 (실습 예시)

# cron 구조 조회 감사 (실습 예시)
-w /etc/cron.d -p r -k recon_persist
-w /etc/crontab -p r -k recon_persist
-w /var/spool/cron -p r -k recon_persist
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/crontab -F a1="-l" -k recon_persist

# 세션에서 cron 구조 조회 (분석 방법)
sudo ausearch -k recon_persist -i --start recent | grep -E 'cron|crontab' | tail

5. 정상 상태

$ sudo ausearch -k recon_persist -i --start today | grep cron | tail -1
10:20:02 auid=admin1 ses=8 comm="crontab" a1="-l"  (예약 작업 점검)

관리자가 자기 예약 작업을 점검하는 crontab -l은 정상입니다(A영역 26편 점검 포함).

6. 이상 상태

02:16:00 auid=devops ses=12 comm="crontab" a1="-l"
02:16:02 auid=devops ses=12 comm="ls" (대상 /etc/cron.d/)
02:16:04 auid=devops ses=12 comm="cat" name="/etc/crontab"
  • 사용자 crontab + 시스템 cron.d + crontab 연속 조회 → 예약 작업 등록 위치 전수 파악
  • 기존 작업 확인 후 그에 섞을 악성 예약 작업 등록(A영역 26편·F영역) 가능성
  • systemd 정찰(C35)에 이어 cron 정찰 → 지속성 수단 전수 조사

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

cron 구조 정찰 → 지속성 준비 흐름입니다(가상의 예시 로그).

type=EXECVE ... a0="crontab" a1="-l"
type=SYSCALL ... auid=devops ses=12 comm="crontab" key="recon_persist"
type=PATH ... name="/etc/cron.d/" nametype=NORMAL
[이후 가능] /etc/cron.d/<악성> 또는 crontab 등록 (A영역 26편 100320, F영역)
관찰해석
crontab -l현재 작업 확인
ls /etc/cron.d등록 위치
cat /etc/crontab기존 작업(위장 참고)
이후 등록지속성(F영역)

cron 조회 직후 예약 작업 등록(A영역 26편 100320)이 나타나면 지속성 확보로 연계 탐지합니다.

8. SOC 관제 포인트

  • cron 구조 조회는 지속성 등록 위치 물색 관점으로 봅니다(systemd C35와 묶음).
  • cron 조회 직후 예약 작업 등록(A영역 26편·F영역)이 이어지는지 연계합니다.
  • 지속성 정찰(systemd+cron)이 결합되면 지속성 확보 임박으로 봅니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_c,recon,">
  <rule id="102350" level="7">
    <if_group>audit</if_group>
    <field name="audit.key">recon_persist</field>
    <regex type="pcre2">cron|crontab</regex>
    <description>cron 예약 작업 구조 조회(지속성 등록 정찰)</description>
    <mitre><id>T1053.003</id></mitre>
  </rule>
</group>

T1053.003(Cron)에 매핑됩니다. cron 조회 + 등록(A영역 26편 100320)을 상관하면 지속성 준비→확보를 포착합니다.

10. 대응 방법

  1. 초기 확인 — cron 구조 조회의 범위·주체와 이후 예약 작업 등록 여부를 확인합니다.
  2. 범위 확인 — cron 조회 직후 등록(A영역 26편·F영역)이 이어졌는지 확인합니다.
  3. 증거 확보 — 세션 조회 흐름과 cron 디렉터리 상태를 보존합니다.
  4. 차단/조치 — 탈취 세션이면 B영역 대응과 cron FIM 점검을 진행합니다.
  5. 재발 방지 — cron 정찰을 지속성 상관에 포함합니다.

11. 핵심 정리

조회정보
crontab -l사용자 crontab
/etc/cron.d, crontab시스템 cron
/var/spool/cron사용자별
구분예약 작업 점검(정상) vs 등록 위치 전수 조회(정찰)
면접 포인트"기존 cron 조회는 섞어 넣을 악성 예약 작업의 위장 준비"

12. 다음 편 예고

다음 편 137. Linux 정보 수집 — 파일·디렉터리 구조 탐색 흔적 에서는 파일 탐색 정찰인 파일·디렉터리 구조 탐색 흔적을 다룹니다.


이전 편: 135. Linux 정보 수집 — systemd 서비스 정보 수집
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글