[DataBase] 데이터베이스 포렌식 개요

 

데이터베이스


(1) 데이터베이스 포렌식 개요

  • 데이터베이스 포렌식은 디지털 포렌식의 한 분야

  • 데이터베이스의 구조 및 저장된 데이터, 메타데이터를 수집하여 법적 증거 자료로써의 요구 조건을 충족시키기 위해 분석하는 행위

  • 주로 감사 로그를 수집하여 분석 

현재 활용 가능한 데이터베이스 포렌식 툴은 로그 분석기 수준으로 전문적인 도구는 아직까지 존재하지 않는다.

 

또한, 각 DBMS 벤더사별로 데이터베이스 구조가 판이하고, 데이터베이스의 트랜잭션 로그 구조 자체가 기업 보안 정보로 분류되어 구체적인 문서나 매뉴얼을 얻을 수 없다.

 

그리고 방대해지고 있는 어플리케이션 규모도 데이터베이스 포렌식에 있어 걸림돌이 될 수 있다.

 

 

데이터베이스에 저장된 사용자의 개인 정보 유출이 자주 발생하고, 또한 저장된 데이터를 조작하는 사고가 빈번히 발생한다.

 

대부분의 사고는 내부 관계자의 소행이 주를 이르고 있는 만큼 데이터베이스 포렌식의 중요성이 점점 커지고 있다.

 

 

1-1. 데이터베이스 포렌식 이해

  • 데이버테이브 정보 침해 사건은 대부분 기업이나 기관 내부의 데이터베이스 관리자나 일반 사용자로 인해 일어남

  • 이들은 관리자 권한을 악용해 감사 로그 기록을 우회하여 데이터베이스를 조작, 데이터 조작을 숨기기 위해 로그 기록을 중지함

  • 따라서 로그파일 분석을 통해 언제, 어디서, 어떤 사용자에 의해 데이터가 조작되었는지 알아내는 것이 매우 중요

 

가) 왜 데이터베이스 침해사고가 일어나는가?

  • 예산 부족으로 인한 관리 인력 및 보안 전문 인력 감축

  • 정보 보안에 대한 이해 부족

  • 부서 간의 협조 부족

  • 데이터베이스 사전 보안 테스트 부족

  • 너무 많은 'root' 권한 계정

  • 데이터베이스 보안 관리에 대한 기술력 부족

 

나) 다양한 실무 환경에서 사용되는 데이터베이스

  • 데이터베이스는 전자결제, 이메일, 기업 정보, 회계 압수 등에서 정보의 메타데이터 역할을 함 

 

 

데이터베이스 포렌식을 이용하여 데이터 선별이 가능한 주요 데이터들을 살펴보면 다음 그림과 같다.

 

[그림 1] 데이터베이스 포렌식 활용


1-2. 데이터베이스 조사 절차

  • 1) DB 조사 기획

  • 2) IT / BT 조사

  • 3) IT / BT 실사

  • 4) DB 증거 수집

  • 5) 이송 및 보관

 

가) DB 조사 기획

  • 정보 시스템 관련 정보 수집 및 공유

  • 영장에 명시할 기업 정보 시스템 소재지 확인

  • 데이터베이스 압수 수색 시 소요되는 인력과 시간 판단

  • 데이터베이스 압수 방법 구체화

 

나) IT / BT 조사

  • IT / BT는 정보 기술과 업무 기술을 뜻함

  • 보유 시스템애 대한 조사 진행

  • 하드웨어 정보, 네트워크 정보, 운영 중인 소프트웨어 등에 대해 조사 진행

  • 운영 중인 데이터베이스에 대한 종류 및 버전과 용량 확인

  • 업무 프로세스를 확인하여 동일 시스템이나 유사한 시스템이 있는지를 확인

  • 외부 용역 시스템 개발자와 퇴사한 시스템 개발자 및 운영자에 대한 정보 수집

 

