본문 바로가기

보안/포렌식

Windows Search 분석 프로그램 (Windows.edb)

이 프로그램은 Digital Forensics Challenge 2018 에서 최초 공개했으며 무료로 사용이 가능하다.

다운로드 링크 : https://moaistory.blogspot.com/2018/10/winsearchdbanalyzer.html


Windows Search Database로부터 획득가능한 정보 : 
 - 파일 구조
 - 인터넷 마지막 방문한 페이지, 접속 기록, 즐겨찾기(Edge, IE)
 - OneNote 노트명
 - Outlook 메일 수신 시간, 내용
 - 기타 MS 프로그램

장점 :
 - 안티포렌식 극복(CCleaner 외..)
 - 파일 내용 (최대 2KB)
 - 많은 시간 정보
 - 삭제된 레코드 다량 존재


사용자 행위를 추적하기에 적합한 Windows Search Database 분석 프로그램에 대해 설명한다.

이 데이터베이스에는 웹방문기록, 아웃룩 메일 수신 시간 및 본문내용, 바로가기파일, 원노트, 파일 실제 내용 등 다양한 기록 등이 저장된다.

이 연구를 하게된 큰 이유는 바로 안티포렌식 프로그램 때문이다. 사고조사 업무 중 가장 큰 문제가 안티포렌식으로 모든 로그가 지워져 원인을 찾을 수 없을 때 일것이다.

회사별로 자체적인 안티포렌식 도구가 있을 수 있고 유명 안티포렌식 프로그램을 사용하는 개인 사용자도 있을 수 있다. 모든 로그가 지워져 답답할 때 혹시 모르는 심정으로 Windows.edb를 분석했고 이를 통해 사고조사업무를 해결할 수 있었다.

사람들에게 안 알려진만큼 아직까지는 이 흔적을 지우는 안티포렌식 도구를 발견하지 못했다.

Windows 10으로 변화하면서 Windows Search Database 또한 구조가 바뀌었다. 시간 포맷과 압축방식의 변경되었는데 현재 오픈소스로 Github에 공개된 코드는 이를 업데이트 하지 않아 윈도우 10의 제대로 분석할 수가 없었다. 대표적인 포렌식 도구인 log2timeline - plaso에서도 이 코드를 이용하는데 제대로 복구를 하지 못한다.



1. 개요 : 

Windows OS는 사용자가 파일을 빠르게 검색할 수 있도록 색인 기능을 제공한다. Windows Vista/7부터 ESE 데이터베이스라는 Windows 자체 데이터베이스 엔진으로 색인 정보들을 저장한다. 기본적으로 최근에 사용자가 사용한 파일이나 자주 사용하는 파일들에 대한 정보를 저장한다. 포렌식분석가가 시스템의 파일정보를 분석할 때 주로 Windows 파일시스템의 정보를 저장하는 MFT 파일을 분석하는데 Windows Search Database 또한 MFT 파일과 매우 유사하다. 차이점으로 Windows Search Database에는 파일에 대한 정보가 저장되어 있을 뿐만 아니라 문서 파일에 작성된 내용을 저장하고 삭제된 레코드 복구 시 사용자의 행위를 담고 있는 많은 파일들에 대한 정보를 복구할 수 있다. 

Windows Search Database 포렌식의 가장 큰 문제점은 분석할 수 있는 도구의 부재이다. 포렌식 관점에서 매우 가치가 있지만 현재까지 삭제된 기록을 복구할 수 있는 분석 프로그램이 공개되지 않았으며 기존의 분석도구는 정상적으로 종료된 상태의 database만 분석이 가능하고 매우 느리다. 이는 400개가 넘는 칼럼의 테이블을 모두 분석하기 때문이며 메모리 부족으로 인해 빈번하게 프로그램이 강제 종료된다.

이러한 문제점을 해결하기 위해 Windows Search Database 분석 방법을 연구하고 분석프로그램을 개발하였다. 이 프로그램을 통해 Windows에서 파일들을 삭제한 뒤 그 기록에 대한 복구와 파일 내용 또한 복구될 수 있음을 증명한다.


다음 링크를 통해 시연영상을 확인할 수 있다. 

https://youtu.be/BtHUC0MsZQM



2. Windows Search Database란?

Windows Vista/7부터 사용자의 편의성을 위해 ESE 데이터베이스 엔진을 사용해 시스템 파일들에 대한 색인 정보들을 저장한다. Windows.edb라는 파일에 해당 기록을 저장하며 그 경로는 다음과 같다.

%PROGRAMDATA%\Microsoft\Search\Data\Applications\Windows\Windows.edb

이 파일의 기본 용량은 32MB이지만 시스템을 오랫동안 사용할 경우 누적되며 저장되기 때문에 용량이 매우 커질 수 있고 삭제된 레코드 복구 시 다른 아티팩트에서 확인할 수 없는 오래 전 사용했던 파일에 대한 기록을 복구할 수 있다. 제어판 옵션을 통해 색인을 중지할 수 있고 모든 파일에 대한 색인이 가능하도록 설정할 수 있다. 기본적으로 최근에 사용자가 사용한 파일이나 자주 사용하는 파일들에 대한 정보를 저장한다.


3. 과거 연구
Windows Search Database의 디지털 포렌식에 대한 연구는 이미 오래전부터 이루어졌으며 그 가치는 2011년에 이미 입증되었다. 

