시스템 보안 · 취약점 › H. 방어 회피 · 흔적 삭제 징후 · 16/50편 (전체 366/450)
학습 단계: 로그 삭제·변조
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
타임스탬프 변조(timestomping)는 파일의 시각 정보(mtime·atime·ctime)를 위조해 포렌식 타임라인을 왜곡하는 안티포렌식 기법입니다. 공격자가 심은 악성 파일의 시각을 오래된 정상 파일과 똑같이 맞춰 "오래전부터 있던 정상 파일"처럼 위장합니다.
타임스탬프 변조(timestomping)
touch -t 202301010000 /tmp/.x (임의 시각 지정)
touch -r /bin/ls /tmp/.x (정상 파일 시각 복사)
특징: mtime/atime은 touch로 쉽게 변조 가능
ctime(inode 변경 시각)은 touch로 못 바꿈 → 단서!
탐지: ctime vs mtime 불일치, 시각 역전, touch -r/-t 명령
핵심 단서는 ctime입니다. touch로 mtime·atime은 바꿔도 ctime(inode 변경 시각)은 변조 시점으로 갱신되므로, mtime은 과거인데 ctime은 최근이면 변조입니다.
| 요소 | 변조 가능성 | 단서 |
|---|---|---|
| mtime | touch로 변조 | 과거로 위조 |
| atime | touch로 변조 | 과거로 위조 |
| ctime | touch로 불가 | 변조 시점 노출 |
| touch -r | 정상 파일 복사 | 명령 흔적 |
| 불일치 | mtime<ctime | 변조 증거 |
# 타임스탬프 변조 탐지 (분석 방법)
# touch로 시각 변조하는 명령
sudo ausearch -k proc_exec -i --start recent 2>/dev/null | grep -E 'comm="touch".*(-t|-r|-d)' | tail
# mtime vs ctime 불일치(변조 의심 파일)
sudo find /tmp /dev/shm /usr/bin -type f -newerct '1 hour ago' ! -newermt '1 hour ago' 2>/dev/null | head
# stat으로 시각 교차 확인
stat /tmp/.x 2>/dev/null | grep -E 'Modify|Change'
$ (touch 변조) (없음)
$ (mtime/ctime) 일치 또는 정상 순서(ctime≈mtime)
파일 시각을 위조하는 touch 사용이 없고, mtime과 ctime이 일관된(변조 없음) 상태가 정상입니다.
$ (touch 변조)
comm="touch" proctitle="touch -r /bin/bash /tmp/.sshd"
$ (mtime/ctime 불일치)
/tmp/.sshd: Modify 2022-01-01(과거) / Change 2026-10-08(오늘)
→ mtime은 과거, ctime은 오늘 = 타임스탬프 변조
타임스탬프 변조 분석입니다(가상의 예시).
[공격자] /tmp/.sshd 악성 파일 생성(오늘)
↓ (위장)
touch -r /bin/bash /tmp/.sshd (bash의 과거 시각 복사)
→ mtime: 2022(과거), atime: 2022
↓ (분석가)
stat /tmp/.sshd:
Modify(mtime): 2022-01-01 ← 위조됨
Change(ctime): 2026-10-08 ← 변조 못 함(실제)
↓
= mtime 과거 vs ctime 오늘 불일치 → 변조 확정
| 시각 | 값 | 의미 |
|---|---|---|
| mtime | 2022(위조) | 오래된 척 |
| ctime | 2026(실제) | 변조 노출 |
| 불일치 | mtime<ctime | 변조 증거 |
ctime vs mtime 불일치가 타임스탬프 변조 탐지의 핵심 단서입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_h,defense_evasion,">
<rule id="107150" level="12">
<if_sid>107000</if_sid>
<field name="audit.comm">touch</field>
<field name="audit.proctitle" type="pcre2">touch\s+.*(-t\s|-r\s|-d\s)|-[acm]*t</field>
<description>타임스탬프 변조 시도(touch -t/-r, timestomping)</description>
<mitre><id>T1070.006</id></mitre>
</rule>
</group>
FIM에서 mtime과 ctime 불일치를 탐지 조건으로 추가합니다. 민감 디렉터리(/tmp·/usr/bin)의 touch -r/-t는 경보합니다.
| 요소 | 단서 |
|---|---|
| mtime | 과거로 위조 |
| atime | 과거로 위조 |
| ctime | 변조 시점 노출 |
| touch -r/-t | 명령 흔적 |
| 면접 포인트 | "timestomping은 mtime 위조 — ctime은 못 바꿈, mtime<ctime이 변조 단서" |
다음 편 367. 방어 회피·흔적 삭제 — 파일 무결성 모니터링 우회 탐지 에서는 파일 무결성 모니터링 우회를 다루는 파일 무결성 모니터링 우회 탐지를 다룹니다.
이전 편: 365. 방어 회피·흔적 삭제 — 로그 전송 차단·중단 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점