시스템 보안 · 취약점 › D. 권한 변경 이상 징후 · 8/50편 (전체 158/450)
학습 단계: 권한 모델·기본 개념
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
권한 변경은 관리자도 매일 하므로, 판정 기준이 없으면 탐지가 오탐투성이가 됩니다. 1단계(개념)를 마무리하며, 권한 변경 이상 징후를 판정하는 6가지 축을 정리합니다.
권한 변경 판정 6축
① 대상: 중요 파일/바이너리(위험) vs 배포 경로(정상)
② 방향: 완화·SUID 설정(위험) vs 강화·정상 범위(정상)
③ 주체: 비관리/서비스 계정(위험) vs 배포·관리 계정(정상)
④ 시점: 새벽·업무 외(위험) vs 업무 시간·변경관리(정상)
⑤ 맥락: 패키지·배포 없음(위험) vs dnf/배포 로그 일치(정상)
⑥ 연계: 정찰(C)·상승 이어짐(위험) vs 단독·일상(정상)
다수 축이 위험이면 정탐, 대부분 정상이면 오탐
| 축 | 위험 신호 | 정상 신호 |
|---|---|---|
| 대상 | 바이너리·중요 파일·설정 | 배포 경로·앱 파일 |
| 방향 | 완화·SUID·world-writable | 강화·정상 범위 |
| 주체 | 비관리·서비스 계정 | 배포·관리·패키지 |
| 시점 | 새벽·업무 외 | 업무·변경관리 |
| 맥락 | 패키지·배포 없음 | dnf/배포 일치 |
| 연계 | 정찰·상승 결합 | 단독·일상 |
# 권한 변경 판정 (분석 방법) — 한 이벤트를 6축으로
# 예: chmod 4755 /usr/bin/find by devops at 02:20
echo "① 대상: /usr/bin/find (바이너리) → 위험"
echo "② 방향: 4755 (SUID 설정) → 위험"
echo "③ 주체: devops (비관리, 평소 권한변경 0) → 위험"
echo "④ 시점: 02:20 (새벽) → 위험"
echo "⑤ 맥락: $(sudo dnf history list | grep '2026-10-02 02' || echo '패키지 없음') → 위험"
echo "⑥ 연계: C27 SUID 정찰 같은 세션 → 위험"
echo "=> 6축 전부 위험 → 정탐"
정상(오탐)으로 판정되는 사례입니다.
chmod 755 /var/www/html/deploy.sh by admin1 at 14:00
① 대상: 배포 경로 → 정상
② 방향: 755 (정상 범위) → 정상
③ 주체: admin1(배포 계정) → 정상
④ 시점: 14:00(업무) → 정상
⑤ 맥락: CHG-2026-1002 배포 → 정상
⑥ 연계: 단독 배포 작업 → 정상
=> 정상 행위(Benign)
정탐으로 판정되는 사례입니다.
chmod 4755 /usr/bin/find by devops at 02:20
① 대상: 바이너리 → 위험 ② 방향: SUID → 위험
③ 주체: devops(비관리) → 위험 ④ 시점: 새벽 → 위험
⑤ 맥락: 패키지 없음 → 위험 ⑥ 연계: C27 정찰 → 위험
=> 6축 전부 위험 → 정탐(권한 상승 Incident)
정상 사례와 비교하면 6축이 모두 반대입니다. 축별 판정이 일관된 결론을 줍니다.
판정 기준을 표로 적용한 예시입니다(가상의 예시).
이벤트 대상 방향 주체 시점 맥락 연계 판정
chmod 755 deploy.sh(admin1) 정 정 정 정 정 정 정상
chmod 4755 find(devops,새벽) 위 위 위 위 위 위 정탐
chown devops /etc/passwd 위 - 위 위 위 위 정탐
| 위험 축 수 | 판정 |
|---|---|
| 0~1 | 정상·오탐 |
| 2~3 | 확인 |
| 4+ | 정탐 |
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_d,perm_change,">
<!-- 비관리 계정의 바이너리/중요파일 권한 변경 (주체+대상 축) -->
<rule id="103060" level="11">
<if_sid>103000</if_sid>
<field name="audit.proctitle" type="pcre2">(chmod|chown).*(/usr/bin/|/usr/sbin/|/etc/)</field>
<field name="audit.auid" type="pcre2">^(100[2-9]|48|33)$</field>
<description>비관리/서비스 계정의 시스템 경로 권한 변경</description>
<mitre><id>T1222</id></mitre>
</rule>
</group>
주체(auid)·대상(경로)·시점(time)·방향(proctitle)을 조합해 축을 구체화합니다. 배포 계정은 좁은 예외(D46).
| 축 | 위험 vs 정상 |
|---|---|
| 대상 | 바이너리·중요파일 vs 배포 경로 |
| 방향 | SUID·완화 vs 강화 |
| 주체 | 비관리 vs 배포·관리 |
| 시점·맥락·연계 | 새벽·무맥락·정찰결합 vs 업무·배포·단독 |
| 면접 포인트 | "권한 변경은 6축 결합 판정 — 단건은 오탐, 다축은 정탐" |
다음 편 159. 권한 변경 이상 — 중요 파일 권한 완화 탐지 에서는 2단계로 넘어가 중요 파일 권한 완화 탐지를 다룹니다.
이전 편: 157. 권한 변경 이상 — chown·chgrp 동작 원리와 로그 흔적
📚 시리즈 전체 보기: 시스템 보안 · 취약점