Windows Search Database는 ESE Database 엔진을 사용하는데 ESE Database 내의 삭제된 삭제된 레코드 복구 기법은 정보보호학회 논문지와 2016년 DFRWS USA 학회에서 소개 되었다. 이미 공개되었기 때문에 따로 이 문서에 복구 방법에 대해 작성하지 않았으며 그 내용은 아래 링크를 통해 확인할 수 있다.

Internet Explorer 10, 11버전과 Edge 브라우저 또한 ESE Database 엔진을 사용한다. 해당 분석 프로그램은 2016년 개인블로그에 공개했으며 인터넷 사용기록 뿐만 아니라 Private Browsing에 대한 기록까지 복구할 수 있다. 



4. Windows Search Database 분석

다른 ESE Database 파일과는 다르게 3개의 테이블을 모두 분석해야만 Windows Search Database에서 가치 있는 정보를 획득할 수 있다. 파일 상세 정보를 담고 있는 테이블 1개만 파싱할 경우 정확한 정보를 얻을 수 없다. 분석 순서는 다음과 같다.

 


폴더 정보는 SystemIndex_Gthr 테이블에 존재하며 부모 폴더 ID를 Parent 칼럼에 저장, 각 폴더의 고유 ID를 Scope 칼럼에 저장한다. 

파일 정보는 SystemIndex_GthrPth 테이블에 존재하며 ScopeID 칼럼에 저장된 ID는SystemIndex_Gthr 테이블의 Scope 칼럼에 저장되었던 ID와 동일하다. 이 정보를 통해 파일들이 어느 폴더에 있는지 매칭시킬 수 있다.

파일에 대한 상세 정보는 Windows 7의 경우 SystemIndex_0A 테이블에 저장되고 Windows 10은 SystemIndex_PropertyStore에 저장한다. 이 테이블에는 파일에 대한 수정, 삭제, 생성 시간 뿐만 아니라 파일 내용, 경로, 타입, 확장자, 분류, 권한, 크기 등 파일의 모든 색인 정보가 저장된다. 첫번째 칼럼에 각 파일의 고유 ID가 저장되는데 이 ID는 SystemIndex_GthrPth의 DocumentID 칼럼에 저장된 ID와 동일하다. 

추가적으로 파일 내용은 System_Search_AutoSummary 칼럼에 기록된다. 

이 테이블은 400개 이상의 칼럼으로 구성되어 있는데 대부분 빈 칼럼이며 포렌식 관점에서 모든 테이블을 분석할 필요가 없다. 현존하는 분석 프로그램은 모든 칼럼을 파싱하기 때문에 메모리 부족으로 인해 강제종료되거나 일부만 파싱하는 경우가 대부분이다. 따라서 주요한 테이블만 파싱하여 분석 속도를 향상시킬 필요가 있다. 

각 테이블을 파싱하는 시간은 매우 오래걸리며 폴더 정보를 파일 정보와 매칭, 파일 정보를 파일 상세 정보에 매칭 시키는 과정은 매우 불편하다. 이러한 문제점을 해결하기 위해 WinSearchDBAnalzyer라는 도구를 구현하였다. 

또한 ESE Database의 삭제된 레코드는 복구 가능성이 이미 증명되었으며 사용자가 파일을 삭제하거나 의도적으로 숨기더라도 복구가 가능하다. 이러한 기능을 위해 삭제된 레코드 복구 기능을 추가하였으며 프로그램의 Unknown 경로에 그 내용이 매칭된다.

파싱, 삭제된 레코드 복구기능 구현


Windows Search Database 분석 3단계 자동화


5. 결론

Windows Search Database의 디지털 포렌식에 대한 연구는 이미 오래전부터 이루어졌으며 그 가치는 이미 입증되었다. Windows Search Database는 MFT 파일에서 확인할 수 없는 문서 파일에 작성된 내용을 저장하고 삭제된 레코드 복구 시 사용자의 행위를 담고 있는 많은 파일들에 대한 정보를 복구할 수 있다. 

Windows Search Database 포렌식의 가장 큰 문제점은 분석할 수 있는 도구의 부재이다. 포렌식 관점에서 매우 가치가 있지만 현재까지 삭제된 기록을 복구할 수 있는 분석 프로그램이 공개되지 않았으며 기존의 분석도구는 정상적으로 종료된 상태의 database만 분석이 가능하고 매우 느리다. 불필요하게 400개가 넘는 칼럼의 테이블을 모두 분석하여 속도가 매우 느리고 메모리 부족으로 인해 빈번하게 프로그램이 강제 종료된다.

이러한 문제점을 해결하기 위해 Windows Search Database 분석 방법을 연구하고 분석프로그램을 개발하였다. 이 프로그램을 통해 Windows에서 파일들을 삭제한 뒤 그 기록에 대한 복구와 파일 내용 또한 복구될 수 있음을 증명하였다.


ESEDatabaseView의 메모리 부족으로 인한 강제종료


'보안 > 포렌식' 카테고리의 다른 글

배치파일(*.bat)을 이용해 시스템 정보 수집  (0) 2020.02.06
리눅스 주요 로그  (0) 2016.12.09
이메일 아티팩트  (0) 2016.12.09
외장 저장장치 포렌식  (0) 2016.12.09
이미지 파일을 VMWare에서 부팅하기  (0) 2016.11.03