다) IT / BT 실사

  • 데이터베이스 서버에 대한 메인프레임, 데스크탑 자원 정보 및 잉여 자원 보유 여부 확인

  • 데이터베이스에 대한 DBA 계정, 암호 확인, 사용 권한 미 보유자의 데이터베이스 접근 가능 여부 확인

  • 데이터베이스와 관련된 트랜잭션 로그 파일의 저장 위치 파악

  • 데이터베이스에 대한 조작, 변조, 삭제, 은닉 및 이중 시스템 유무 파악

  • 업무담당자의 PC 네트워크 정보와 프로세스 상태를 통해 이중 시스템 및 은닉 데이터베이스 찾기 가능

 

라) DB 증거 수집

  • 현장을 통제하여 관련 없는 사람을 현장으로부터 격리하여 현장 보존과 관계자 및 입회인 참관 시킴

  • 수사관이나 분석관이 바로 작업하지 않고 데이터베이스 관리자를 대동해 작업 지시를 하여 작업에 사용된 쿼리문 기록

  • 원활한 협조가 이뤄지지 않을 경우 직접 쿼리문을 사용하여 조사 가능 (이때도 사용한 쿼리문을 꼭 기록해야 함)

  • 특정 로그 및 설정 제어 파일은 DBMS마다 다르므로 사전에 각 DBMS 별 저장 경로 확인 및 수집

 

[표 1] RDBMS 별 증거 수집 파일 목록

Oracle DBF 데이터베이스의 실제 데이터가 들어있는 파일
CTL 데이터베이스 마운트 / 오픈 시에 사용하는 파일
LOG 데이터베이스 사용, 오류 등을 기록하는 파일
MySQL MYD MySQL 저장 엔진이 MyISAM일 경우 데이터베이스의 실제 데이터가 들어있는 파일
MYI MySQL 저장 엔진이 MYISAM일 경우 데이터베이스의 데이터 인덱스 정보를 담는 파일
FRM 테이블 구조에 대한 정보를 담는 파일 (어떤 저장 엔진이든 테이블이 생성되면 자동 생성)
ibdata MySQL 저장 엔진이 InnoDB일 경우 데이터베이스 데이터와 인덱스 정보를 담는 파일 
ibd MySQL 저장 엔진이 InnoDB이고 다수의 Table Space 사용이 허용된 경우 데이터베이스 데이터와 인덱스 정보를 담는 파일
binlog 데이터베이스 조직 / 조회에 사용된 쿼리문을 기록하는 로그 파일
Microsoft SQL Server MDF SQL Server의 데이터베이스 주 데이터 파일
NDF SQL Server의 데이터베이스 보조 데이터 파일
LDF 데이터베이스 사용, 오류 등을 기록하는 로그 파일
BAK 데이터베이스를 백업하는 파일

 

그리고 압수 대상 데이터베이스가 원격지에 있다면, 원격지 데이터베이스의 IP 및 패스워드 등의 정보를 확인하고, 네트워크 위치와 시스템 정보를 수집한다.

 

원격이 아닌 데이터베이스 서버를 압수할 경우, shutdown 명령 후 운영제제를 종료한다.

 

 

과거 시점의 데이터 압수 시에는 백업 데이터를 활용하여 수집하며, 증거 수집에서 목적에 맞는 자료만 추출할 경우, 데이터베이스 또는 운영체제 CMD 상에서 명령어를 입력하여 자료 추출 및 복사한다.

 

추출된 결과를 엑셀과 같은 파일로 가공하면 분석 및 조사가 수월해진다.

 

대부분의 기업은 데이터베이스를 주기적으로 백업을 실시하기 때문에 삭제된 데이터 또한 백업 데이터를 통해 복원이 가능하다.

 

