Plaso

Digital Forensic Wikipedia
둘러보기로 가기 검색하러 가기

소개

plaso는 Kristinn Gudjonsson에서 개발한 타임라인 분석 도구이며, 프리웨어로 제공된다. 최신 업데이트 일자는 2014년 6월 7일이며, 최신 버전은 1.1.0이다. plaso는 Windows, Linux, Macintosh 운영체제 환경에서 사용가능하다. plaso는 구식의 Perl back-end Engine으로 인한 이슈들을 해결하기 위하여 이를 다시 Python으로 구현한 것으로 log2timeline에 비하여 기능상 지원하는 포맷이 다양화되었다는 차이점을 가진다. plaso의 실행 화면은 [그림 1]과 같다.

[그림 1] plaso console 실행 화면



사용법

plaso에 포함되어 있는 실행 파일은 아래 [표 1]과 같다.

[표 1] plaso 실행 파일 리스트
실행파일 명 설명
log2timeline 파일, 마운트 지점, 이미지 파일에서 이벤트 정보를 추출하고 이를 plaso storage 파일로 저장하여 추후 분석이나 프로세싱에 사용할 수 있도록 한다.
plasm Plaso Storage 파일에 tagging 또는 Grouping 처리를 한다.
pinfo plaso storage 파일은 수집 방법과 시간 정보를 가지고 있다. 또한 프로세싱 이전 단계의 정보를 가지고 있는데 pinfo는 이러한 정보를 plaso storage 파일로부터 출력해주는 기능을 담당한다.
pprof profiler 기능을 담당한다. parsing을 통해 상세한 profiling 정보를 출력한다.
preg 레지스트리 parsing에 초점을 맞춘 도구이다. 레지스트리 플러그인을 사용하여 image나 registry hive를 parsing하여 사용자가 콘솔 또는 shell에서 레지스트리를 통한 작업을 할 수 있도록 한다.
pshell iPython 콘솔로, 사용자가 plaso 라이브러리에 접근할 수 있도록 하며, 사용자가 프로그램을 기존에 디자인 된 방식 이외에 사용할 수 있도록 한다.
psort plaso storge 파일을 필터링이나 정렬 할 수 있게 한다. 새로운 storage 포맷이 사람이 읽을 수 있는 방식이 아니므로, 분석 작업 이전에 이 도구를 사용하도록 한다.



도구 기능

plaso에서 지원하는 log2timeline은 전 항의 log2timeline에 비하여 dump 파일만을 입력으로 받는다는 기능상 차이점을 가지고 있다. log2timeline의 결과는 plaso storage 파일 로 저장되며, 확장자는 dump이다. 아래 [그림 2]는 FTK Imager를 통해 2GB USB에 대한 USB Image인 dd 파일을 대상으로 log2timeline 기본 커맨드로 dump 파일을 생성한 것이다.

[그림 2] log2timeline

plasm은 tagging 파일을 통해 plaso storage 파일 내부의 event에 tag를 지정할 수 있으며 tagging file의 기본 구조는 [표 2]와 같다.

[표 2] tagging 파일 구조
TAG MESSAGE
CONDITION
CONDITION


위 구조에 따른 예제는 [표 3]과 같다.

[표 3] tagging 파일 예시
AutoRun
data_type is 'windows:registry:key_value' and plugin contains 'Run'


plasm을 사용하여 tagging 파일을 plaso storage 파일에 삽입하는 명령어는 [표 4]와 같으며 실행 예제는 [그림 3]과 같다.

[표 4] tagging 파일 삽입 예시
plasm tag --tagfile="tagging 파일 경로" "plaso storage 파일 경로"


[그림 3] plasm 실행 화면

pinfo는 plaso storage file의 정보를 나타내며 사용법은 [표 5]와 같다. 실행 예제는 [그림 4]와 같으며, 앞서 tagging한 내역도 [그림 5]와 같이 pinfo에서 나타난다.

[표 5] pinfo 사용법
pinfo -v [plaso storage 파일 경로]


[그림 4] pinfo 실행예제
[그림 5] pinfo tagging 내역

pshell이 가지고 있는 기능은 [표 6]과 같다.

[표 6] pshell 기능표
기능 설명
FindAllOutputs 모든 가능한 출력을 나타낸다.
FindAllParsers 모든 가능한 Parser를 나타낸다.
GetEventData Event Data의 hexdump를 출력한다.
openOSFile OS로부터 file entry를 오픈한다.
OpenStorageFile storage file을 오픈하여 object를 리턴한다.
OpenTskFile image file 내부의 파일 엔트리를 오픈한다.
OpenVssFile image file 내부의 VSS 파일 내부의 파일 엔트리를 오픈한다.
ParseFile 주어진 file entry를 parsing 한다.
pfile2File file-like object를 저장한다.
PrintTimestamp event object에 저장된 값을 timestamp 형식으로 출력한다.



preg는 image 파일에서 레지스트리 hive 파일을 검색하거나 레지스트리 hive 파일에서 특정 key를 찾아주는 기능을 제공한다. 아래 [그림 6]은 NTUSER.DAT에서 -k 옵션을 통해 AppEvents\EventLabels\Close의 key 값을 검색한 결과이다.

[그림 6] preg hive 검색 예제

preg로 key를 검색할 경우에는 Key의 정확한 경로를 알지 못할 경우 전혀 key를 검색할 수 없다는 단점이 있다. 결국 이름만 알고 경로를 모르는 Key는 찾을 수 없다. psort는 plaso storage 파일을 읽어 이벤트를 시간 순서로 나타내는 작업을 수행한다. 모든 결과를 나타내는 명령어는 [표 7]와 같으며, 실행 결과는 [그림 7]과 같다.

[표 7] psort 명령어
psort [plaso storage 파일 경로]


[그림 7] psort 실행 결과

psort는 Analysis 플러그인을 제공하는데, 플러그인 리스트는 [그림 8]과 같이 확인할 수 있다.

[그림 8] psort Analyze 플러그인 리스트

명령어 예시는 [표 8]과 같다.

[표 8] psort Analysis 플러그인 사용 명령어
psort --analysis browser_search output.dump



제한사항

plaso는 log2timeline을 사용하여 더 많은 분석 기능을 추가하였으나, 콘솔로 작업이 이루어지고, 옵션이 너무 다양하여 사용이 불편하다는 단점이 있다. 특히 plaso storage 파일이라는 포맷을 사용하는데 이것은 압축 파일 형식으로 그 내부에 각각의 파일을 저장하여 사용한다. 또한 pshell은 예제 스크립트가 Enscript만큼 다수에게 사용되지 않아 스크립트를 직접 구현해야 하며, preg은 AccessData의 Registry Viewer보다 사용이 불편하다.

수사 활용 방안

plaso가 콘솔 환경으로써 가지게 되는 장점은 Encase와 같은 GUI 도구와 달리 큰 이미지를 처리함에 있어 신속하다는 점이다. 예를 들어 대용량의 이미지 파일에서 레지스트리 hive를 추출하는 작업이나, Event를 추출하여 인터넷 브라우저 검색 내역을 추출하는 특정 작업에 대해서는 콘솔 환경인 plaso를 사용하는 것이 유용할 것이다.