시스템 보안 · 취약점 › C. Linux 정보 노출 및 수집 · 36/50편 (전체 136/450)
학습 단계: 프로세스·서비스·파일 정보 수집
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
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 지속성 탐지)이 방어라면, 여기서는 공격자가 등록 위치를 조회하는 정찰입니다.
| 조회 | 정보 |
|---|---|
crontab -l | 현재 사용자 crontab |
/etc/cron.d/, /etc/crontab | 시스템 cron(A영역 26편) |
/var/spool/cron/ | 사용자별 crontab |
/etc/cron.{hourly,daily} | 주기 작업 |
# 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
$ 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편 점검 포함).
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"
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)이 나타나면 지속성 확보로 연계 탐지합니다.
<!-- 실습 예시 룰: 적용 전 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)을 상관하면 지속성 준비→확보를 포착합니다.
| 조회 | 정보 |
|---|---|
| crontab -l | 사용자 crontab |
| /etc/cron.d, crontab | 시스템 cron |
| /var/spool/cron | 사용자별 |
| 구분 | 예약 작업 점검(정상) vs 등록 위치 전수 조회(정찰) |
| 면접 포인트 | "기존 cron 조회는 섞어 넣을 악성 예약 작업의 위장 준비" |
다음 편 137. Linux 정보 수집 — 파일·디렉터리 구조 탐색 흔적 에서는 파일 탐색 정찰인 파일·디렉터리 구조 탐색 흔적을 다룹니다.
이전 편: 135. Linux 정보 수집 — systemd 서비스 정보 수집
📚 시리즈 전체 보기: 시스템 보안 · 취약점