177. 권한 변경 이상 — Capability 설정 변경 탐지

changseop lee·2026년 10월 7일

시스템 보안 · 취약점

목록 보기
177/450

시스템 보안 · 취약점 › D. 권한 변경 이상 징후 · 27/50편 (전체 177/450)
학습 단계: 소유권·특수권한 이상
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

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 /로 별도 감사해야 합니다.

2. 왜 중요한가

  • Capability는 SUID 없이 상승 권한을 주므로, SUID만 보면 놓치는 사각지대입니다.
  • cap_setuid·cap_dac_override 등 상승성 capability가 특히 위험합니다.
  • setcap 이벤트 감사와 getcap 기준선 비교를 함께 해야 완전한 탐지입니다.

3. 핵심 명령어 / 설정

Capability효과위험
cap_setuidUID 변경(상승)매우 높음
cap_dac_override권한 무시 접근높음
cap_sys_admin광범위 관리높음
cap_net_raw패킷 조작중간
신규 setcap기준선 이탈조사

4. 실습 (실습 예시)

# 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)

5. 정상 상태

$ (setcap 이벤트) (없음)
$ (capability 기준선 비교) (차이 없음)

setcap 실행이 없고, capability 목록이 기준선과 일치하는 상태가 정상입니다(정상 cap: ping 등).

6. 이상 상태

$ (setcap 이벤트)
03:25 auid=devops proctitle="setcap cap_setuid+ep /usr/bin/python3.9"
$ (capability 기준선 비교)
> /usr/bin/python3.9 cap_setuid+ep
  • python3에 cap_setuid+ep 부여 → 파이썬 한 줄로 UID 0 상승 가능
  • SUID 비트가 없어 일반 SUID 스캔엔 안 잡힘(은밀)
  • 인터프리터에 상승성 capability → 정탐(고위험)

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

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=setcapcapability 부여
cap_setuid+ep상승성 권한
대상 python3인터프리터
SUID 없음은밀(스캔 회피)

setcap 이벤트와 getcap 기준선 이탈을 함께 봐야 은밀한 상승을 포착합니다.

8. SOC 관제 포인트

  • Capability는 SUID 없이 상승 권한을 주는 은밀한 경로입니다.
  • cap_setuid·cap_dac_override 등 상승성 capability가 핵심 위험입니다.
  • setcap 이벤트 감사 + getcap 기준선 비교로 SUID 사각지대를 메웁니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 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 정찰)과 세션 상관하면 정찰→부여를 포착합니다.

10. 대응 방법

  1. 초기 확인 — 부여된 capability·대상 바이너리·주체·시점과 기준선 이탈을 확인합니다.
  2. 범위 확인 — 상승성 capability(cap_setuid 등) 여부와 부여 후 실행을 확인합니다.
  3. 증거 확보 — setcap 이벤트와 getcap 기준선·대상 바이너리를 보존합니다.
  4. 차단/조치 — 비인가 capability는 제거(setcap -r)·격리·세션 종료를 진행합니다.
  5. 재발 방지 — setcap 감사와 getcap 기준선 비교를 함께 운영합니다.

11. 핵심 정리

Capability위험
cap_setuidUID 변경(직접 상승)
cap_dac_override권한 무시 접근
cap_sys_admin광범위 관리
신규 setcap조사
면접 포인트"Capability는 SUID 없는 상승 경로 — getcap 기준선으로 SUID 사각지대 보완"

12. 다음 편 예고

다음 편 178. 권한 변경 이상 — 소유권·특수권한 변경 이상 종합 분석 에서는 3단계를 마무리하는 소유권·특수권한 변경 이상 종합 분석을 다룹니다.


이전 편: 176. 권한 변경 이상 — 비표준 경로 SUID 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글