시스템 보안 · 취약점 › D. 권한 변경 이상 징후 · 31/50편 (전체 181/450)
학습 단계: sudo·PAM·capability 권한 변경
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
sudoers 규칙 중 NOPASSWD는 특히 위험합니다. 이 지시어가 있으면 sudo 실행 시 비밀번호를 묻지 않아, 자격증명 없이도 상승할 수 있습니다. 공격자는 NOPASSWD 규칙을 심어 "무인·반복 상승"을 확보합니다.
NOPASSWD 위험
일반: devops ALL=(ALL) ALL → sudo 시 비번 필요
NOPASSWD: devops ALL=(ALL) NOPASSWD: ALL → 비번 없이 root
부분: devops ALL=(ALL) NOPASSWD: /bin/bash → 특정 명령 비번 없이
위험: 비번 없는 상승 = 세션 탈취만으로 root / 자동화 상승
NOPASSWD는 sudoers 변경(D29)·sudoers.d(D30)의 어디에 들어가도 위험하므로, 지시어 자체를 핵심 탐지 대상으로 삼습니다.
| NOPASSWD 패턴 | 효과 | 위험 |
|---|---|---|
NOPASSWD: ALL | 전체 비번 없는 상승 | 매우 높음 |
NOPASSWD: /bin/bash | 쉘 비번 없이 | 매우 높음 |
NOPASSWD: 특정명령 | 명령 한정 | 높음 |
| 비관리 계정 대상 | 탈취 상승 | 높음 |
| 정상 자동화 | 승인된 배포 | 정상(맥락) |
# NOPASSWD 추가 탐지 (분석 방법)
# sudoers 변경 이벤트 중 NOPASSWD(내용은 FIM/로그로)
sudo ausearch -k sudoers_change -i --start recent 2>/dev/null | grep -E '/etc/sudoers' | tail
# 현재 NOPASSWD 규칙 식별(분석용 점검)
sudo grep -rnE 'NOPASSWD' /etc/sudoers /etc/sudoers.d/ 2>/dev/null
$ (sudoers 변경) (없음)
$ (NOPASSWD 규칙)
/etc/sudoers.d/10-backup: backup ALL=(ALL) NOPASSWD: /usr/bin/rsync (승인된 자동화)
NOPASSWD가 승인된 자동화(특정 명령 한정)에만 있고, 신규 추가가 없는 상태가 정상입니다.
$ (sudoers 변경)
03:40 auid=devops /etc/sudoers.d/99-devops (신규)
$ (NOPASSWD 규칙)
/etc/sudoers.d/99-devops: devops ALL=(ALL) NOPASSWD: ALL (신규, 전체)
NOPASSWD: ALL 신규 추가 → 비번 없이 모든 root 명령NOPASSWD 추가 흐름입니다(가상의 예시 로그).
[규칙 추가] /etc/sudoers.d/99-devops: devops ALL=(ALL) NOPASSWD: ALL (FIM)
↓
[탐지] NOPASSWD + ALL 패턴 매칭
↓
[상승] sudo -n id → uid=0 (비번 없이, B영역 37)
↓
[지속] 스크립트가 반복 상승(무인)
| 흔적 | 해석 |
|---|---|
| NOPASSWD: ALL | 비번 없는 전체 상승 |
| 신규 추가 | 공격 규칙 |
| sudo -n 성공 | 상승 확정 |
| 반복 실행 | 자동화·지속 |
NOPASSWD 추가(FIM)+이후 sudo -n 성공(B37)을 연계하면 비번 없는 상승을 확정합니다.
NOPASSWD: ALL·쉘 대상·비관리 계정 추가가 최고 위험입니다.<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_d,sudoers_change,">
<!-- FIM/로그에서 sudoers 내 NOPASSWD 추가 라인 탐지 -->
<rule id="103290" level="14">
<if_group>syscheck</if_group>
<field name="file" type="pcre2">/etc/sudoers(\.d/.*)?$</field>
<field name="changed_content" type="pcre2">NOPASSWD</field>
<description>sudoers에 NOPASSWD 규칙 추가(비번 없는 상승)</description>
<mitre><id>T1548.003</id></mitre>
</rule>
</group>
내용 기반 탐지는 FIM의 변경 내용(report_changes) 또는 로그 파서로 구현합니다. NOPASSWD 추가는 level 14로 둡니다.
| NOPASSWD 패턴 | 위험 |
|---|---|
| NOPASSWD: ALL | 전체 비번 없는 상승 |
| NOPASSWD: 쉘 | 쉘 비번 없이 |
| 비관리 계정 | 탈취 상승 |
| 정상 자동화 | 맥락 확인 |
| 면접 포인트 | "NOPASSWD는 비번 없는 상승 — 세션 탈취만으로 root, 지시어 자체가 탐지 대상" |
다음 편 182. 권한 변경 이상 — sudo 권한 상승 실행 탐지 에서는 sudo 실행 자체의 이상을 다루는 sudo 권한 상승 실행 탐지를 다룹니다.
이전 편: 180. 권한 변경 이상 — sudoers.d 신규 규칙 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점