시스템 보안 · 취약점 › H. 방어 회피 · 흔적 삭제 징후 · 20/50편 (전체 370/450)
학습 단계: 보안 기능 무력화·은닉
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
방화벽(iptables·nftables·firewalld)은 네트워크 접근 통제의 핵심입니다. 공격자는 방화벽을 비활성화하거나 규칙을 변조해 C2·데이터 유출 통신을 허용하고, 로그 전송 차단(H15)에도 악용합니다.
방화벽 규칙 변조 패턴
전체 비활성화: iptables -F(규칙 삭제), systemctl stop firewalld
허용 규칙 추가: 공격자 IP·포트 허용(C2·유출용)
로깅 규칙 제거: 방화벽 로그 규칙 삭제
정책 변경: 기본 정책을 ACCEPT로(전체 허용)
중앙 전송 차단: 로그 서버 포트 차단(H15 연계)
탐지: iptables -F/-A·firewalld 변경·정책 전환 명령
핵심은 "접근 통제를 여는 방향의 변경"입니다. 규칙 전체 삭제(-F)·허용 규칙 추가·기본 정책 ACCEPT 전환이 위험 신호입니다.
| 변조 | 명령 | 영향 |
|---|---|---|
| 전체 삭제 | iptables -F | 통제 해제 |
| 서비스 중지 | systemctl stop firewalld | 방화벽 off |
| 허용 추가 | iptables -A ... ACCEPT | C2·유출 허용 |
| 정책 전환 | -P INPUT ACCEPT | 전체 허용 |
| 로깅 제거 | LOG 규칙 삭제 | 흔적 제거 |
# 방화벽·iptables 변조 탐지 (분석 방법)
# 방화벽 규칙 변경·비활성화 명령
sudo ausearch -k sec_disable,proc_exec -i --start recent 2>/dev/null | grep -E 'iptables|nft|firewall-cmd|ufw' | tail
# 현재 규칙·기본 정책 확인
sudo iptables -L -n 2>/dev/null | grep -E 'policy|Chain' | head
# firewalld 상태
systemctl is-active firewalld 2>/dev/null
$ (방화벽 변경) (없음 또는 승인 변경)
$ (기본 정책) policy DROP (제한적 — 정상)
$ firewalld active
방화벽 변경이 승인 범위에 그치고, 기본 정책이 DROP(제한적)이며 방화벽이 가동되는 상태가 정상입니다.
$ (방화벽 변경)
proctitle="iptables -F" (전체 규칙 삭제)
proctitle="iptables -P INPUT ACCEPT" (기본 허용 전환)
proctitle="iptables -A OUTPUT -d 203.0.113.50 -j ACCEPT" (유출 허용)
$ (기본 정책) policy ACCEPT (전체 허용 — 비정상)
방화벽 규칙 변조 분석입니다(가상의 예시).
[정상] 기본 정책 DROP, 필요한 포트만 허용
↓ (공격자 변조)
① iptables -F (규칙 전체 삭제)
② iptables -P OUTPUT ACCEPT (아웃바운드 전체 허용)
③ -A OUTPUT -d 203.0.113.50 ACCEPT (C2 허용)
↓ (결과)
C2·데이터 유출 통신 자유화 + 로그 서버 포트 차단
↕ (탐지)
[auditd] iptables -F/-A·정책 전환 명령 기록
↓
= 통제를 여는 방향 변경 → 방어 회피 → 정탐
| 변조 | 해석 |
|---|---|
| -F | 통제 해제 |
| -P ACCEPT | 전체 허용 |
| 외부 허용 | C2 경로 |
| LOG 제거 | 흔적 제거 |
통제를 여는 방향의 변경이 방화벽 변조 탐지의 핵심입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_h,defense_evasion,">
<rule id="107190" level="13">
<if_sid>107000</if_sid>
<field name="audit.proctitle" type="pcre2">iptables\s+-F|iptables\s+-P\s+\S+\s+ACCEPT|nft\s+flush|systemctl\s+(stop|disable)\s+firewalld|ufw\s+disable</field>
<description>방화벽 규칙 전체 삭제·전체 허용 전환(통제 무력화)</description>
<mitre><id>T1562.004</id></mitre>
</rule>
</group>
방화벽 규칙 변경을 중앙에서 모니터링하고, 기본 정책 전환·전체 삭제는 높은 레벨로 경보합니다. 승인 변경은 예외 처리합니다.
| 변조 | 명령 |
|---|---|
| 전체 삭제 | iptables -F |
| 서비스 중지 | systemctl stop firewalld |
| 허용 추가 | -A ... ACCEPT |
| 정책 전환 | -P INPUT ACCEPT |
| 면접 포인트 | "방화벽 변조는 통제를 여는 방향 — -F·기본 ACCEPT가 C2·유출 개방 신호" |
다음 편 371. 방어 회피·흔적 삭제 — SELinux·AppArmor 비활성화 탐지 에서는 SELinux·AppArmor 비활성화를 다루는 SELinux·AppArmor 비활성화 탐지를 다룹니다.
이전 편: 369. 방어 회피·흔적 삭제 — 보안 도구 비활성화·중지 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점