324. 내부 확장·측면 이동 — 데이터베이스를 통한 측면 이동 탐지

changseop lee·2026년 10월 8일

시스템 보안 · 취약점

목록 보기
324/450

시스템 보안 · 취약점 › G. 내부 확장 · 측면 이동 징후 · 24/50편 (전체 324/450)
학습 단계: 원격 실행·서비스 악용
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

데이터베이스는 데이터 저장소를 넘어 명령 실행·파일 쓰기·서버 연결 기능을 가져, 측면 이동에 악용됩니다. 공격자는 탈취한 DB 자격증명(E13)으로 DB에 접속해 DB 서버 OS를 장악하거나, 링크드 서버·페더레이션으로 다른 DB에 확산합니다.

데이터베이스 측면 이동
 명령 실행: MySQL UDF·PostgreSQL COPY PROGRAM·MSSQL xp_cmdshell
   → DB 프로세스 권한으로 OS 명령 실행
 파일 쓰기: INTO OUTFILE로 웹셸·키 쓰기
 링크드 서버: DB → 다른 DB 서버 쿼리·실행
 DB 계정 재사용: 공유 DB 계정으로 다수 DB 접근

핵심: DB 기능으로 OS 명령·파일·타 서버 접근

핵심은 "DB가 데이터 조회를 넘어 OS 명령·파일 쓰기·타 서버 연결을 하는가"입니다. DB 프로세스가 셸·파일 작업을 하면 강한 신호입니다.

2. 왜 중요한가

  • DB의 명령 실행 기능(UDF·COPY PROGRAM·xp_cmdshell)은 DB 서버 OS 장악 경로입니다.
  • INTO OUTFILE로 웹셸·SSH 키를 써서 추가 측면 이동 발판을 만듭니다.
  • 링크드 서버·DB 계정 재사용으로 다른 DB 서버로 확산합니다.

3. 핵심 명령어 / 설정

DB 악용기능위험
OS 명령 실행UDF·COPY PROGRAM매우 높음
파일 쓰기INTO OUTFILE높음(웹셸·키)
링크드 서버타 DB 쿼리·실행높음
DB 계정 재사용다수 DB 접근높음
정상 쿼리데이터 조회정상

4. 실습 (실습 예시)

# 데이터베이스 측면 이동 탐지 (분석 방법)
# DB 프로세스가 셸·명령 실행(계보)
sudo ausearch -k proc_exec,lateral -i --start recent 2>/dev/null | grep -E 'ppid_comm="(mysqld|postgres|mariadbd)"' | grep -E 'comm="(sh|bash|cp|curl)"' | tail
# DB 로그의 명령 실행·파일 쓰기 쿼리
sudo grep -iE 'COPY .* PROGRAM|INTO OUTFILE|xp_cmdshell|CREATE FUNCTION.*SONAME' /var/log/mysql/*.log /var/lib/pgsql/data/log/*.log 2>/dev/null | tail

5. 정상 상태

$ (DB→셸 계보) (없음)
$ (명령/파일 쿼리) (없음 — 정상 데이터 쿼리만)

DB 프로세스가 셸·명령을 생성하지 않고, OS 명령·파일 쓰기 쿼리가 없는 상태가 정상입니다.

6. 이상 상태

$ (DB→셸 계보)
ppid_comm="postgres" comm="sh" args="sh -c id;curl ... (파이프로 셸 실행)"
$ (명령/파일 쿼리)
COPY cmd_exec FROM PROGRAM 'bash -c ...' (PostgreSQL 명령 실행)
SELECT ... INTO OUTFILE '/var/www/html/shell.php' (웹셸 쓰기)
  • postgres가 sh 생성(COPY PROGRAM) → DB 프로세스로 OS 명령 실행
  • INTO OUTFILE로 웹루트에 웹셸 쓰기 → 추가 측면 이동 발판
  • DB 기능 악용으로 OS 장악·파일 쓰기 → 측면 이동 → 정탐

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

데이터베이스 측면 이동 분석입니다(가상의 예시).

[탈취 자격증명] DB 접속(E13)
   ↓ (DB 기능 악용)
COPY FROM PROGRAM 'cmd' → DB 서버 OS 명령 실행
   ↓ 계보
postgres → sh → curl→셸 (DB 프로세스가 셸 생성)
   ↓ (발판 생성)
INTO OUTFILE로 웹셸·SSH 키 쓰기 → 추가 확산
 = DB → OS 장악 → 측면 이동
관찰해석
DB→셸 계보OS 명령 실행
COPY PROGRAMDB 명령 기능
INTO OUTFILE파일 쓰기 발판
링크드 서버타 DB 확산

DB 프로세스의 셸 생성·파일 쓰기가 DB 측면 이동의 지표입니다.

8. SOC 관제 포인트

  • 데이터베이스는 명령 실행·파일 쓰기·서버 연결 기능으로 측면 이동에 악용됩니다.
  • DB 프로세스가 셸·파일 작업을 하는 것(UDF·COPY PROGRAM·INTO OUTFILE)이 핵심 신호입니다.
  • 링크드 서버·DB 계정 재사용으로 다른 DB 서버로 확산합니다.

9. 탐지 규칙

<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_g,lateral,">
  <rule id="106230" level="14">
    <if_sid>106000</if_sid>
    <field name="audit.ppid_comm" type="pcre2">^(mysqld|mariadbd|postgres)$</field>
    <field name="audit.comm" type="pcre2">^(sh|bash|dash|cp|curl|wget|nc)$</field>
    <description>DB 프로세스의 OS 명령 실행(DB 측면 이동·OS 장악)</description>
    <mitre><id>T1210</id><id>T1059</id></mitre>
  </rule>
</group>

DB 쿼리 로그(COPY PROGRAM·INTO OUTFILE)와 DB 프로세스 계보를 함께 수집합니다. 정상 DB 함수 사용은 예외 처리합니다.

10. 대응 방법

  1. 초기 확인 — DB 프로세스의 셸 생성·OS 명령·파일 쓰기 쿼리를 확인합니다.
  2. 범위 확인 — UDF·COPY PROGRAM·INTO OUTFILE·링크드 서버·계정 재사용을 확인합니다.
  3. 증거 확보 — DB 계보·쿼리 로그·생성 파일을 보존합니다.
  4. 차단/조치 — DB 측면 이동 정탐이면 DB 세션 차단·생성 발판(웹셸) 제거·자격 교체를 진행합니다.
  5. 재발 방지 — DB 기능 악용 기반 측면 이동 탐지를 운영합니다.

11. 핵심 정리

DB 악용기능
OS 명령 실행UDF·COPY PROGRAM
파일 쓰기INTO OUTFILE
링크드 서버타 DB 쿼리
DB 계정 재사용다수 DB
면접 포인트"DB는 명령 실행·파일 쓰기로 측면 이동 — DB 프로세스의 셸 생성이 신호"

12. 다음 편 예고

다음 편 325. 내부 확장·측면 이동 — 웹 애플리케이션 피벗 탐지 에서는 웹 애플리케이션 피벗을 다루는 웹 애플리케이션 피벗 탐지를 다룹니다.


이전 편: 323. 내부 확장·측면 이동 — 컨테이너·오케스트레이션 측면 이동 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글