시스템 보안 · 취약점 › D. 권한 변경 이상 징후 · 6/50편 (전체 156/450)
학습 단계: 권한 모델·기본 개념
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
chmod는 권한 변경의 대표 명령입니다. 로그를 정확히 해석하려면 chmod의 입력(8진수/기호 모드)과 그것이 남기는 시스템 콜·인자를 알아야 합니다.
chmod 입력 방식
8진수: chmod 755 file / chmod 4755 file(SUID)
기호: chmod u+s file / chmod o+w file / chmod g-w file
재귀: chmod -R 777 dir (디렉터리 전체 — 위험)
auditd 기록
syscall: chmod(90)/fchmod(91)/fchmodat(268)
proctitle: 실제 명령줄(8진수/기호 그대로)
PATH mode: 변경 대상의 이전 모드
로그에서 proctitle이 실제 입력(4755·u+s)을 보여주고, PATH의 mode가 변경 전 상태를 담습니다.
chmod -R 777(재귀 완화)은 디렉터리 전체를 world-writable로 만들어 대규모 노출을 일으킵니다.u+s(SUID)·o+w(world-writable)는 기호 모드라도 위험 판정 대상입니다.| chmod 입력 | 의미 | 위험 |
|---|---|---|
4755/u+s | SUID 설정 | 높음(상승) |
2755/g+s | SGID 설정 | 높음 |
777/o+w | world-writable | 높음(변조) |
-R 777 | 재귀 완화 | 높음(대규모) |
755/u+x | 실행 권한(정상 범위) | 낮음 |
# chmod 로그 해석 (분석 방법)
# 권한 변경 중 위험 패턴 추출
sudo ausearch -k perm_change -i --start recent 2>/dev/null | grep -A3 'comm="chmod"' | grep -E 'proctitle|name=' | tail
# proctitle에서 SUID/world-writable/재귀 식별
sudo ausearch -k perm_change -i --start recent 2>/dev/null | grep -oE 'proctitle=chmod [^ ]+ ' | grep -E '4[0-7]{3}|u\+s|o\+w|777|-R'
$ (chmod proctitle)
proctitle=chmod 755 /var/www/html/app.sh
proctitle=chmod 640 /etc/myapp/config
관리자의 chmod가 배포·설정 범위의 정상 권한(755·640)이고, SUID·world-writable·재귀 완화가 없는 상태가 정상입니다.
$ (chmod proctitle)
proctitle=chmod 4755 /usr/bin/find (SUID)
proctitle=chmod -R 777 /var/www (재귀 world-writable)
proctitle=chmod o+w /etc/cron.d/backup (설정 변조 경로)
4755 find → SUID 상승 경로(D25)-R 777 /var/www → 웹루트 전체 world-writable(대규모 변조·웹셸)o+w cron.d → cron 설정 변조로 지속성·상승(D5·F영역)chmod 로그 해석 예시입니다(가상의 예시 로그).
type=SYSCALL ... syscall=268 success=yes auid=devops uid=0 comm="chmod" key="perm_change"
type=PATH ... name="/usr/bin/find" nametype=NORMAL mode=0100755
type=PROCTITLE ... proctitle=chmod 4755 /usr/bin/find
| 필드 | 해석 |
|---|---|
| proctitle | chmod 4755(SUID 설정) |
| PATH mode=0100755 | 변경 전: 일반 파일 755 |
| 변경 후 | 4755(SUID) — before/after(D42) |
| auid=devops uid=0 | devops가 root 권한으로 |
PATH의 mode는 변경 전 상태이고, proctitle로 변경 후 의도를 읽습니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_d,perm_change,">
<rule id="103040" level="10">
<if_sid>103000</if_sid>
<field name="audit.proctitle" type="pcre2">chmod\s+.*(o\+w|777|-R\s+[0-7]*7[0-7]{2})</field>
<description>world-writable 또는 재귀 권한 완화(chmod)</description>
<mitre><id>T1222.002</id></mitre>
</rule>
</group>
SUID 설정은 D02(103010), world-writable·재귀는 위 룰로 탐지합니다. proctitle 필드 추출은 wazuh-logtest로 확인합니다.
| 입력 | 위험 |
|---|---|
| 4755/u+s | SUID(상승) |
| 777/o+w | world-writable(변조) |
| -R 777 | 재귀 완화(대규모) |
| 755/u+x | 정상 범위 |
| 면접 포인트 | "proctitle은 변경 후 입력, PATH mode는 변경 전 — 둘로 before/after" |
다음 편 157. 권한 변경 이상 — chown·chgrp 동작 원리와 로그 흔적 에서는 소유권 변경 명령인 chown·chgrp 동작 원리와 로그 흔적을 다룹니다.
이전 편: 155. 권한 변경 이상 — 권한 상승 경로와 권한 변경의 관계
📚 시리즈 전체 보기: 시스템 보안 · 취약점