시스템 보안 · 취약점 › H. 방어 회피 · 흔적 삭제 징후 · 21/50편 (전체 371/450)
학습 단계: 보안 기능 무력화·은닉
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
SELinux·AppArmor는 강제 접근 통제(MAC)로, 프로세스가 허용된 작업만 하도록 제약합니다. 공격자는 이를 비활성화·permissive 전환해 익스플로잇·권한 상승·파일 접근의 제약을 제거합니다.
SELinux·AppArmor 무력화 패턴
SELinux 비활성: setenforce 0 (permissive 즉시 전환)
/etc/selinux/config SELINUX=disabled (영구)
AppArmor 비활성: aa-complain/aa-disable, systemctl stop apparmor
프로파일 제거: 특정 프로파일만 해제
효과: MAC 제약 제거 → 익스플로잇·접근 자유화
탐지: setenforce 0·config 변경·apparmor 중지 명령
핵심은 "강제 접근 통제를 끄는 행위"입니다. setenforce 0·config의 disabled 전환·AppArmor 중지가 위험 신호이며, 종종 권한 상승 시도 직전에 나타납니다.
| 무력화 | 명령 | 효과 |
|---|---|---|
| permissive 전환 | setenforce 0 | 즉시 제약 해제 |
| 영구 비활성 | config disabled | 재부팅 후 off |
| AppArmor 중지 | systemctl stop apparmor | MAC off |
| 프로파일 해제 | aa-disable | 선택 해제 |
| 정상 운영 | enforcing | 정상 |
# SELinux·AppArmor 비활성화 탐지 (분석 방법)
# setenforce·config 변경·apparmor 조작 명령
sudo ausearch -k sec_disable,proc_exec -i --start recent 2>/dev/null | grep -E 'setenforce|selinux/config|aa-disable|aa-complain|systemctl.*apparmor' | tail
# 현재 상태 확인
getenforce 2>/dev/null # Enforcing/Permissive/Disabled
sudo aa-status 2>/dev/null | head -3
$ (MAC 조작) (없음)
$ getenforce → Enforcing (정상)
$ aa-status → profiles loaded (정상)
MAC 조작 명령이 없고, SELinux가 Enforcing·AppArmor 프로파일이 로드된(강제 가동) 상태가 정상입니다.
$ (MAC 조작)
proctitle="setenforce 0" (SELinux permissive 전환)
/etc/selinux/config: SELINUX=disabled (영구 비활성)
proctitle="systemctl stop apparmor"
$ getenforce → Permissive (제약 해제됨)
SELinux·AppArmor 무력화 분석입니다(가상의 예시).
[공격 준비] 권한 상승 익스플로잇 시도 예정
SELinux가 익스플로잇 제약 중
↓ (제약 제거)
setenforce 0 (SELinux permissive)
systemctl stop apparmor
↓ (제약 해제 후)
권한 상승 익스플로잇 실행(D영역) — 제약 없이 성공
↕ (탐지)
[auditd] setenforce 0·config 변경 명령 기록
↓
= MAC 무력화 직후 권한 상승 → 연계 정탐
| 관찰 | 해석 |
|---|---|
| setenforce 0 | 즉시 무력화 |
| config disabled | 영구 비활성 |
| 직후 권한 상승 | 공격 연계 |
MAC 무력화 + 직후 권한 상승 연계가 핵심 탐지 포인트입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_h,defense_evasion,">
<rule id="107200" level="13">
<if_sid>107000</if_sid>
<field name="audit.proctitle" type="pcre2">setenforce\s+0|SELINUX=disabled|aa-disable|aa-complain|systemctl\s+(stop|disable)\s+apparmor</field>
<description>SELinux·AppArmor 비활성화(MAC 무력화)</description>
<mitre><id>T1562.001</id></mitre>
</rule>
</group>
D영역 권한 상승 룰과 상관해 MAC 무력화 직후 상승 연계를 포착합니다. 정상 운영에서 permissive 전환은 드물어 높은 레벨로 경보합니다.
| 무력화 | 명령 |
|---|---|
| permissive 전환 | setenforce 0 |
| 영구 비활성 | config disabled |
| AppArmor 중지 | systemctl stop apparmor |
| 프로파일 해제 | aa-disable |
| 면접 포인트 | "MAC 무력화는 권한 상승 전조 — setenforce 0+직후 상승 연계가 핵심" |
다음 편 372. 방어 회피·흔적 삭제 — auditd 규칙 삭제·무력화 탐지 에서는 auditd 규칙 삭제·무력화를 다루는 auditd 규칙 삭제·무력화 탐지를 다룹니다.
이전 편: 370. 방어 회피·흔적 삭제 — 방화벽·iptables 규칙 변조 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점