시스템 보안 · 취약점 › E. 중요 정보 접근 로그 분석 · 6/50편 (전체 206/450)
학습 단계: 접근 로그 기본 개념
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
중요 정보 접근을 정확히 탐지하려면 "파일 읽기"가 어떤 시스템 콜로 일어나고 어떤 로그를 남기는지 알아야 합니다. 읽기는 주로 open/openat로 파일을 열고 read로 내용을 읽습니다.
파일 읽기 시스템 콜과 감사
open/openat: 파일 열기(접근의 시작점) — 감사 주 대상
플래그 O_RDONLY/O_RDWR로 읽기 여부 판별
read/pread: 실제 내용 읽기(양 많음, 보통 open만 감사)
PATH 레코드: 대상 파일·inode·권한
실무: open(접근 시점) 감사로 "읽었다"를 포착
읽기 감사는 보통 open/openat 수준에서 합니다(read까지 감사하면 이벤트가 폭증). open 성공 = 접근 성립입니다.
| 요소 | 의미 | 분석 |
|---|---|---|
open/openat | 파일 열기 | 접근 시점 |
O_RDONLY | 읽기 전용 | 읽기 접근 |
success=yes | 접근 성공 | 실제 읽음 |
| PATH name | 대상 파일 | 무엇을 |
| PATH inode | 파일 식별 | 이동 추적 |
# 파일 읽기 시스템 콜 분석 (분석 방법)
# 중요 파일 open 이벤트(성공한 읽기 접근)
sudo ausearch -k sensitive_read -i --start recent 2>/dev/null | grep -A2 'comm=' | grep -E 'syscall=open|name=|success' | tail
# 성공한 읽기 접근만 필터
sudo ausearch -k sensitive_read -i --start recent 2>/dev/null | grep -E 'success=yes' | grep -E 'open'
$ (open 이벤트)
syscall=openat success=yes comm="mysqld" name="/var/lib/mysql/ibdata1"
→ 서비스가 자기 데이터를 여는 정상 읽기 접근
서비스 프로세스가 자기 데이터 파일을 여는(openat success) 정상 읽기 접근만 기록되는 상태가 정상입니다.
$ (open 이벤트)
syscall=openat success=yes comm="cat" name="/etc/shadow" auid=devops
syscall=openat success=yes comm="cp" name="/etc/myapp/db.conf"
cat이 shadow를 open(success) → 인증 정보 읽기 접근 성립cp가 db.conf를 open → 자격증명 복사(수집 전조)파일 읽기 접근 로그 해석입니다(가상의 예시).
type=SYSCALL syscall=openat success=yes auid=devops comm="cat" key="sensitive_read"
type=PATH name="/etc/shadow" inode=12345 mode=0100000
→ cat이 /etc/shadow를 읽기 성공(접근 성립)
| 필드 | 해석 |
|---|---|
| syscall=openat | 파일 열기 |
| success=yes | 접근 성공 |
| comm=cat | 쉘 명령(비서비스) |
| name=shadow | 인증 정보 |
open success + 비서비스 comm + 중요 파일 = 이상 접근 성립입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_e,sensitive_access,">
<rule id="104050" level="10">
<if_sid>104000</if_sid>
<field name="audit.syscall" type="pcre2">^openat?$</field>
<field name="audit.success">yes</field>
<field name="audit.comm" type="pcre2">^(cat|cp|dd|less|head|tail|xxd|strings|scp)$</field>
<description>쉘 명령의 중요 파일 읽기 접근(open 성공)</description>
<mitre><id>T1005</id></mitre>
</rule>
</group>
open 수준 감사로 접근을 포착하고, read 감사는 성능을 고려해 선택적으로 적용합니다.
| 요소 | 의미 |
|---|---|
| open/openat | 접근 시점(열기) |
| O_RDONLY | 읽기 접근 |
| success=yes | 접근 성립 |
| PATH inode | 파일 식별·추적 |
| 면접 포인트 | "읽기 접근은 open 감사로 포착 — open success+비서비스+중요파일이 기본 패턴" |
다음 편 207. 중요 정보 접근 — 접근 vs 유출 — 공격 단계의 구분 에서는 접근과 유출의 공격 단계를 구분하는 접근 vs 유출 — 공격 단계의 구분을 다룹니다.
이전 편: 205. 중요 정보 접근 — 접근 주체·경로·시점의 분석 축
📚 시리즈 전체 보기: 시스템 보안 · 취약점