206. 중요 정보 접근 — 파일 읽기(open·read) 시스템 콜과 로그 흔적

changseop lee·6일 전

시스템 보안 · 취약점

목록 보기
206/450

시스템 보안 · 취약점 › E. 중요 정보 접근 로그 분석 · 6/50편 (전체 206/450)
학습 단계: 접근 로그 기본 개념
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

중요 정보 접근을 정확히 탐지하려면 "파일 읽기"가 어떤 시스템 콜로 일어나고 어떤 로그를 남기는지 알아야 합니다. 읽기는 주로 open/openat로 파일을 열고 read로 내용을 읽습니다.

파일 읽기 시스템 콜과 감사
 open/openat: 파일 열기(접근의 시작점) — 감사 주 대상
   플래그 O_RDONLY/O_RDWR로 읽기 여부 판별
 read/pread:  실제 내용 읽기(양 많음, 보통 open만 감사)
 PATH 레코드: 대상 파일·inode·권한

실무: open(접근 시점) 감사로 "읽었다"를 포착

읽기 감사는 보통 open/openat 수준에서 합니다(read까지 감사하면 이벤트가 폭증). open 성공 = 접근 성립입니다.

2. 왜 중요한가

  • open/openat는 접근의 시작점이라, 이를 감사하면 "누가 파일을 열었나(읽었나)"를 포착합니다.
  • read까지 감사하면 이벤트가 폭증하므로, 보통 open 수준에서 접근을 판정합니다.
  • O_RDONLY/O_RDWR 플래그와 success로 "읽기 접근이 실제 성립했는가"를 확인합니다.

3. 핵심 명령어 / 설정

요소의미분석
open/openat파일 열기접근 시점
O_RDONLY읽기 전용읽기 접근
success=yes접근 성공실제 읽음
PATH name대상 파일무엇을
PATH inode파일 식별이동 추적

4. 실습 (실습 예시)

# 파일 읽기 시스템 콜 분석 (분석 방법)
# 중요 파일 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'

5. 정상 상태

$ (open 이벤트)
syscall=openat success=yes comm="mysqld" name="/var/lib/mysql/ibdata1"
→ 서비스가 자기 데이터를 여는 정상 읽기 접근

서비스 프로세스가 자기 데이터 파일을 여는(openat success) 정상 읽기 접근만 기록되는 상태가 정상입니다.

6. 이상 상태

$ (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 → 자격증명 복사(수집 전조)
  • 비서비스 명령의 중요 파일 open 성공 → 이상 접근 → 정탐

7. 로그 분석 (분석 방법)

파일 읽기 접근 로그 해석입니다(가상의 예시).

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 + 중요 파일 = 이상 접근 성립입니다.

8. SOC 관제 포인트

  • 파일 읽기는 open/openat 시스템 콜로 접근이 시작되며, 이를 감사해 포착합니다.
  • read까지 감사하면 폭증하므로 open 수준에서 접근을 판정합니다(success로 성립 확인).
  • open success + 비서비스 주체 + 중요 파일 조합이 이상 접근의 기본 패턴입니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 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 감사는 성능을 고려해 선택적으로 적용합니다.

10. 대응 방법

  1. 초기 확인 — 중요 파일 open/openat 이벤트의 성공 여부·주체·대상을 확인합니다.
  2. 범위 확인 — 비서비스 명령(cat·cp 등)의 open 성공과 읽기 플래그를 확인합니다.
  3. 증거 확보 — open 접근 이벤트와 대상 파일(inode·경로)을 보존합니다.
  4. 차단/조치 — 이상 접근이면 수집·유출 연계를 확인하고 대응을 진행합니다.
  5. 재발 방지 — open 기반 읽기 접근 탐지를 운영합니다.

11. 핵심 정리

요소의미
open/openat접근 시점(열기)
O_RDONLY읽기 접근
success=yes접근 성립
PATH inode파일 식별·추적
면접 포인트"읽기 접근은 open 감사로 포착 — open success+비서비스+중요파일이 기본 패턴"

12. 다음 편 예고

다음 편 207. 중요 정보 접근 — 접근 vs 유출 — 공격 단계의 구분 에서는 접근과 유출의 공격 단계를 구분하는 접근 vs 유출 — 공격 단계의 구분을 다룹니다.


이전 편: 205. 중요 정보 접근 — 접근 주체·경로·시점의 분석 축
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글