223. 중요 정보 접근 — 쿼리·DB 로그를 통한 접근 분석

changseop lee·2026년 10월 7일

시스템 보안 · 취약점

목록 보기
223/450

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

선행 학습

1. 개념

DB 파일 직접 접근(E19)이 엔진 우회라면, 여기서는 DB 엔진을 통한 접근을 쿼리·감사 로그로 분석합니다. 탈취한 자격증명으로 정상 쿼리처럼 접속해 대량 조회·민감 테이블 접근하는 패턴을 봅니다.

DB 쿼리 로그 분석 포인트
 general_log(MySQL)·pg audit: 모든 쿼리 기록
 대량 SELECT:    SELECT * FROM users (전체 조회)
 민감 테이블:    users, payments, cards (E24)
 비정상 접속:    새 IP·계정·시간대
 SELECT INTO OUTFILE: 쿼리로 파일 추출(E19 연계)

OS 감사(E영역) + DB 로그 결합 → 완전한 접근 가시성

OS 레벨 접근 감사만으로는 DB 내부 쿼리를 못 봅니다. DB 쿼리 로그를 함께 수집해야 엔진 경유 접근이 보입니다.

2. 왜 중요한가

  • DB 엔진 경유 접근은 OS 파일 감사로는 안 보여, DB 쿼리 로그 수집이 필요합니다.
  • 대량 SELECT·민감 테이블 조회는 정상 앱 쿼리와 패턴이 다릅니다.
  • 탈취 자격증명 접속은 비정상 IP·계정·시간대로 식별합니다.

3. 핵심 명령어 / 설정

쿼리 로그 신호의미위험
대량 SELECT *전체 조회높음
민감 테이블 조회개인정보·결제높음
INTO OUTFILE파일 추출매우 높음
새 IP·계정 접속탈취 자격증명높음
앱 정상 쿼리업무정상

4. 실습 (실습 예시)

# DB 쿼리 로그 분석 (분석 방법)
# MySQL general/audit log에서 대량 SELECT·민감 테이블(분석용)
sudo grep -iE 'SELECT .* FROM (users|payments|cards|accounts)' /var/log/mysql/*.log 2>/dev/null | tail
# INTO OUTFILE(쿼리 파일 추출)
sudo grep -i 'INTO OUTFILE\|INTO DUMPFILE' /var/log/mysql/*.log 2>/dev/null
# 비정상 접속 IP(앱 서버 외)
sudo grep -iE 'Connect.*@' /var/log/mysql/*.log 2>/dev/null | grep -vE '127.0.0.1|앱서버IP' | tail

5. 정상 상태

$ (민감 테이블 조회) 앱 서버 IP의 정상 범위 쿼리만
$ (INTO OUTFILE) (없음)
$ (비정상 접속) (없음 — 앱 서버에서만 접속)

쿼리가 앱 서버에서의 정상 범위 조회에 그치고, INTO OUTFILE·외부 IP 접속이 없는 상태가 정상입니다.

6. 이상 상태

$ (민감 테이블 조회)
Query SELECT * FROM users          (전체 사용자 조회)
$ (INTO OUTFILE)
Query SELECT * FROM cards INTO OUTFILE '/tmp/c.csv'
$ (비정상 접속)
Connect app@192.0.2.88 (앱 서버 아닌 IP)
  • SELECT * FROM users 전체 조회 + cards INTO OUTFILE 파일 추출
  • 앱 서버가 아닌 IP(192.0.2.88)에서 접속 → 탈취 자격증명 사용
  • 대량 조회·파일 추출·비정상 IP → 데이터 유출 → 정탐

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

DB 쿼리 접근 분석 흐름입니다(가상의 예시).

[접속] app@192.0.2.88 (비앱 IP, 탈취 자격증명)
   ↓
[조회] SELECT * FROM users, payments (대량·민감 테이블)
   ↓
[추출] SELECT ... INTO OUTFILE '/tmp/c.csv' (파일화)
   ↓
[유출] /tmp/c.csv 외부 전송(E32)
단계쿼리 로그
접속비정상 IP
조회SELECT * 민감테이블
추출INTO OUTFILE
유출파일 전송

DB 쿼리 로그 + OS 파일 감사를 결합하면 엔진 경유·우회 접근을 모두 봅니다.

8. SOC 관제 포인트

  • DB 쿼리·감사 로그 분석은 엔진 경유 접근(OS 감사 사각지대)을 포착합니다.
  • 대량 SELECT·민감 테이블 조회·INTO OUTFILE·비정상 IP가 핵심 신호입니다.
  • OS 파일 감사(E19)와 DB 쿼리 로그를 결합해 완전한 접근 가시성을 확보합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_e,data_access,">
  <!-- DB 로그 파서 전제: 대량 조회·파일 추출 쿼리 -->
  <rule id="104220" level="12">
    <decoded_as>mysql_log</decoded_as>
    <field name="query" type="pcre2">(SELECT\s+\*\s+FROM\s+(users|payments|cards|accounts))|INTO\s+(OUTFILE|DUMPFILE)</field>
    <description>DB 대량 조회·파일 추출 쿼리(엔진 경유 유출)</description>
    <mitre><id>T1005</id></mitre>
  </rule>
</group>

DB general/audit log를 Wazuh/ELK로 수집해야 쿼리 탐지가 가능합니다. 로그 활성화는 성능을 고려해 설정합니다.

10. 대응 방법

  1. 초기 확인 — DB 쿼리 로그에서 대량 SELECT·민감 테이블·INTO OUTFILE·접속 IP를 확인합니다.
  2. 범위 확인 — 앱 서버 외 접속·탈취 자격증명 사용 여부를 확인합니다.
  3. 증거 확보 — 쿼리 로그·접속 로그·연계 OS 감사를 보존합니다.
  4. 차단/조치 — 유출 정탐이면 DB 세션 차단·자격증명 교체·조회 범위(유출 데이터) 조사를 진행합니다.
  5. 재발 방지 — DB 쿼리 로그 수집·분석을 OS 감사와 함께 운영합니다.

11. 핵심 정리

쿼리 신호위험
SELECT * 대량전체 조회
민감 테이블개인정보·결제
INTO OUTFILE파일 추출
비정상 IP 접속탈취 자격증명
면접 포인트"DB 엔진 경유 접근은 쿼리 로그로만 — OS 감사(파일)와 결합해 완전 가시성"

12. 다음 편 예고

다음 편 224. 중요 정보 접근 — 민감 테이블·컬럼 접근 탐지 에서는 민감 테이블·컬럼 접근을 다루는 민감 테이블·컬럼 접근 탐지를 다룹니다.


이전 편: 222. 중요 정보 접근 — 민감 디렉터리 스캔성 접근 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글