224. 중요 정보 접근 — 민감 테이블·컬럼 접근 탐지

changseop lee·5일 전

시스템 보안 · 취약점

목록 보기
224/450

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

선행 학습

1. 개념

DB에서도 민감 테이블·컬럼이 특히 고가치입니다. 개인정보(users·members)·결제(payments·cards)·인증(credentials) 테이블과 주민번호·카드번호·비밀번호 컬럼 접근을 집중 탐지합니다.

민감 테이블·컬럼 접근 위험
 테이블: users, members, payments, cards, credentials
 컬럼:   ssn(주민번호), card_no, password, api_token
 패턴:   SELECT * FROM payments (전체)
         SELECT ssn, card_no FROM users (민감 컬럼 선별)
         COUNT(*) 후 전체 조회 (규모 파악→추출)

법적 의미: 개인정보·결제정보는 유출 시 법적 책임(GDPR·개인정보보호법)

민감 테이블·컬럼은 법적으로도 보호 대상(개인정보보호법)이라, 접근 탐지가 컴플라이언스와 직결됩니다.

2. 왜 중요한가

  • 민감 테이블·컬럼은 개인정보·결제정보로 유출 시 법적 책임이 큽니다.
  • 전체 조회(SELECT *)·민감 컬럼 선별은 데이터 추출의 명확한 신호입니다.
  • 정상 앱은 필요한 행·컬럼만 조회하므로, 전체·민감 컬럼 조회는 이상입니다.

3. 핵심 명령어 / 설정

접근 패턴데이터위험
SELECT * payments전체 결제매우 높음
SELECT ssn,card_no민감 컬럼매우 높음
SELECT password자격증명매우 높음
전체 users 조회개인정보높음
필요 행·컬럼만정상 앱정상

4. 실습 (실습 예시)

# 민감 테이블·컬럼 접근 탐지 (분석 방법)
# 민감 컬럼 선별 조회(DB 로그, 분석용)
sudo grep -iE 'SELECT .*(ssn|card_no|password|passwd|api_token|rrn)' /var/log/mysql/*.log 2>/dev/null | tail
# 민감 테이블 전체 조회
sudo grep -iE 'SELECT \* FROM (payments|cards|credentials|members)' /var/log/mysql/*.log 2>/dev/null | tail

5. 정상 상태

$ (민감 컬럼 조회) 앱의 정상 범위(단건·WHERE 조건) 쿼리만
$ (민감 테이블 전체) (없음)

민감 테이블·컬럼 조회가 앱의 정상 범위(조건절·단건)에 그치고, 전체·민감 컬럼 선별 조회가 없는 상태가 정상입니다.

6. 이상 상태

$ (민감 컬럼 조회)
SELECT ssn, card_no, password FROM users   (민감 컬럼 전체)
$ (민감 테이블 전체)
SELECT * FROM payments                      (전체 결제 데이터)
  • 주민번호·카드번호·비밀번호 컬럼을 WHERE 없이 전체 조회 → 개인정보 대량 추출
  • payments 전체 조회 → 전 결제 데이터 유출
  • 민감 컬럼·전체 조회 → 법적 책임 있는 유출 → 정탐(최고 위험)

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

민감 테이블·컬럼 접근 흐름입니다(가상의 예시).

[규모 파악] SELECT COUNT(*) FROM users (전체 규모 확인)
   ↓
[민감 추출] SELECT ssn, card_no FROM users (WHERE 없음)
   ↓
[파일화]   INTO OUTFILE (E23) 또는 결과 저장
   ↓
[유출]     외부 전송(E32)
단계신호
규모 파악COUNT(*)
추출민감 컬럼·전체
파일화OUTFILE
유출전송

COUNT로 규모 파악 후 전체 추출은 전형적 유출 패턴입니다.

8. SOC 관제 포인트

  • 민감 테이블·컬럼(개인정보·결제·자격증명) 접근은 법적 책임 있는 고가치 유출입니다.
  • 전체 조회(SELECT *)·민감 컬럼 선별(ssn·card_no·password)이 핵심 신호입니다.
  • 정상 앱은 조건절·필요 컬럼만 조회 — 전체·민감 컬럼 조회는 이상입니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_e,data_access,">
  <rule id="104230" level="13">
    <decoded_as>mysql_log</decoded_as>
    <field name="query" type="pcre2">SELECT\s+.*(ssn|rrn|card_no|card_number|password|passwd|api_token).*FROM|SELECT\s+\*\s+FROM\s+(payments|cards|credentials)</field>
    <description>민감 테이블·컬럼 조회(개인정보·결제 추출)</description>
    <mitre><id>T1005</id></mitre>
  </rule>
</group>

민감 테이블·컬럼 목록은 데이터 분류(E02)에 맞춰 정의합니다. 정상 앱 쿼리 패턴은 예외로 등록합니다.

10. 대응 방법

  1. 초기 확인 — 조회된 민감 테이블·컬럼·범위(전체/조건)·주체를 확인합니다.
  2. 범위 확인 — COUNT 후 전체 추출·민감 컬럼 선별·이후 유출을 확인합니다.
  3. 증거 확보 — 쿼리 로그와 조회 범위(유출 가능 데이터량)를 보존합니다.
  4. 차단/조치 — 개인정보 유출 정탐이면 DB 차단·법적 대응(통지)·유출 범위 산정을 진행합니다.
  5. 재발 방지 — 민감 테이블·컬럼 접근 탐지를 컴플라이언스와 함께 운영합니다.

11. 핵심 정리

접근 패턴데이터
SELECT * payments전체 결제
SELECT ssn,card_no민감 컬럼
SELECT password자격증명
필요 행·컬럼만정상
면접 포인트"민감 테이블·컬럼 유출은 법적 책임 — 전체·민감 컬럼 조회가 핵심 신호"

12. 다음 편 예고

다음 편 225. 중요 정보 접근 — 대용량 데이터 수집(staging) 탐지 에서는 대용량 데이터 수집을 다루는 대용량 데이터 수집(staging) 탐지를 다룹니다.


이전 편: 223. 중요 정보 접근 — 쿼리·DB 로그를 통한 접근 분석
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글