371. 방어 회피·흔적 삭제 — SELinux·AppArmor 비활성화 탐지

changseop lee·7일 전

시스템 보안 · 취약점

목록 보기
371/450

시스템 보안 · 취약점 › H. 방어 회피 · 흔적 삭제 징후 · 21/50편 (전체 371/450)
학습 단계: 보안 기능 무력화·은닉
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

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 중지가 위험 신호이며, 종종 권한 상승 시도 직전에 나타납니다.

2. 왜 중요한가

  • SELinux·AppArmor는 익스플로잇·권한 상승을 제약하므로, 비활성화는 공격 준비 신호입니다.
  • setenforce 0(permissive)는 즉시 MAC을 무력화하고 로그만 남깁니다.
  • config SELINUX=disabled는 재부팅 후 영구 비활성화로 더 위험합니다.

3. 핵심 명령어 / 설정

무력화명령효과
permissive 전환setenforce 0즉시 제약 해제
영구 비활성config disabled재부팅 후 off
AppArmor 중지systemctl stop apparmorMAC off
프로파일 해제aa-disable선택 해제
정상 운영enforcing정상

4. 실습 (실습 예시)

# 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

5. 정상 상태

$ (MAC 조작) (없음)
$ getenforce → Enforcing (정상)
$ aa-status → profiles loaded (정상)

MAC 조작 명령이 없고, SELinux가 Enforcing·AppArmor 프로파일이 로드된(강제 가동) 상태가 정상입니다.

6. 이상 상태

$ (MAC 조작)
proctitle="setenforce 0" (SELinux permissive 전환)
/etc/selinux/config: SELINUX=disabled (영구 비활성)
proctitle="systemctl stop apparmor"
$ getenforce → Permissive (제약 해제됨)
  • setenforce 0 → SELinux 즉시 permissive(제약 해제)
  • config disabled → 재부팅 후 영구 비활성
  • MAC 무력화 → 익스플로잇·권한 상승 제약 제거 → 정탐(권한 상승 전조)

7. 로그 분석 (분석 방법)

SELinux·AppArmor 무력화 분석입니다(가상의 예시).

[공격 준비] 권한 상승 익스플로잇 시도 예정
   SELinux가 익스플로잇 제약 중
   ↓ (제약 제거)
setenforce 0 (SELinux permissive)
systemctl stop apparmor
   ↓ (제약 해제 후)
권한 상승 익스플로잇 실행(D영역) — 제약 없이 성공
      ↕ (탐지)
[auditd] setenforce 0·config 변경 명령 기록
   ↓
= MAC 무력화 직후 권한 상승 → 연계 정탐
관찰해석
setenforce 0즉시 무력화
config disabled영구 비활성
직후 권한 상승공격 연계

MAC 무력화 + 직후 권한 상승 연계가 핵심 탐지 포인트입니다.

8. SOC 관제 포인트

  • SELinux·AppArmor 비활성화는 강제 접근 통제(MAC)를 제거해 익스플로잇·권한 상승 제약을 없앱니다.
  • setenforce 0(즉시)·config disabled(영구)·AppArmor 중지가 위험 신호입니다.
  • MAC 무력화는 종종 권한 상승 직전에 나타나므로 연계 상관이 중요합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 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 전환은 드물어 높은 레벨로 경보합니다.

10. 대응 방법

  1. 초기 확인 — SELinux·AppArmor 상태 변경 명령(setenforce·config·aa-disable)을 확인합니다.
  2. 범위 확인 — permissive 전환·영구 비활성·프로파일 해제와 직후 권한 상승을 확인합니다.
  3. 증거 확보 — MAC 무력화 이벤트·상태·연계 이벤트를 보존합니다.
  4. 차단/조치 — MAC 무력화 정탐이면 강제 모드 복구·무력화 후 권한 상승·접근 조사를 진행합니다.
  5. 재발 방지 — SELinux·AppArmor 비활성화 탐지를 운영합니다.

11. 핵심 정리

무력화명령
permissive 전환setenforce 0
영구 비활성config disabled
AppArmor 중지systemctl stop apparmor
프로파일 해제aa-disable
면접 포인트"MAC 무력화는 권한 상승 전조 — setenforce 0+직후 상승 연계가 핵심"

12. 다음 편 예고

다음 편 372. 방어 회피·흔적 삭제 — auditd 규칙 삭제·무력화 탐지 에서는 auditd 규칙 삭제·무력화를 다루는 auditd 규칙 삭제·무력화 탐지를 다룹니다.


이전 편: 370. 방어 회피·흔적 삭제 — 방화벽·iptables 규칙 변조 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글