시스템 보안 · 취약점 › E. 중요 정보 접근 로그 분석 · 13/50편 (전체 213/450)
학습 단계: 중요 파일 접근 이상
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
애플리케이션은 DB 접속 정보를 설정 파일에 저장합니다. 이 DB 자격증명이 탈취되면 공격자가 직접 데이터베이스에 접속해 대량 데이터를 유출할 수 있어, 접근 탐지가 중요합니다.
DB 자격증명 파일 접근 위험
app/config/database.yml DB 접속정보(host/user/pass)
/etc/my.cnf, .my.cnf MySQL 설정·자격증명
wp-config.php 등 앱 DB 설정
.env (DB_PASSWORD 등) 환경 변수 DB 자격증명(E15)
탈취 → DB 직접 접속 → 대량 데이터 유출(E19·20)
DB 자격증명은 앱 프로세스가 읽는 것이 정상입니다. 쉘 명령·웹 계정의 읽기는 탈취 시도입니다.
| DB 설정 파일 | 담긴 정보 | 위험 |
|---|---|---|
database.yml/.php | 접속·비밀번호 | 매우 높음 |
/etc/my.cnf,.my.cnf | MySQL 자격증명 | 높음 |
.env DB_* | DB 환경변수 | 매우 높음 |
pg_service.conf | PostgreSQL | 높음 |
| 앱 secret | 세션·암호화 키 | 높음 |
# DB 자격증명 접근 탐지 (분석 방법)
sudo ausearch -k cred_access -i --start recent 2>/dev/null | grep -E 'database\.yml|my\.cnf|wp-config|pg_service|\.env' | grep -vE 'comm="(ruby|php-fpm|python|node|mysqld|postgres)"' | tail
# 자격증명 접근 후 DB 클라이언트 실행(연계)
sudo ausearch -k cred_access,data_access -i --start recent 2>/dev/null | grep -E 'comm="(mysql|psql|mongo)"'
$ (DB 자격증명 접근) (없음 또는 앱 프로세스만)
DB 설정 파일 접근이 앱 프로세스(php-fpm·node 등)의 정상 로드에 그치고, 쉘·웹 계정 읽기가 없는 상태가 정상입니다.
$ (DB 자격증명 접근)
04:00 comm="cat" auid=www-data /var/www/app/config/database.yml
$ (이후 DB 접속)
04:01 comm="mysql" auid=www-data (탈취 자격증명으로 접속)
DB 자격증명 탈취 흐름입니다(가상의 예시 로그).
type=SYSCALL comm="cat" auid=www-data key="cred_access"
type=PATH name="/var/www/app/config/database.yml"
→ 웹 계정이 DB 접속정보 읽기(탈취)
[이후] mysql -u app -p<탈취비번> → DB 접속 → 대량 SELECT(E19)
| 관찰 | 해석 |
|---|---|
| cat database.yml | 자격증명 탈취 |
| auid=www-data | 비앱 주체 |
| 이후 mysql | DB 직접 접속 |
| 대량 SELECT | 데이터 유출 |
자격증명 읽기 → DB 접속 → 대량 조회로 이어지는 체인을 연계로 탐지합니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_e,sensitive_access,">
<rule id="104120" level="12">
<if_sid>104000</if_sid>
<field name="audit.file" type="pcre2">(database\.(yml|php)|my\.cnf|wp-config\.php|pg_service\.conf)$</field>
<field name="audit.comm" type="pcre2">^(cat|cp|less|tar|scp|curl|grep|strings)$</field>
<description>DB 설정·자격증명 파일 접근(DB 침해 전조)</description>
<mitre><id>T1552.001</id></mitre>
</rule>
</group>
정상 앱 프로세스는 화이트리스트로 제외합니다. 자격증명 접근 후 DB 클라이언트 실행을 상관으로 연계합니다(E42).
| DB 설정 파일 | 위험 |
|---|---|
| database.yml/php | 접속·비밀번호 탈취 |
| my.cnf/.my.cnf | MySQL 자격증명 |
| .env DB_* | DB 환경변수 |
| 이후 DB 접속 | 대량 유출 전조 |
| 면접 포인트 | "DB 자격증명 탈취는 대량 유출 관문 — 읽기→DB 접속 연계가 핵심" |
다음 편 214. 중요 정보 접근 — 애플리케이션 비밀(secret) 접근 탐지 에서는 애플리케이션 비밀 접근을 다루는 애플리케이션 비밀(secret) 접근 탐지를 다룹니다.
이전 편: 212. 중요 정보 접근 — 인증서·개인키 파일 접근 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점