시스템 보안 · 취약점 › H. 방어 회피 · 흔적 삭제 징후 · 9/50편 (전체 359/450)
학습 단계: 로그 삭제·변조
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
2단계는 로그 삭제·변조를 다룹니다. 가장 기본은 로그 파일 삭제입니다. 공격자는 /var/log의 보안 로그(secure·messages·audit)를 rm으로 지워 침투·활동 흔적을 제거합니다. 이는 ATT&CK T1070.002(Clear Linux Logs)에 해당합니다.
로그 파일 삭제 패턴
rm /var/log/secure — 인증 로그 삭제
rm -rf /var/log/* — 전체 로그 삭제
cat /dev/null > /var/log/messages — 내용 비우기(truncate)
> /var/log/secure — 리다이렉션으로 비우기
탐지: auditd watch(/var/log) + 로그 갑작스런 중단·소멸
핵심은 "로그 파일에 대한 삭제·비우기 행위"입니다. auditd watch가 삭제 행위를 기록하고, 중앙 수집본이 원본을 보존합니다.
| 삭제 방식 | 명령 | 위험 |
|---|---|---|
| 파일 삭제 | rm /var/log/* | 높음 |
| 내용 비우기 | > 파일·truncate | 높음 |
| /dev/null 덮기 | cat /dev/null > | 높음 |
| 디렉터리 삭제 | rm -rf /var/log | 매우 높음 |
| 정상 정리 | logrotate | 정상 |
# 로그 파일 삭제 탐지 (분석 방법)
# /var/log 삭제·변경 행위(auditd watch)
sudo ausearch -k log_tamper -i --start recent 2>/dev/null | grep -E 'comm="(rm|unlink|truncate)"' | grep '/var/log' | tail
# 로그 파일 급작스런 크기 0·소멸
sudo find /var/log -maxdepth 1 -name '*.log' -size 0 2>/dev/null
ls -la /var/log/secure /var/log/messages 2>/dev/null
$ (로그 삭제 행위) (없음 또는 logrotate만)
$ (크기 0 로그) (없음)
로그 삭제가 logrotate 정상 정리에 그치고, 보안 로그가 갑자기 크기 0이 되거나 사라지지 않은 상태가 정상입니다.
$ (로그 삭제 행위)
comm="rm" auid=www-data /var/log/secure (인증 로그 삭제)
comm="bash" proctitle="cat /dev/null > /var/log/audit/audit.log"
$ (크기 0 로그)
/var/log/secure 0바이트 (비워짐)
로그 파일 삭제 분석입니다(가상의 예시).
[공격 흔적] web01 침투·권한 상승 로그 존재
↓ (흔적 제거)
rm /var/log/secure (로컬 인증 로그 삭제)
> /var/log/audit/audit.log (감사 로그 비우기)
↓ (탐지)
① auditd watch → 삭제 행위 "log_tamper" 기록
② 중앙 수집 → 삭제 전 로그 사본 보존
↓
= 로그를 지워도 지운 행위+사본이 남음 → 정탐·복원
| 관찰 | 해석 |
|---|---|
| rm /var/log | 로그 삭제 |
| > 파일 | 내용 비우기 |
| watch 기록 | 삭제 행위 포착 |
| 중앙 사본 | 원본 복원 |
삭제 행위 기록 + 중앙 사본이 로그 삭제 탐지·복원의 핵심입니다.
rm·truncate·> 파일로 보안 로그를 통째 지우는 기본 방어 회피입니다.<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_h,defense_evasion,">
<rule id="107080" level="13">
<if_sid>107000</if_sid>
<field name="audit.key">log_tamper</field>
<field name="audit.comm" type="pcre2">^(rm|unlink|truncate|shred)$</field>
<field name="audit.file" type="pcre2">^/var/log/</field>
<description>보안 로그 파일 삭제·비우기(흔적 제거)</description>
<mitre><id>T1070.002</id></mitre>
</rule>
</group>
logrotate는 화이트리스트 예외로 둡니다. 삭제 행위와 중앙 수집본을 상관해 복원·분석합니다.
| 삭제 방식 | 명령 |
|---|---|
| 파일 삭제 | rm /var/log/* |
| 내용 비우기 | > 파일·truncate |
| /dev/null 덮기 | cat /dev/null > |
| 디렉터리 삭제 | rm -rf /var/log |
| 면접 포인트 | "로그 삭제는 기본 방어 회피 — watch가 행위를, 중앙 수집이 원본을 남김" |
다음 편 360. 방어 회피·흔적 삭제 — 로그 변조·선택적 삭제 탐지 에서는 로그 변조·선택적 삭제를 다루는 로그 변조·선택적 삭제 탐지를 다룹니다.
이전 편: 358. 방어 회피·흔적 삭제 — 방어 회피·흔적 삭제 판정 기준
📚 시리즈 전체 보기: 시스템 보안 · 취약점