시스템 보안 · 취약점 › D. 권한 변경 이상 징후 · 1/50편 (전체 151/450)
학습 단계: 권한 모델·기본 개념
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
C영역이 "상승 경로를 찾는 정찰"이었다면, D영역은 공격자가 그 경로로 권한을 실제 바꾸는 행위를 탐지합니다. 권한 변경은 권한 상승·지속성·방어 무력화의 실행 단계입니다.
정찰(C27·28: SUID·sudo 경로 탐색)
↓
권한 변경 ← D영역 (chmod·chown·setuid·sudoers 변경)
↓
권한 상승 완성 → 지속성(F) · 중요 정보 접근(E) · 로그 변조(G)
권한 변경의 세 목적
① 권한 상승: SUID 설정, sudoers 추가 → root 획득
② 접근 확보: 중요 파일 권한 완화 → 읽기/쓰기
③ 지속성: 실행 파일·설정 권한 조작 → 재실행 보장
D영역은 명령 사용법이 아니라, 권한 변경 행위가 남기는 흔적(auditd·FIM)과 정상/비정상 구분에 초점을 둡니다.
| 변경 유형 | 명령 | 위험 방향 |
|---|---|---|
| 권한 비트 | chmod | 완화(644→777), SUID 설정(C27) |
| 소유자 | chown | 탈취(root→user), 권한 획득 |
| 그룹 | chgrp | 특권 그룹 소유 |
| capability | setcap | 비표준 권한 부여 |
| 정책 | visudo·sudoers.d | 권한 규칙 추가 |
# 권한 변경 탐지의 기반 감사 규칙 (실습 예시 — /etc/audit/rules.d/60-perm.rules)
# 권한/소유권 변경 시스템 콜 감시
-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -F auid>=1000 -F auid!=unset -k perm_change
-a always,exit -F arch=b64 -S chown,fchown,lchown,fchownat -F auid>=1000 -F auid!=unset -k perm_change
-a always,exit -F arch=b64 -S setxattr,fsetxattr -k perm_change
# 세션별 권한 변경 흐름 확인 (분석 방법)
sudo ausearch -k perm_change -i --start recent | grep -E 'chmod|chown' | tail
A영역 04편(권한 매트릭스)·30편(감사 정책)에서 다룬 감사 기반 위에 권한 변경 전용 키(perm_change)를 둡니다.
$ sudo ausearch -k perm_change -i --start today | tail -2
14:02:11 auid=admin1 ses=8 comm="chmod" (대상 /var/www/html/upload, 755) (배포 작업)
관리자가 배포·설정 작업으로 특정 파일 권한을 바꾸는 것은 정상입니다(변경관리와 일치). 차이는 대상·방향·맥락입니다.
02:20:00 auid=devops ses=12 comm="chmod" (대상 /usr/bin/find, 4755 — SUID 설정)
02:20:05 auid=devops ses=12 comm="chown" (대상 /etc/passwd, devops)
find에 SUID 설정(4755) → 권한 상승 경로 생성(C27 정찰 결과 실행)/etc/passwd 소유자 변경 → 계정 파일 탈취권한 변경은 auditd 시스템 콜로 정확히 기록됩니다(가상의 예시 로그).
type=SYSCALL msg=audit(...): arch=c000003e syscall=268 success=yes auid=devops uid=0 comm="chmod" exe="/usr/bin/chmod" key="perm_change"
type=PATH msg=audit(...): name="/usr/bin/find" nametype=NORMAL mode=0100755
type=PROCTITLE msg=audit(...): proctitle=chmod 4755 /usr/bin/find
| 필드 | 분석 포인트 |
|---|---|
syscall=268 | fchmodat(권한 변경) |
proctitle | 실제 명령(4755 = SUID) |
name | 변경 대상 |
auid=devops uid=0 | 행위자 devops, root 권한 실행 |
변경 전후 권한은 PATH의 mode와 proctitle로 확인하며, 상세 before/after는 D42편에서 다룹니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_d,perm_change,">
<rule id="103000" level="7">
<if_group>audit</if_group>
<field name="audit.key">perm_change</field>
<description>파일 권한/소유권 변경 발생</description>
<mitre><id>T1222.002</id></mitre>
</rule>
</group>
D영역 Wazuh 커스텀 룰은 103000번대를 씁니다. T1222(File and Directory Permissions Modification)에 매핑됩니다. 단건은 낮은 레벨, 대상·방향 조건으로 상향합니다(D09~).
| 구분 | 핵심 내용 |
|---|---|
| D영역 초점 | 권한 변경 행위의 탐지(정찰의 실행 단계) |
| 변경 유형 | chmod·chown·chgrp·setcap·sudoers |
| 세 목적 | 권한 상승·접근 확보·지속성 |
| 판정 | 대상·방향·주체·맥락 |
| 면접 포인트 | "C영역은 상승 경로 정찰, D영역은 그 경로로 권한을 바꾸는 실행" |
다음 편 152. 권한 변경 이상 — 권한 비트·umask·기본 권한의 보안 의미 에서는 권한 비트·umask의 보안 의미를 탐지 관점에서 정리하는 권한 비트·기본 권한의 보안 의미를 다룹니다.
이전 편: 150. Linux 정보 수집 — Linux 정보 노출 및 수집 종합 정리
📚 시리즈 전체 보기: 시스템 보안 · 취약점