Windows USB Storage Parser(USP)

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

소개

[그림 1] 라이선스 없이 USP 실행 화면

레지스트리 분석 도구인 Windows USB Storage Parser(이하 USP)의 제조회사는 미국에 위치한 TZWorks이다. 해당 도구는 누구나 제조회사의 다운로드 페이지에서 도구를 무료로 다운을 받을 수 있지만, 도구를 사용하려면 라이선스가 반드시 필요한 상용 소프트웨어이다 ([그림 1] 참조). 한번 라이선스를 구입을 하면 1년 동안 도구를 제약 없이 사용 할 수 있다.



[그림 2] 라이선스 구입 후 USP 실행 화면



라이선스를 구입 및 설치를 하면 [그림 2]와 같이 창 상단에 ‘full ver.’이라고 보이며, USP의 명령어들에 대한 소개가 화면에 출력된다. USP도구를 이용하여 도구가 실행중인 PC에서의 레지스트리 정보를 통해 저장소 디바이스에 대한 정보를 화면에 출력 또는 txt나 csv로 출력 할 수 있다. 또한 이미지(dd파일, 파일시스템은 NTFS인 경우) 파일 또는 Vmware 파일에서 USB 디바이스에 대한 정보를 획득할 수 있다.

사용법

USP는 CLI(Command line Interface)로 동작하는 도구이다. 반드시 관리자 권한으로 명령프롬프트(Cmd)창을 실행해야 하며, USP 도구를 설치한 디렉터리로 이동을 하여 USP를 직접 실행시켜야 한다. 또한 사용하고자 하는 명령어를 직접 명령프롬프트 창에 입력해야하고, 파일을 읽어 들일 때도 파일이 있는 경로도 모두 입력해주어야 한다. 기본적인 명령어들은 [표 1]과 같다.

[표 1] USP의 기본 명령어
명령어 설명
usp64.exe -livesys pull artifacts from live sys
usp64.exe -sys <syshive> [-user <userhive>] [-setupapi <file>] [-sw <swhive>]
usp64.exe -image <file> [-offset <vol offset>] use image as source
</nowiki> file2 <nowike>|</nowiki> .." process a VMWare VMDK vol
usp64.exe -drivenum <#> [-offset <vol offset>] use drive num as source
usp64.exe -partition <drive letter> use partition as source
usp -vss <index> use vol shadow as source



마지막으로 추가적인 옵션에 대한 명령어는 [표 2]와 같다.

[표 2] USP의 옵션 명령어
명령어 설명
-csv output is comma separated value format
-v verbose, multiple lines per record
-sys "system hive" use specified system hive
hive2 | ..." add user hive(s) to analysis
file2 | .." add setupapi file(s) to analysis
-sw "software hive" add s/w hive to analysis



도구 기능

USP를 처음 실행시키면 명령어들이 화면에 출력된다. 사용법에서 이미 설명한 내용대로 [그림 2]를 보면 USP에서 사용 할 수 있는 명령어들이 화면에 나타난다. 기능에는 총 4가지의 기능이 있다.
첫 번째 현재 도구가 실행 중인 PC의 USB 디바이스 읽어오는 기능, 두 번째 dd 이미지 파일(파일시스템은 NTFS)에서 USB 디비이스 정보 읽어오는 기능, 세 번째 여러개의 연결고리로 연결된 vmdk파일의 상위 vmdk파일 찾기 기능, 수집한 레지스트리 하이브 파일 읽어 들이는 기능에 대해서 살펴볼 것이다. 첫 번째 현재 도구가 실행 중인 PC의 USB 디바이스 읽어오는 기능이 있다. 사용하고자 하는 명령어 뒤에 Basic Options 멍령어 혹은 Additional Options 명령어를 붙이면 된다. ‘usp64.exe –livesys’의 경우 현재 USP가 실행되고 있는 PC의 USB 디바이스에 대한 정보를 가져오게 되는데, 그 정보를 txt 혹은 csv파일로 저장이 되게끔 하는 것이 더 효율적이다. 아래 [그림 3]은 txt파일로 저장하도록 설정하고, csv파일로도 저장하도록 설정한 것이다.

[그림 3] USP 출력형식 지정 화면 예시


결과가 저장된 txt와 csv파일의 내용은 [그림 4]와 [그림 5]와 같다. ‘usp64.exe –livesys’을 따로 저장방법을 설정하지 않고 그냥 실행시키면 USB 디바이스에 대한 정보가 그대로 명령프롬프트 화면에 출력된다. 하지만 화면의 줄 간격 등이 정렬되어 있지 않아 정보를 쉽게 확인하기가 어렵다.