마) 이송 및 보관 단계

  • 추출된 데이터베이스 복사본 또는 증거 파일의 해시 값을 계산하고 기록 및 확인 후에 보관

  • 해시 값은 증거물이 압수 및 분석 과정에서 부당하게 훼손되거나 변경되지 않았음을 검증하는 수단

  • 생성 후에는 증거 데이터 추출 시 작성된 문서 값과 비교 확인을 해야 함

  • 적은 용량의 증거물일 경우, CD 또는 DVD로 제작하여 레이블에 피압수자의 서명을 받음

  • 대용량 증거 파일은 분할하여 해시 값을 생성

  • 또한 증거물 이송 중에 손상 방지를 위한 대책 강구 필요 (충격방지 케이스, 정전기 방지용 랩 등 활용)

 

데이터 추출 시 고려 사항

  • 대형 범죄가 아닌 이상 규모가 큰 사이트에서 데이터베이스 전체를 복제하는 경우는 거의 없음

  • 저장 용량이 크고 복제 시간도 많이 소요되는데다가 개인 정보나 기밀 정보 유출 등의 위험이 있기 때문

  • 따라서 주로 미리 받은 ERD나 스키마로 데이터베이스 구조를 분석

  • 그 이후 쿼리문을 입력하여 필요한 부분만 덤프 진행

  • 덤프는 담당자가 직접 하거나 담당자 입회하에 수사관이 직접 수행

 

데이터 추출 과정에 앞서 데이터베이스 서버를 정지시킬 수 없는 경우에는 데이터베이스 덤프를 바로 시행하지 않고 해시 값을 먼저 생성하여 담당자나 소유자 확인과 서명을 받는다.

 

그리고 서버의 로그, 데이터베이스 테이블 space를 함께 복사하여 해당 데이터베이스 테이블을 재구성하는 데에 많은 시간이 소요되는 것을 방지한다.

 

레이드로 구성되어 있는 서버의 경우, 디스크를 분리하면 재구성이 어려워진다. (특히 레이드 10이나 01)

 

따라서 레이드가 구성되어 있는 상태에서 Encase 또는 dd로 이미징하거나 파일을 복사한다.

 

증거 자료를 확보한 후에는 역시 해시 값을 생성하여 관리자나 소유자에게 확인과 서명을 받아야 한다.

 

수집해야 할 기본 정보 리스트

  • 운영체제 시스템과 관련된 정보 (시스템 시간 / 날짜, 로그인 기록, 사용자 및 그룹, 네트워크 정보)

  • 실행중인 전체 프로세스 정보 (프로세스 간의 부모 자식 관계, 연결된 DLL 정보 등 확인)

  • 메모리 덤프 (메모리 내에 저장된 데이터 분석을 위해 필요 시에 메모리 덤프 수행)

  • 레지스트리 정보 (Windows Server를 사용하는 경우)

  • 데이터베이스 서버 내 모든 로그 파일 (이벤트 로그, 메시지 로그,  etc)

 

은닉 데이터베이스 실행 확인

  • 은닉 데이터베이스 실행 여부 확인을 우힌 방법으로 2가지 존재

  • 첫 번째는 프로세스 정보를 확인하는 방법

  • 두 번째는 네트워크 통신 상태를 확인하는 방법

윈도우 시스템의 경우 명령 프롬프트를 통해 [tasklist] 명령어를 통해 동작 중인 서비스를 확인할 수 있으며, 네트워크 정보는 [netstat -anob]를 통해 확인 가능하다.

 

그리고 리눅스의 경우 [ps -ef] 명령어로 프로세스 정보를, 네트워크 정보는 [netstat -anop]를 통해 확인 가능하다.

 

 

수집해야 할 데이터베이스 정보 리스트

  • 데이터베이스 종류

  • 데이터베이스 인스턴스 버전 정보

  • 휘발성 정보

  • 사용자 목록

  • 가장 최근에 실행된 SQL 파일 사본

  • 테이블 정보

  • 데이터베이스 전체 덤프 혹은 데이터베이스 내부 특정 파일들

  • 로그 파일 (Error, General, binary, Redo, Listener 로그 등)

  • 데이터베이스 백업 파일 

 

