시스템 보안 · 취약점 › D. 권한 변경 이상 징후 · 42/50편 (전체 192/450)
학습 단계: 권한 변경 감사·로그 분석
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
권한 변경을 판정하려면 "변경 전과 후"를 알아야 합니다. auditd는 PATH 레코드에 변경 전 상태(mode·ouid·ogid)를, PROCTITLE에 변경 의도(명령 입력)를 남깁니다. 이를 결합하면 before/after를 확정할 수 있습니다.
before/after 비교의 두 축
[before] PATH 레코드
mode=0100755 → 변경 전 권한(755)
ouid=0 ogid=0 → 변경 전 소유자/그룹(root)
[after] PROCTITLE
chmod 4755 → 변경 후 의도(SUID 755)
chown devops → 변경 후 소유자
결합: 755(root) → 4755(root) : SUID 추가
핵심은 PATH mode/ouid가 "변경 전" 값이라는 점입니다. 많은 분석가가 이를 "변경 후"로 오해해 판정을 틀립니다.
| 값 | 출처 | 의미 |
|---|---|---|
| mode(PATH) | auditd | 변경 전 권한 |
| ouid/ogid(PATH) | auditd | 변경 전 소유자/그룹 |
| proctitle | auditd | 변경 후 의도 |
| 현재 stat | 파일시스템 | 변경 후 실제 |
| 기준선 | D04 | 원래 정상값 |
# before/after 비교 분석 (분석 방법)
# 변경 전(PATH) + 변경 의도(PROCTITLE) + 현재(stat)
sudo ausearch -k perm_change -i --start recent 2>/dev/null | grep -E 'mode=|ouid=|proctitle=chmod|proctitle=chown' | tail
# 변경 후 실제 상태 교차 확인
stat -c '현재: %a %U:%G %n' /usr/bin/find 2>/dev/null
$ (before/after)
PATH mode=0100755 ouid=48 ogid=48 (before: 755, apache)
PROCTITLE proctitle=chmod 750 /var/www/app.sh (after: 750)
$ (현재) 현재: 750 apache:apache /var/www/app.sh
before(755)→after(750)는 권한 강화(완화 아님)라 정상 방향입니다. 현재 상태도 일치합니다.
$ (before/after)
PATH mode=0100755 ouid=0 ogid=0 (before: 755, root)
PROCTITLE proctitle=chmod 4755 /usr/bin/find (after: 4755 SUID)
$ (현재) 현재: 4755 root:root /usr/bin/find
before/after 비교 흐름입니다(가상의 예시).
[PATH] mode=0100755 ouid=0 ← before (755, root)
+
[PROCTITLE] chmod 4755 ← after 의도 (SUID 추가)
+
[stat] 현재 4755 ← after 실제 (확정)
=
판정: 755 → 4755, SUID 비트 추가(완화·상승 방향)
| 축 | 값 | 시점 |
|---|---|---|
| PATH mode | 755 | before |
| proctitle | 4755 | after(의도) |
| stat | 4755 | after(실제) |
| 방향 | SUID 추가 | 완화 |
세 값을 결합하면 before→after와 변경 방향이 확정됩니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_d,perm_change,">
<!-- before(PATH mode 일반) + after(proctitle SUID) : SUID 추가 확정 -->
<rule id="103400" level="12">
<if_sid>103000</if_sid>
<field name="audit.mode" type="pcre2">^0?100[0-7]{3}$</field>
<field name="audit.proctitle" type="pcre2">chmod\s+[4267][0-7]{3}</field>
<description>before(일반)→after(특수권한) 권한 상향 변경</description>
<mitre><id>T1222</id></mitre>
</rule>
</group>
mode(before)와 proctitle(after)를 함께 보는 룰로 "방향"까지 판정합니다. 필드 파싱은 wazuh-logtest로 검증합니다.
| 값 | 시점 |
|---|---|
| PATH mode/ouid | 변경 전(before) |
| proctitle | 변경 의도(after) |
| 현재 stat | 변경 후 실제(after) |
| 기준선 | 원래 정상값 |
| 면접 포인트 | "PATH mode는 변경 전 값 — before(PATH)+after(proctitle/stat)로 방향 판정" |
다음 편 193. 권한 변경 이상 — 권한 변경 로그의 정규화와 수집 에서는 권한 변경 로그의 정규화·수집을 다루는 권한 변경 로그의 정규화와 수집을 다룹니다.
이전 편: 191. 권한 변경 이상 — 권한 변경과 파일 무결성(FIM) 연계
📚 시리즈 전체 보기: 시스템 보안 · 취약점