[그림 4] USB 디바이스 정보의 txt 출력 화면
[그림 5] USB 디바이스의 정보의 csv 출력 화면

두 번째 dd 이미지 파일(파일시스템은 NTFS)에서 USB 디바이스 정보 읽어오는 기능이 있다. 파일시스템이 NTFS인 이미지 파일을 [그림 6]과 같이 읽어 들인다. 이미지 파일을 읽어 들이면 시스템 볼륨이 시작되는 Offset주소를 화면에 출력된다. Offset에 대한 추가 명령어를 이용하라고 화면에 나온다. 그러면 [그림 7]과 같이 명령어를 사용하면 된다.

[그림 6] dd 이미지 파일 입력한 화면
[그림 7] Offset 명령어 실행 화면

세 번째 여러개의 연결고리로 연결된 vmdk파일의 상위 vmdk파일 찾기 기능이 있다. Vmware의 vmdk파일은 스냅샷이 저장된 이미지 파일인데, 이 vmdk파일의 경우, vmdk파일끼리 여러 개의 연결고리를 형성 할 수 있다. 이렇게 연결고리를 형성한 vmdk파일 중 일부를 USP를 이용하여 상위에 연결된 vmdk파일을 찾을 수 있다. 단, vmdk의 스냅샷 이미지 파일의 파일시스템은 마찬가지로 NTFS이여야 한다. [그림 8]은 예로 ‘Windows 7 x64 (VMware)-000002-s002.vmdk’이라는 vmdk파일을 USP에 입력한 것이다.

[그림 8] vmdk 입력한 결과 화면

그 결과 상위 연결고리에 있는 vmdk파일인 ‘Windows 7 x64 (VMware)-000002.vmdk’로 화면에 출력되었다. 마지막으로 수집한 레지스트리 하이브 파일 읽어 들이기 기능이 있다. 외부에서 수집한 레지스트리 하이브 파일을 USP를 이용하여 읽어 들일수가 있다. 미리 수집한 레지스트리 하이브 파일을 USP가 설치되어 있는 디렉터리 폴더 안에 이동시켜놓은 상태이여야 한다. [그림 9]는 예로 레지스트리 하이브 파일인 system과 ntuser.dat파일, setupapi.dev.log파일의 정보를 result.txt.파일에 저장하라고 명령한 것이다. 텍스트 파일에 저장을 하지 않으면 정보들이 화면에 그대로 출력된다.

[그림 9] txt로 출력 지정 화면



제한 사항

USP는 명령프롬프트 창을 이용하여 명령어를 사용자가 직접 일일이 다 입력해야하는 번거로움이 있다. 특히 이미지 파일이나 vmdk파일을 입력할 때 파일이 존재하는 디렉터리 경로까지 모두 입력해야한다. 그래서 명령프롬프트 이용에 익숙하지 않은 사용자의 경우 많은 불편함이 존재한다. USP 도구의 제조회사가 미국이다 보니 모든 시간은 미국을 기준으로 도구가 작동한다. 사용자가 이용하는 국가에 맞게 시간을 바꾸는 기능이 없어서 필요하다면 시간을 일일이 사용자의 국가 시간에 맞게 계산해야하는 불편함이 존재한다. 또한 이미지 파일은 dd 이미지 파일 이외에 지원되지 않으며(예를 들어 Encase의 E01등의 이미지 파일은 지원되지 않는다.), 또한 파일 시스템이 NTFS인 경우에만 도구를 이용 할 수 있다는 제약이 있다.

수사 활용 방안

NTFS 파일시스템을 이용하는 dd 이미지 파일이 있는 경우, 다른 도구로 이미지 파일을 열어 일일이 Offset을 보는 번거로움 없이 USP를 이용하면 시스템 볼륨의 시작 Offset을 쉽게 알 수 있다. 그렇기 때문에 시스템 볼륨의 시작 Offset을 알고자 할 때, USP는 유용한 도구로 이용 할 수 있을 것으로 보인다. 또한 연결고리 상에 존재하는 여러개의 vmdk가 존재하고, 이 vmdk파일들의 파일명이 별다른 의미 없이 뒤바뀌어 있을 때 상위에 연결되어 있는 vmdk파일을 알아내고자 할 때 USP도구가 유용하게 사용될 수 있을것으로 보인다. 그 외에 레지스트리에 대한 정보를 CSV파일과 같이 정형화된 형식의 파일로 저장하고자 할 때 USP도구는 적절히 활용이 가능한 것으로 보인다.