주요 증거 데이터

  • 휘발성 데이터베이스 Connection & Session 정보

  • 데이터베이스 전체 또는 특정 데이터베이스

  • 테이블 전체 또는 특정 테이블 또는 특정 레코드

  • 데이터베이스의 메타데이터 또는 테이블의 메타데이터

  • 데이터베이스 자체적으로 기록하는 로그 파일

  • 시스템 로그 파일

  • 애플리케이션 로그 파일

 

자료 수집 우선 순위

  • 1순위 : 데이터베이스 서버 Connection & Sessions 정보

  • 2순위 : 트랜잭션 로그

  • 3순위 : 데이터베이스 서버 로그

  • 4순위 : 데이터베이스 서버 파일

  • 5순위 : 시스템 이벤트 로그

 

데이터베이스 연결 정보와 트랜잭션 로그

  • 데이터베이스 연결 정보(접속 정보)와 트랜잭션 로그는 데이터베이스 포렌식에 있어 가장 중요도가 높음

  • 이는 어떤 사용자가 데이터베이스에 접속하여 어떤 쿼리를 사용하였는지에 대한 로그를 가지고 있기 때문에 향후 사건 추적에 매우 중요한 단서가 됨

  • 비 인가자가 중요 데이터를 지웠다고 가정할 경우, 연결 정보와 트랜잭션 로그를 추적하여 실마리 잡기 가능

  • 단, 대규모 시스템일수록 시간이 매우 오래 소요될 수 있음 


1-3. 증거 자료 분석 절차

  • 1) 추출한 데이터베이스 복사본  또는 증거 파일들의 해시 값과 문서에 기재된 해시 값을 비교

  • 2) 휘발성 정보를 획득했을 경우에는 메모리, 프로세스, 파일 등의 자원 사용 분석

  • 3) 데이터베이스 증거에 맞는 운영체제 및 프로그램을 구축하여 증거 파일 복제

  • 4) 데이터베이스 접속 프로그램과 로그 분석 프로그램을 사용하여 자료구조, 자료 관계, 접근한 사용자 목록, 사용 기록 등의 데이터를 획득하고, 목적에 따라 자료 복구를 수행

  • 5) 데이터베이스의 분석자, 분석 과정, 분석 결과 등 세부 사항 기록


1-4. 데이터 추출 관련 참고 자료

 

가) SAP를 활용한 데이터 추출

  • 많은 대기업들이 회계, 판매, 생산, 인사, 재정 등 중요 데이터를 통합적으로 관리 및 처리하기 위하여 ERP(Enterprise Resource Planning)라는 시스템 사용

  • 데이터베이스 포렌식에서는 ERP 데이터 추출을 위해, ERP 관련 제품 시장에서 가장 큰 점유율을 차지하는 SAP 사 S/W 사용

 

SAP 기능

  • GUI 기반으로 SE16, SE11 등 T-CODE라는 SAP 상에서 미리 정의된 추출 기능 사용

  • T-CODE 또는 트랜잭션 코드로 SAP 메뉴의 커맨드 필드에 명령을 입력하여 원하는 작업을 보다 빨리 수행

  • 시스템 작업을 경로를 찾아 들어가 수행하지 않아도 되는 바로가기와 비슷한 기능이라고 보면 됨

  • 약 200,000가지의 T-CODE가 존재하여 거의 모든 트랜잭션 기능 제공

  • 사용자가 T-CODE를 커스터마이징할 수 있지만 영문자, 숫자 조합 20자까지 가능

  • SE11 / 16은 관련 T-code 실행 권한이 필요하며, 데이터 용량이 큰 경우 런타임 오류가 발생할 가능성 있음 

 

SE16은 일반 테이블을 조회하는 SAP T-CODE를 의미하며, SE11은 ABAP Dictionary를 조회하는 SAP T-CODE를 의미한다.

 

