동글동글 라이프
사용자 분석을 위한 포렌식 도구 Winproof 본문
사용자 분석을 위한 포렌식 도구 Winproof
Team Name : Source Diet
Project Leader : h0ney
Project Member : lscpjyoon, 비공개
Development-time : 2010.9.1 ~ 2010.11.31
개발 환경 : Windows XP
개발 도구 : MS Visual Studio 2008
개발 언어 : C/C++, C# , perl
버전 관리 : SVN
작년 한해동안 했던 여러 프로젝트 중에서
가장 심혈을 기울였던 작품입니다.
프로젝트를 시작하기 전 사전조사만 2달동안 밤새도록 했고,
국내와 국외의 포렌식 자료는 모조리 조사하고 긁어모으며,
포렌식이라는 학문을 이해하려고 노력하였습니다.
어떻게 하면 기존의 있는 도구보다 더 나은 툴을 만들 수 있을까
차별화된 기능은 무엇인가 많은 고민도 했지만,
기본 기능에도 충실했던 프로젝트입니다.
디지털 포렌식이 무엇인지 알고 싶으신 분은 제 블로그의 Forensic 이란? 을 읽어봐주세요 :)
- System Architecture
윈도우 XP 운영체제에서 닷넷프레임워크 3.5 C# 으로 제작을 하였으며
Assessment/Intergrity(평가 / 무결성 확보), Acquisition(수집), Analysis(분석), Restore(복구),
Document(문서화 및 보고)로 이루어 집니다.
이 과정에 따라 전체 적인 Architecture를 구성 하였으며,
데이터를 수집 시에 무결성, 저장 매체에 대한 디스크 이미징 기술,
정보 수집 기술을 바탕으로 데이터를 수집 합니다.
수집한 데이터를 바탕으로 복구기술을 거쳐,
필요한 정보들을 뽑아 내어, Registry Hive , Web Log, System Log 의 분류에 따라
데이터를 분류하여 분석하게 됩니다.
디지털 증거를 분석하고, 분석 완료 후 분류된 데이터를 타임프레임(timeframe)으로 표현이 가능하며,
분석 결과 및 전반적인 절차와 정보를 기술한 보고서를 작성 할 수도 있습니다.
Winproof는 디지털 데이터 원본 저장소로부터 데이터를 획득하여
원본 저장소의 배드섹터를 제외한 모든 디지털 데이터 원본과
비트 단위로 동일하게 생성하여 복사 원본 생성 합니다.
이런 과정에서 무결성을 확보 하기 위하여 MD5를 사용 하였으며
비휘발성 데이터를 복제할 경우 활성 파일 시스템의 타임스탬프가 변경될 가능성이 있으므로
복사하기 전 실제 원본 데이터의 타임 스탬프를 저장 한 후,
복사 완료시 실제 원본데이터의 타임스탬프의 시간대로 적용 시켰습니다.
획득한 복사 원본들을 데이터 유형에 따라 데이터를 분류하여 상세 분석을 하였으며,
타임프레임(timeframe)에 따른 분류를 통해 효율적이고, 신속한 증거 분석을 가능 하게 해줍니다.
- System Main UI
Winproof 의 메인 화면입니다.
분석은 2가지 모드로 이루어지며 Nomal 모드와 Document 모드로 구성되어 있습니다.
Nomal 모드는 총 4가지 모드로 이루어져 있으며,
레지스트리 분석, 웹로그 분석, 시스템 로그 파일 분석, 파일 복구 기능을 수행 할 수 있습니다.
Document 모드에는 TimeLine 기능과 문서 생성 기능을 수행 합니다.
TimeLine은 Registry, Systemlog, Weblog에서 분석된 데이터를
년, 월, 일 시에 따른 로그별 데이터 타임 라인을 제공합니다.
문서 생성 기능에서는 사용자 지정에 따른 각 모듈별 문서 작성 기능 및 문서 출력 기능을 할 수 있습니다.
Normal모드에는 디지털 증거 데이터를 상세 분석을 위한,
Registry Analysis, WebLog Analysis, Local Analysis, FileRecovery 기능이 있으며,
Documnet 모드는 Timeline Mode, 시나리오에 따른 문서화 기능으로 구성 되어 있습니다.
Setting 모드에는 디지털 저장 매체를
디스크 이미징, 조사관, 조사번호, 조사 내용을 설정을 위한 설정으로 되어 있습니다.
디지털 저장 매체로부터 디스크 이미지를 하기 위해,
디지털 저장의 볼륨명을 선택 하는 장면입니다.
간단히 저장 매체에 대한 이름, 볼륨 타임, 파일 시스템 종류,
사용 중인 공간, 사용 가능한 공간 디스크 용량을 알 수 있다.
디스크 이미지 완료 후에는 설정 창에서 Registry, Web, SystemLogFile 등
수집된 데이터들의 종류를 확인 할 수 있습니다.
디지털 저장 매체로부터 디스크 이미지 한 볼륨에 대한 정보를 확인 할 수 있으며
이미지 디스크 드라이브명, 볼륨 시리얼 번호, 이미징 파일 수, 삭제된 파일 수, 총 섹터 수, 시작 섹터,
섹터당 바이트수, 클러스터 바이트수 등에 대한 정보를 확인할 수 있습니다.
- Registry Analysis
레지스트리 하이브파일은 총 6개의 파일로서 사용자의 레지스트리에서 추출해온 데이터를 통해 분석을 합니다.
하이브 파일 분석으로 노드를 구성할 시 약 40만개 이상의 노드로 구성 되기 때문에
속도문제를 우선시로 하여 알고리즘을 처리 했으며, 분석이 완료된 시점에서 완료 버튼이 활성화 되게 됩니다.
레지스트리 Viewer 의 메뉴는 왼쪽과 같습니다.
큰 메뉴로는 레지스트리 Hive 정보, 원본 레지스트리 Tree , 기본정보, 파일 , 활동정보, 로그 등이 있습니다.
하위메뉴로는 각각의 설정값에 따른 정보들이 있고,
이 설정값들은 원본 레지스트리 Tree의 값들을 참조해서 분석이 된니다.
분석된 Hive 파일을 통해 트리노드를 구성해주며,
윈도우와 동일한 인터페이스를 통해, 분석이 쉽도록 직접 구성을 하였습니다.
각 키 값에 따른 Value 리스트를 확인 할 수 있고, 키의 값들을 직접 확인도 가능합니다.
Registry 종류에 따라 각각의 데이터를 볼 수 있는 Viewer 를 구성하여 선택된 값을
자세하게 확인할 수 있도록 하였습니다.
키 바로가기 기능은 해당 키를 바로 접근할 수 있습니다.
중요한 키를 바로 접근이 가능하며, 키가 없을 경우 접근하지 못합니다.
검색모드는 2가지로 나누어 집니다.
첫 번째로 내용을 대상으로 찾는 방법, 두 번째로는 날짜별 검색입니다.
날짜별 검색은 키, 값, 데이터를 기준으로 검색이 가능하며,
검색은 일반 레지스트리의 속도보다 훨신 빠르게 검색됩니다.
레지스트리 트리의 현재 키를 북마크에 저장 할 수 있고, 그 키들을 다시 찾아 갈 수 있습니다.
사용자 정보는 윈도우에 있는 사용자에 대한 계정별 정보를 나타냅니다.
사용자의 이름, 설명 홈 폴더경로 등과, 최종 로그인 시간 로그인 횟수 등 중요한 정보들을 가지고
있어 조사관이 분석을 할 때 필수적으로 필요한 항목 중 하나입니다.
윈도우의 설치정보는 윈도우 종류, 버전 , 시스템 루트 , 설치 시각 등을 알 수 있습니다.
네트워크 인터페이스 정보는 컴퓨터에 설치된 인터페이스 카드들의 정보를 알려 줍니다.
각 네트워트 인터페이스 카드별로 당시네트워크 환경을 그대로 재구성되기 때문에
매우 중요한 정보들을 담고 있습니다.
사용자가 접근했던 파일에 따른 정보들을 나열해주고 최근 접근한 파일, 최근 저장된 파일,
Explorer에서 열어본 파일의 정보를 알 수 있습니다.
최근에 저장된 파일을 확장자에 따라 확인할 수 있습니다.
각 확장자를 클릭하면 해당 확장자에 따른 파일을 확인할 수 있습니다.
위와 마찬가지로 최근에 접근한 순서대로 정렬을 합니다.
레지스트리 키의 바이너리 파일을 분석하면 Explorer에서 열었던 파일을 확장자 별로 확인할 수 있습니다.
활동했던 정보는 접근했던 Web Site, 실행창에서 입력된 프로그램, 실행된 최근 프로그램,
설치되었던 소프트웨어 등을 알 수 있습니다.
Explorer에서 접근 했던 WebSite 를 알 수 있고, 바로 그 웹사이트를 확인이 가능합니다.
실행창에서 입력했던 정보까지 알수있죠 :)
레지스트리 키인 UserAssist 를 통해 실행된 최근 프로그램의 파일의 경로 및 실행 횟수,
마지막 접근시간 등을 알 수 있다. 해당 프로그램에 따라 프로그램의 설명도 확인할 수 있습니다.
설치된 소프트웨어 뿐만이 아닌 설치되었던 모든 소프트웨어를 확인 할 수 있으며,
설치된 시각, 프로그램의 이름까지 확인이 가능합니다.
자세한 정보를 확인하기 위한 키 경로를 제공하며 키에 접근도 가능합니다.
USB 사용로그는 USB의 설정을 알 수 있으며 USB를 연결한 시각을 시작해서
USB의 이름, 장치설명, 장치 종류 등을 확인할 수 있습니다.
- Web Log Analysis
Winproof에서는 웹 브라우저 시장 점유율의 90%이상을 차지하는
Internet Explorer, FireFox, Chrome의 생성 파일 분석을 통하여
사용자 웹 브라우저 사용 내역을 효율적으로 추척 할 수 있도록 구현 하였습니다.
Internet Explorer의 Index.dat view, Chrome의 Log File view, Firefox Log File view 기능을 통하여,
사용자의 인터넷 사용 내역을 자세히 볼 수 있는 기능을 구현 하였습니다.
또한 3개의 웹 브라우저의 공통 내역인
방문 사이트, 검색어, 즐겨 찾기, 다운로드 정보 등을 볼 수 있도록 구현 하였습니다.
Internet Explorer는 윈도우즈 시스템에 기본적으로 설치 되어 있으며,
Internet Explorer는 Temporary Internet File, Cookies, History 폴더에 인터넷 사용 자용 정보를 저장합니다.
Temporary Internet File 폴더는 웹 서버로부터 불러온 임시 파일을 저장하며,
Cookies 폴더는 쿠키 파일을, History폴더는 사용자가 접속한 웹 사이트의 목록을 저장합니다
3곳 모두 index.dat파일을 통하여 관련 정보를 관리하는데
각 폴더의 index.dat 파일은 크게 header, Hash table, Activity record 3부분으로 구성 되어 있으며,
각 레코드 부분에서 사용자 흔적을 찾을 수 있습니다.
FireFox 로그 파일 분석
Firefox는 Cache, places,sqlite, cookies.sqlite에 인터넷 사용 정보를 저장합니다.
places.sqlite, cookies.sqlite는 웹 히스트리를 저장하는 파일로서 이름에서도 알 수 있듯이
SQLite database파일입니다.
places.sqlite에서 사용자의 웹 사용 기록을 추적 하기 위해 참조해야 할 테이블은 크게 2개로 구성 되어 있고 cookies.sqlite는 쿠키를 저장하는 파일입니다.
Documents and Settings\<username>\Local Settings\Application Data\Google\Chrome\User Data\Default에는 Web Data, History, Cookies 웹 로그 파일이 존재 합니다.
웹 로그 파일을 분석 하면, url, 웹 사이트 제목, 방문 시간, 숨김 여부,방문 횟수, 검색어,
폐기 날짜 등 사용자 정보 및 패턴을 분석 할 수 있습니다.
계정 정보에 따른 Web Log에 저장 되어 있는 값들을 검색 할 수 있는 기능과
날짜 별로 검색 할 수 있는 기능을 제공 해줍니다.
웹 브라우저를 오래 동안 사용 했을 경우, 로그 값들이 많이 존재 하기 때문에,
단어별 검색, 날짜별 검색 기능을 구현 하였습니다.
- System Log Analysis
이 모드는 XP가 설치된 PC 로컬 상에 존재하는 모든 파일들의 분석을 위해 존재합니다.
첫 번째 보이는 화면은 무결성에 의해 복사된 분석대상 파일들의 용량과 개수를 보여 줍니다.
크게 의미있는 정보는 아니지만 분석자에게 분석 대상을 확실하게 하기 위함입니다.
파일시스템 상에 존재하는 모든 파일 중에서도 다음 아래의 항목이 분석 대상입니다.
1. 이벤트 로그 분석
2. 윈도우 복원지점 분석
3. ADS 검색 모드
4. 파일 포맷 검색 모드
5. 바로가기(LNK) 분석 모드
6. JPEG 분석 모드
7. Application Prefetch 분석 모드
8. 윈도우 기본 로그 정보
9. 휴지통 분석
이벤트 로그 분석
기본적으로 3가지 기본 이벤트 로그 파일을 분석하며 분석자가 원한다면
다른 이벤트 로그 파일도 분석이 가능합니다.
여기서 제공되는 이벤트로그 뷰어가 기본적으로 윈도우에 존재하는 이벤트로그 뷰어와 차이점이라면,
복사한 .evt 파일을 자신의 윈도우즈 데스크톱 시스템으로 복사했을 경우에
손상된 파일이라는 메시지가 나올 수 있습니다.
이는 API에서 문제점을 발견할 수 있었는데, 이벤트 로그가 지워졌을 경우에
이벤트 로그의 영역 바로 앞의 첫 번째 레코드를 버퍼 영역으로 남겨 놓기 때문이었습니다.
이 버퍼 영역은 API를 통해서는 읽혀지지 않게 처리되며,
새로운 이벤트 레코드가 파일에 쓰여지는 경우에 이 영역은 순환 버퍼에서 없어지게 되는 구조였습니다.
따라서 바이너리로 읽어들였을 경우에는 API로 읽어들일 때와는
다른 온전한 삭제된 이벤트 로그에 접근 할 수 있었습니다.
해당 이벤트 리스트에서 더 자세한 정보를 원하는 이벤트에 대해
왼쪽과 같은 정보 창을 만들어 보았습니다.
이는 기본적인 이벤트 ID의 소스, 설명 등을 보여주며, 분석자의 편의를 위해
해당하는 EventID정보를 제공하는 웹사이트인
EventID.net의 Comment 내용을 파싱하여 분석자에게 제공한다는 점입니다.
윈도우 복원 지점 분석이란 XP 시스템의 복원 지점에서 유지되는 로그 파일들을 분석한 것입니다.
이 로그들의 특징은 컴퓨터가 수행되는 동안 차례대로 로그가 저장되며,
포렌식 관점에서 볼 때 만약 로그파일들의 시간대 순서가 변경되었다면
그 컴퓨터의 사용자가 임의로 시간대를 변경했다는 증거가 됩니다.
아래 화면에서 보는 것과 같이 복원 지점의 로그인 Rp.log와 Change.log.x를 분석하여 보여주며
이 로그들을 이용하여 <복원 지점이 생성된 시점>, <복원 지점의 타입>, <복원 지점의 설명>, <
복원 지점의 사이즈>, <복원 지점의 디렉터리명>, <복원 지점의 파일 리스트>,
<복원 지점 생성 시간의 연속성 여부>등을 보여 줍니다.
NTFS의 ADS 영역을 시각적으로 보여주는 탐색기. 유저 인터페이스 구성은 위와 같으며
ADS영역은 붉은 색으로 보여지게 구성하였습니다.
또 ADS 영역에 존재하는 파일을 검색해주는 기 능을 갖추고 있는데, 총 3가지 입니다.
<윈도우 기반 디렉터리 검색>, <전체 검색>, <해당 디렉터리만 검색> 이 있는데
기본적으로 V3나 알약과 같은 ADS 영역에 대한 악성코드 분석은 이루어 지지 않고 있으며,
악의적인 목적으로 바이너리 파일을 숨길 가능성이 있기 때문에 이러한 모드를 추가하였습니다.
파일 포맷 검색 모드란 어떠한 사용자가 임의로 확장자를 바꿔버렸을 경우에 사용된니다.
JPG, PDF등의 문서파일의 확장자를 감추더라도 파일의 바이너리를 분석하여 매칭시켜 찾아내는 모드입니다.
속도의 향상을 위해 1개 ~ 3개의 멀티 쓰레드를 사용하여 분석을 수행합니다.
이는 듀얼코어의 IBM 노트북에서 테스트를 거쳐 설정하였습니다.
기본적으로 저장된 파일 포맷의 종류는 총 282가지이며,
조사자가 임의로 검색할 확장자를 선택할 수 있게 인터페이스를 구축하였습니다.
바로가기파일인 LNK를 분석하여 보여줍니다.
조사 대상 하드디스크의 바로가기들을 사용자 계정별로
쉽고 빠르게 찾아낼 수 있는 인터페이스를 구축하였습니다.
LNK는 어느 한 시점에 사용자가 접근했던 파일 및 시간은 물론이고,
사용자가 시스템에 장착했던 장치의 파일들 (또는 네트워크 공유)에 관한 정보를 제공할 수 있습니다.
JPEG 파일의 Exif를 분석하여 보여주게 된니다.
Exif에는 포렌식 관점에서 유용한 정보를 많이 얻을 수 있습니다.
포토샵 수정 여부 등이나 기타 여러 가지 속성 정보를 알기 쉽게 리스트로 보여주게 되며,
JPEG 파일을 빠르게 보여주기 위해 3가지의 미리보기 형식으로 탐색하게 됩니다.
마찬가지로 여러 가지 검색기능을 제공한다.
프리패치 파일은 시스템의 부팅 및 실행 속도를 향상시키기 위해 만들어진 파일입니다.
프리패치 파일은 윈도우 메모리 관리자의 구성요소 중 하나인 프리패처가 만들고 관리되는데,
조사자는 이 프리패치에서 과거 또는 현재에 어떠한 프로그램이 설치 되었는지를 확인 할 수있습니다.
윈도우 어플리케이션 프리패치 파일을 분석해서 보여주는 모드인데
여기서 생성된 파일의 시간과 수행횟수, 프로세스 경로, 마지막 실행 시간등을 분석자에게 제공하며
프리패칭 파일 내부의 등록된 경로와 파일들을 간편하게 보여주는 모드입니다.
윈도우 기본 로그를 묶어서 보여주는 모드입니다.
포렌식 관점에서 유용하다는 로드들을 가져와서 보여주게 된니다.
여기서 보여지는 로그들은 자체적으로 파일포맷의 형식이 아닌 텍스트문서이므로
크게 수정을 하지 않아도 로그를 읽는데에는 불편함이 없기에 따로 크게 가공하여 보여주지는 않습니다.
항목으로는 <Setupact.log>, <Setupapi.log>, <Netsetup.log>, <Schedlgu.txt>,
<Mrt.log>, <Dr.watson> 등이 있습니다.
휴지통의 정보를 가지는 INFO2 파일을 분석하여 보여줍니다.
이를 이용하여 <마지막으로 휴지통을 비운 시점>, <마지막으로 삭제 작업을 한 시점>,
<SID>, <삭제된 파일 총 개수>, <삭제된 파일의 총 사이즈>등을 보여 주게 됩니다.
- File System
디스크 이미지 한 볼륨에 대해 파일 및 폴더를 파일 시스템 트리로 구성 하였습니다.
파일 및 폴더에 대한 이름, 크기, 종류, 수정한 날짜, 만든 날짜의 정보가 나타 납니다.
NTFS(New Technology File System)에 대한 검색 기능을 추가 하였습니다.
윈도우의 가상 파일 시스템에 대한 API 검색이 아닌,
NTFS의 MFT(Master File Table) 검색을 통해서 파일에 대한 정보를 가지고 왔습니다.
MFT에는 볼륨에 존재하는 모든 파일과 디렉토리의 정보를 담고 있는 테이블입니다.
그러므로 이 테이블을 분석 하면 볼륨에 있는 모든 파일과 디렉토리에 대한 정보를 전부 알아 낼 수 있습니다.
운영체제 API의 검색이 아닌 파일 시스템 그 자체의 검색이 가능 하기 때문에 검색 속도를 향상 시킬 수도 있습니다.
NTFS 파일 시스템에서 삭제된 파일에 대해 복구를 할 수 있는 기능입니다.
MFT 파일레코드를 순차적으로 읽어 들여 삭제된 파일을 목록화 합니다.
삭제된 파일에 대해 파일 이름, 만든 날짜 마지막 접근 날짜, 속성 값 등을 확인 할 수 있습니다.
복구 할 파일에 대해 새 파일 이름을 지정, 저장 경로를 지정 하여 삭제된 파일을 복구 시킵니다.
복구가 가능한 파일은 복구 완료 메시지 함께, 복구가 됩니다.
복구 실패 시, 복구를 할 수 없다는 메시지와 함께, 창이 종료 됩니다.
- 보고서 작성
분석관이 보고서를 작성할 때 쉽고 편하게 보고서를 작성하기 위해,
분석된 자료에 따라 자동으로 보고서를 작성하는 기능을 구현하였습니다.
Microsoft Word 양식인 DOC 포맷으로 파일이 저장 되며,
다양한 형태로 문서를 작성 할 수 있는 기능을 가지고 있습니다.
- TimeLine Viewer
조사자에게 각 사건에 대한 시간대를 보는 것은 중요합니다.
우리는 이점을 고려하여 현재 존재하는 타임라인의 인터페이스를 더욱 개선시키고,
타임라인 항목을 더 보완하였습니다.
마지막은 팀원들 사진입니다 ㅋㅋ
참고문헌
- The Windows NTRegistry File Format Version 0.4 Timothy D. Morgan tim-
registry(a)sentinelchicken.org , June 9, 2009
- The Secrets Of Registry Analysis Revealed - Harlan Carvey
- 인사이드 윈도우즈 포렌식 Windows Forensic Analysis 2/e, 정상민, 정명수, 비제이퍼블릭
- 해킹 사례로 풀어쓴 웹 보안, 심슨 가핀켈, 진파포드 저, 한및미디어
- 사이버범죄 소탕작전 : 컴퓨터 포렌식 핸드북 Ed Tittel/강 유 에이콘
- 해킹과 포렌식 입문, ALFRED C, 그린
- 윈도우 포렌식 실전 가이드, 고원봉 ,한빛미디어
- 인사이드 윈도우즈 포렌식 / 할렌 카비 / 디지털 해킹 분석 및 대응의 기술 퍼블릭
====================================================================================================
- 후기
프로젝트 기간이 3개월 정도인 단기간인데도 불구하고
소스코드가 라이브러리를 포함하여 약 14만줄 정도 나왔습니다.
또한 꾸준히 SVN을 사용하여서 3400여개가 넘는 네이버 오픈소스 프로젝트중에
네이버에서 활동랭킹 37위까지 올랐던 추억이 남아있네요 ^^;
다양한 언어 및 플랫폼을 격어본것도 나름 매력 있었습니다.
C# (UI 및 모듈 ) , C/C++ ( 파일 복구 ) , Perl ( 포렌식 도구 소스코드 분석 ) , WPF ( 타임라인 )
이건 올려도 될지 모르겠지만...
경찰청 포렌식 센터에서 도구에 대한 검증 세미나 까지 했었습니다 >_< /
이렇게 열정을 쏟아낸 프로그램이지만
아쉽게도 프로그램을 사용하는 사람은 한정적이고,
대중성이 없다보니 마땅히 공모전을 낼 곳이 없군요..
하지만 즐겁고, 재밌었고, 그리고 무지무지하게 빡셌던 프로젝트였습니다.
마지막으로 사랑한다 우리 Source Diet 팀~ㅋㅋ
'Project' 카테고리의 다른 글
Sparouts World - Windows7 Mobile App (4) | 2011.05.05 |
---|---|
사용자 분석을 위한 포렌식 도구 Winproof [ 동영상 ] (1) | 2011.04.08 |
[Bada Developer Challenge ] Contacts Ranking (1) | 2010.09.02 |
Digital Forensic Tool Winproof (2) | 2010.07.25 |
The Contents for Studying English using American TV Dreamas (4) | 2010.06.08 |