시스템 보안 · 취약점 › D. 권한 변경 이상 징후 · 2/50편 (전체 152/450)
학습 단계: 권한 모델·기본 개념
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
권한 변경을 탐지하려면 먼저 어떤 권한 상태가 위험한가를 알아야 합니다. 권한 비트의 의미를 "탐지 관점"(어떤 값이 이상인가)에서 정리합니다. linsec 16편이 권한 기초라면, 여기서는 위험 판정 기준입니다.
권한 8진수 구조
4755 = SUID(4) + rwxr-xr-x
2755 = SGID(2) + rwxr-xr-x
1777 = Sticky(1) + rwxrwxrwx (/tmp)
0777 = world-writable (누구나 쓰기 → 위험)
위험 판정
일반 파일 777/666 → 과도한 쓰기 권한
실행 파일에 SUID(4xxx) → 권한 상승 가능
설정 파일 그룹/기타 쓰기 → 변조 가능
umask 완화(000) → 이후 파일 전부 느슨(A영역 05편)
| 권한 상태 | 의미 | 위험도 |
|---|---|---|
| SUID(4xxx) 실행 파일 | 소유자 권한으로 실행 | 높음(상승) |
| SGID(2xxx) | 그룹 권한으로 실행 | 높음 |
| world-writable(o+w) | 누구나 쓰기 | 높음(변조) |
| 그룹 쓰기(g+w) 설정 파일 | 그룹 변조 | 중간 |
| Sticky(1xxx) 디렉터리 | 소유자만 삭제 | 정상(보호) |
# 위험 권한 상태 점검 (분석 방법, 읽기 전용)
# SUID/SGID 파일 목록(기준선 대비)
sudo find / -xdev -perm -4000 -o -perm -2000 2>/dev/null | sort > /root/baseline/suid_now.txt
diff /root/baseline/suid_base.txt /root/baseline/suid_now.txt
# world-writable 파일(디렉터리 제외)
sudo find / -xdev -type f -perm -0002 2>/dev/null | head
# 8진수 권한 확인
stat -c '%a %n' /usr/bin/find /etc/passwd /etc/sudoers
권한 변경 탐지는 "현재 위험 권한"(점검)과 "변경 이벤트"(auditd, D01) 양쪽을 봅니다.
$ diff suid_base.txt suid_now.txt
$
$ stat -c '%a %n' /usr/bin/find /etc/passwd /etc/sudoers
755 /usr/bin/find
644 /etc/passwd
440 /etc/sudoers
SUID 목록이 기준선과 동일하고, 주요 파일 권한이 기대값(A영역 04편)과 일치하는 상태가 정상입니다.
$ diff suid_base.txt suid_now.txt
> /usr/bin/find
$ stat -c '%a %n' /usr/bin/find /etc/shadow
4755 /usr/bin/find
644 /etc/shadow
find에 SUID(4755) 신규 → 기준선에 없던 SUID (D25 신규 SUID 탐지)/etc/shadow가 644(기대 000/640) → 해시 노출 권한 완화권한 상태의 위험 판정과 변경 이벤트를 결합합니다(가상의 예시).
[상태 점검] find: 4755 (SUID 신규, 기준선 이탈)
[변경 이벤트] type=SYSCALL comm="chmod" proctitle="chmod 4755 /usr/bin/find" auid=devops
→ 상태(위험) + 이벤트(누가·언제) 결합 = 완전한 분석
| 분석 | 수단 |
|---|---|
| 위험 상태 | find -perm, stat(기준선 비교) |
| 변경 시점·주체 | auditd perm_change(D01) |
| 결합 | 상태+이벤트 = 판정 |
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_d,perm_change,">
<rule id="103010" level="10">
<if_sid>103000</if_sid>
<field name="audit.proctitle" type="pcre2">chmod\s+[0-7]?[4-7][0-7]{3}|u\+s|g\+s</field>
<description>SUID/SGID 비트 설정 권한 변경</description>
<mitre><id>T1548.001</id></mitre>
</rule>
</group>
T1548.001(Setuid and Setgid)에 매핑됩니다. SUID 신규는 FIM(D41)과 함께 탐지합니다.
| 권한 상태 | 위험 |
|---|---|
| SUID(4xxx) | 권한 상승 |
| world-writable | 변조·탈취 |
| 그룹 쓰기 설정 파일 | 변조 |
| umask 000 | 이후 파일 느슨(A영역 05편) |
| 면접 포인트 | "권한 상태(위험)와 변경 이벤트(누가·언제)를 결합해야 완전한 판정" |
다음 편 153. 권한 변경 이상 — 권한 변경 감사의 기반 구성(auditd perm) 에서는 권한 변경을 기록하는 기반인 권한 변경 감사의 기반 구성(auditd perm)을 다룹니다.
이전 편: 151. 권한 변경 이상 — Linux 권한 모델과 권한 변경 탐지 개요
📚 시리즈 전체 보기: 시스템 보안 · 취약점