시스템 보안 · 취약점 › D. 권한 변경 이상 징후 · 36/50편 (전체 186/450)
학습 단계: sudo·PAM·capability 권한 변경
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
4단계를 마무리하며, D영역 전체의 root 권한 획득 경로를 하나의 지도로 종합합니다. D05에서 매핑한 경로를 이제 각 경로의 탐지 편과 연결해, "모든 길"을 한눈에 봅니다.
권한 변경 → root 획득 경로 지도
① SUID 경로: 비트 설정(D22)·신규(D25)·비표준(D26) → 바이너리 root
② sudo 경로: sudoers(D29)·sudoers.d(D30)·NOPASSWD(D31) → sudo root
③ PAM 경로: pam 변조(D33)·permit/nullok(D34) → 인증 우회 root
④ capability: setcap(D27) → cap_setuid root
⑤ 그룹 경로: 특권 그룹(D35)·소유권(D21) → 그룹/파일 root
공통 전제: C영역 정찰로 경로 탐색 → D영역 변경으로 경로 생성
공격자는 이 중 하나만 성공하면 root를 얻으므로, 방어는 모든 경로를 동시에 감시해야 합니다.
| 경로 | 핵심 탐지 | 탐지 편 |
|---|---|---|
| SUID | 기준선 diff·화이트리스트 | D22·25·26 |
| sudo | 와치·FIM·NOPASSWD 내용 | D29·30·31 |
| PAM | 와치·permit/nullok 내용 | D33·34 |
| capability | getcap diff | D27 |
| 그룹·소유권 | 멤버·소유권 기준선 | D21·35 |
# root 획득 경로 종합 점검 (분석 방법)
echo "① SUID:" $(diff /root/baseline/suid_base.txt <(sudo find / -xdev -perm -4000 -type f 2>/dev/null|sort)|grep -c '^>')
echo "② sudoers:" $(sudo grep -rc NOPASSWD /etc/sudoers /etc/sudoers.d/ 2>/dev/null|paste -sd+|bc 2>/dev/null)
echo "③ PAM:" $(sudo grep -rlE 'pam_permit\.so|nullok' /etc/pam.d/ 2>/dev/null|wc -l)
echo "④ cap:" $(diff /root/baseline/caps_base.txt <(sudo getcap -r / 2>/dev/null|sort)|grep -c '^>')
echo "⑤ 특권그룹:" $(for g in wheel sudo docker lxd;do getent group $g;done 2>/dev/null|wc -l)
① SUID: 0 ② sudoers: 0 ③ PAM: 0 ④ cap: 0 ⑤ 특권그룹: (기준선 일치)
5개 경로 모두 기준선과 일치해, 새로운 root 획득 경로가 없는 상태가 정상입니다.
① SUID: 1 ② sudoers: 1(NOPASSWD) ③ PAM: 1 ④ cap: 1 ⑤ 특권그룹: devops 추가
root 획득 경로 종합 지도입니다(가상의 예시).
[C영역 정찰] 경로 탐색(SUID·sudo·cap·그룹)
↓
[D영역 변경] 경로 생성
├ SUID 설정 ──┐
├ sudoers 추가 ┤
├ PAM 변조 ───┼→ root 획득
├ setcap ─────┤
└ 특권 그룹 ───┘
↓
[상승 실행] 각 경로로 root (별도 탐지)
| 경로 수 | 의미 |
|---|---|
| 0 | 정상 |
| 1 | 단일 경로(조사) |
| 2+ | 다중 백도어(심각) |
여러 경로가 동시에 생기면 공격자가 중복 상승을 확보한 심각한 상태입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_d,privilege,">
<!-- 여러 상승 경로가 짧은 시간에 생성(다중 백도어) -->
<rule id="103340" level="15" frequency="3" timeframe="900">
<if_matched_sid>103200,103270,103310,103250,103330</if_matched_sid>
<same_field>audit.session</same_field>
<description>동일 세션 내 다중 root 획득 경로 생성(심각)</description>
<mitre><id>T1548</id></mitre>
</rule>
</group>
여러 경로 룰(D22~35)을 상관해 다중 백도어를 최고 레벨(15)로 경보합니다.
| 경로 | 핵심 탐지 |
|---|---|
| SUID | 기준선 diff·화이트리스트 |
| sudo | 와치·NOPASSWD 내용 |
| PAM | permit/nullok 내용 |
| capability | getcap diff |
| 그룹·소유권 | 멤버·소유권 기준선 |
| 면접 포인트 | "root 경로는 5갈래 — 하나만 성공해도 root, 전수 감시가 방어의 전제" |
다음 편 187. 권한 변경 이상 — setuid/setgid 호출 이상 탐지 에서는 5단계로 넘어가 setuid/setgid 호출 이상 탐지를 다룹니다.
이전 편: 185. 권한 변경 이상 — 특권 그룹 추가와 권한 변경 연계
📚 시리즈 전체 보기: 시스템 보안 · 취약점