시스템 보안 · 취약점 › D. 권한 변경 이상 징후 · 12/50편 (전체 162/450)
학습 단계: 파일 권한 변경 이상
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
디렉터리 권한은 파일과 의미가 다릅니다. 디렉터리의 쓰기 권한은 그 안에 파일을 만들거나 삭제할 수 있게 하고, 실행(x) 권한은 진입(접근)을 허용합니다. 디렉터리 완화는 파일 주입·삭제 경로가 됩니다.
디렉터리 권한 의미
쓰기(w): 내부 파일 생성·삭제·이름변경
실행(x): 디렉터리 진입·내부 접근
chmod 777 dir → 누구나 파일 주입·삭제
chmod -R 777 dir → 하위 전체 완화(대규모)
위험: 중요 디렉터리 쓰기 완화 / 재귀 완화
디렉터리가 world-writable이 되면 Sticky Bit(D24)가 없는 한 누구나 내부 파일을 삭제·교체할 수 있습니다.
/etc·/usr/bin 같은 시스템 디렉터리 완화는 바이너리·설정 교체로 이어집니다.-R) 완화는 하위 수백 개 파일을 한 번에 노출시킵니다.| 변경 | 대상 | 위험 |
|---|---|---|
chmod 777 dir | 시스템 디렉터리 | 높음(주입·교체) |
chmod -R 777 | 디렉터리 트리 | 높음(대규모) |
chmod o+w | 공유 디렉터리 | 중간 |
| Sticky 제거 | /tmp 등 | 중간(삭제 허용) |
chmod 755 | 일반 디렉터리 | 낮음 |
# 디렉터리 권한 변경 탐지 (분석 방법)
# 재귀/완화 디렉터리 변경 이벤트
sudo ausearch -k perm_change -i --start recent 2>/dev/null | grep -E 'chmod.*-R|chmod.*777' | tail
# 현재 world-writable 디렉터리(Sticky 없는)
find / -xdev -type d -perm -0002 ! -perm -1000 2>/dev/null | head
$ (재귀/완화 변경) (없음)
$ (world-writable 디렉터리) (없음 또는 정상 공유 디렉터리만)
디렉터리 권한이 기준선을 유지하고(755/750), Sticky 없는 world-writable 디렉터리가 없는 상태가 정상입니다.
$ (재귀/완화 변경)
02:35 auid=devops proctitle="chmod -R 777 /var/www/html"
$ (world-writable 디렉터리)
/var/www/html (and 320 subdirs)
/var/www/html 재귀 777 → 웹루트 전체에 파일 주입 가능(웹셸·변조)디렉터리 권한 변경 흐름입니다(가상의 예시 로그).
type=PROCTITLE ... proctitle=chmod -R 777 /var/www/html auid=devops key="perm_change"
type=PATH ... name="/var/www/html" (and recursive)
[이후] /var/www/html/shell.php 생성 (파일 주입)
| 관찰 | 해석 |
|---|---|
| chmod -R 777 | 재귀 완화(대규모) |
| 웹루트 대상 | 웹셸 주입 가능 |
| 이후 파일 생성 | 주입 실행 |
| 320 하위 | 대규모 노출 |
재귀 완화 직후 파일 생성(FIM/프로세스)을 연계해 주입을 포착합니다.
-R) 완화를 높은 우선순위로 봅니다.<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_d,perm_change,">
<rule id="103100" level="11">
<if_sid>103000</if_sid>
<field name="audit.proctitle" type="pcre2">chmod\s+-R\s+[0-7]*7[0-7]{2}|chmod\s+777.*(/var/www|/etc|/usr|/opt)</field>
<description>디렉터리 재귀/world-writable 권한 완화</description>
<mitre><id>T1222.002</id></mitre>
</rule>
</group>
재귀 완화는 단일 proctitle로도 탐지 가능합니다. 완화된 디렉터리는 FIM으로 내부 파일 생성을 감시합니다.
| 변경 | 위험 |
|---|---|
| 777 시스템 디렉터리 | 주입·교체 |
| -R 777 | 재귀 대규모 완화 |
| o+w 공유 디렉터리 | 파일 주입 |
| Sticky 제거 | 삭제 허용 |
| 면접 포인트 | "디렉터리 쓰기 완화는 내부 파일 주입·삭제 경로 — 재귀는 대규모" |
다음 편 163. 권한 변경 이상 — world-writable 전환 탐지 에서는 world-writable 전환을 집중적으로 다루는 world-writable 전환 탐지를 다룹니다.
이전 편: 161. 권한 변경 이상 — 실행 파일 권한 변경 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점