시스템 보안 · 취약점 › D. 권한 변경 이상 징후 · 27/50편 (전체 177/450)
학습 단계: 소유권·특수권한 이상
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
Capability는 root 권한을 세분화한 것으로, SUID 없이도 특정 권한만 바이너리에 줄 수 있습니다. setcap으로 부여하며, SUID 스캔에 잡히지 않아 은밀한 상승 경로가 됩니다.
Capability 상승 경로
cap_setuid+ep → UID 변경 가능(직접 상승)
cap_dac_override+ep → 모든 파일 접근(권한 무시)
cap_sys_admin+ep → 광범위 관리 권한
setcap cap_setuid+ep /usr/bin/python3 → 파이썬으로 상승
특징: SUID 비트 없음 → 일반 SUID 스캔에 안 잡힘
핵심은 "SUID 스캔만으로는 놓친다"는 점입니다. getcap -r /로 별도 감사해야 합니다.
| Capability | 효과 | 위험 |
|---|---|---|
cap_setuid | UID 변경(상승) | 매우 높음 |
cap_dac_override | 권한 무시 접근 | 높음 |
cap_sys_admin | 광범위 관리 | 높음 |
cap_net_raw | 패킷 조작 | 중간 |
| 신규 setcap | 기준선 이탈 | 조사 |
# Capability 설정 변경 탐지 (분석 방법)
# setcap 실행 이벤트(auditd에서 setcap 실행·capset 감사)
sudo ausearch -k perm_change,priv_change -i --start recent 2>/dev/null | grep -E 'setcap|comm="setcap"' | tail
# 현재 capability 목록과 기준선 비교(D05)
diff /root/baseline/caps_base.txt <(sudo getcap -r / 2>/dev/null | sort)
$ (setcap 이벤트) (없음)
$ (capability 기준선 비교) (차이 없음)
setcap 실행이 없고, capability 목록이 기준선과 일치하는 상태가 정상입니다(정상 cap: ping 등).
$ (setcap 이벤트)
03:25 auid=devops proctitle="setcap cap_setuid+ep /usr/bin/python3.9"
$ (capability 기준선 비교)
> /usr/bin/python3.9 cap_setuid+ep
cap_setuid+ep 부여 → 파이썬 한 줄로 UID 0 상승 가능Capability 설정 흐름입니다(가상의 예시 로그).
type=SYSCALL ... comm="setcap" auid=devops key="perm_change"
type=PROCTITLE ... proctitle=setcap cap_setuid+ep /usr/bin/python3.9
[기준선 이탈] getcap diff > python3.9 cap_setuid+ep
[상승] python3 -c 'import os;os.setuid(0);...' → root (별도 탐지)
| 흔적 | 해석 |
|---|---|
| comm=setcap | capability 부여 |
| cap_setuid+ep | 상승성 권한 |
| 대상 python3 | 인터프리터 |
| SUID 없음 | 은밀(스캔 회피) |
setcap 이벤트와 getcap 기준선 이탈을 함께 봐야 은밀한 상승을 포착합니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_d,perm_change,capability,">
<rule id="103250" level="13">
<if_sid>103000</if_sid>
<field name="audit.proctitle" type="pcre2">setcap\s+.*(cap_setuid|cap_dac_override|cap_sys_admin|cap_sys_ptrace)</field>
<description>상승성 capability 부여(setcap, SUID 없는 상승 경로)</description>
<mitre><id>T1548</id></mitre>
</rule>
</group>
setcap 감사는 execve 규칙으로 설정하고(D03), getcap 기준선 diff는 주기 스캔으로 수집합니다. C27(capability 정찰)과 세션 상관하면 정찰→부여를 포착합니다.
| Capability | 위험 |
|---|---|
| cap_setuid | UID 변경(직접 상승) |
| cap_dac_override | 권한 무시 접근 |
| cap_sys_admin | 광범위 관리 |
| 신규 setcap | 조사 |
| 면접 포인트 | "Capability는 SUID 없는 상승 경로 — getcap 기준선으로 SUID 사각지대 보완" |
다음 편 178. 권한 변경 이상 — 소유권·특수권한 변경 이상 종합 분석 에서는 3단계를 마무리하는 소유권·특수권한 변경 이상 종합 분석을 다룹니다.
이전 편: 176. 권한 변경 이상 — 비표준 경로 SUID 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점