ABAP (Advanced Business Application Programming)

  • SAP에서 개발한 SAP만을 위한 프로그래밍 언어로 데이터를 추출하는 데 사용

  • 서버 사이드 프로그래밍 언어로 개발을 위한 환경인 SAP Application Server에 접속하기 위한 SAP GUI 필요

  • SAP의 3가지 테이블 유형 모두의 데이터 추출 가능

SAP의 3가지 테이블 유형으로는 Transparent, Pool 그리고 Cluster라는 3가지 테이블 유형이 있다.

 

Transparent는 오직 하나의 테이블이 존재하며 데이터베이스와 1대1 관계를 형성한다.

 

주로 중요한 정보를 담은 마스터 데이터를 저장할 때 사용한다.

 

Pool은 커스터마이징 데이터나 자잘한 시스템 데이터와 같이 테이블 자체는 작지만 수가 많을 경우 사용하며, 데이터베이스와 다대일 관계를 형성한다.

 

Cluster는 큰 시스템 데이터와 같이 테이블이 크고 수가 적은 경우에 사용하며, 데이터베이스와 다대일 관계를 형성한다.

 

SQL Query

  • RDBMS에 직접 접근해 SQL 명령어를 입력하는 것으로 데이터 추출

  • 데이터베이스 구조(인덱스, 키 ,테이블, 데이터 관계 등)에 대한 이해 필요

  • SAP 테이블 중 Cluster 테이블과 Pool 테이블에 대한 데이터 추출은 편리하지 않음

 

ACL과 SAP Direct Link / ODBC (Open Database Connectivity)

  • ACL 사에서 개발한 Direct Link 소프트웨어로 모든 데이터에 접근하여 추출하는 방법

  • 반복적 업무를 batch 파일로 만들어 수행하는 것이 가능

  • 별도의 IFD(Input File Definition)가 없어 편의성이 높음

  • 하지만, 수사관의 PC 및 데이터 압수 대상 회사의 컴퓨터에 해당 S/W가 설치되어 있어야만 함

  • ODBC는 ACL에서 기본적으로 제공하는 프로그램

  • SAP 테이블 중 Cluster 테이블과 Pooled 테이블에 대한 데이터 추출이 편리하지 않음

 

 

나) Oracle ERP 데이터베이스 압수 체계

 

데이터 추출 방법

  • Standard Report 기능 이용 : Oracle Web Browser를 통해 압수 대상 데이터와 관련한 Standard Report를 다운로드하며, Data sources and relationship에 대한 지식이 필요하고 다운로드할 수 있는 레코드 길이에 제한 있음

  • SQL Query 이용 : RDBMS에 직접 접근하여 정의된 명령어를 사용하여 데이터를 추출하는 방법이며, 데이터베이스 구조(index, keys, tables, data relations)에 대한 이해 필요

 

 

다) Oracle의 전표, 기본 데이터 테이블 및 압수 방법

 

[표 2] Oracle의 전표, 기본 데이터 테이블

구분 테이블 테이블명 압수 방법
전표 데이터 GL_JE_HEADERS 전표 헤더 SQL Query
GL_JE_LINES 전표 라인
GL_CODE_COMBINATIONS 계정 배분 코드
GL_JE_BALANCE 계정별 잔액 테이블
기본 데이터 FND_FLEX_VALUE_SETS 원장 ID 별 계정 SET 정의 테이블
FND_FLEX_VALUE_VL 계정 SET 별 계정 과목 코드 / 과목명 테이블
FND_USER ERP 사용자 테이블
GL_PERIODS 회계 기간 테이블
GL_SETS_OF_BOOKS 원장 ID 테이블 (재무회계, 사업부회계 등)
GL_JE_SOURCES_TL 전표소스 (출처) 코드 테이블

# Reference

 

http://www.yes24.com/Product/Goods/87579830

+ Recent posts