
Python 도구 및 라이브러리로, 맬웨어 분류 및 분석 중 파일 분석을 지원합니다.
pftriage는 악성코드 트라이지(triage) 중 파일을 분석하는 데 도움을 주는 도구입니다. 분석가가 트라이지 과정에서 파일의 속성을 빠르게 확인하고 추출할 수 있도록 해줍니다. 또한, 악성코드에서 흔히 사용되는 악성 지표를 탐지할 수 있는 분석 기능이 있습니다.
참고: Mac에서는 Apple이 자체 file 명령어를 구현했습니다. 그러나 libmagic은 homebrew를 사용하여 설치할 수 있습니다.
$ brew install libmagic
usage: pftriage [options]
Show information about a file for triage.
positional arguments:
file The file to triage.
optional arguments:
-h, --help show this help message and exit
-i, --imports Display import tree
-s, --sections Display overview of sections. For more detailed info
pass the -v switch
--removeoverlay Remove overlay data.
--extractoverlay Extract overlay data.
-r, --resources Display resource information
-R, --rich Display Rich Header information
-D DUMP_OFFSET, --dump DUMP_OFFSET
Dump data using the passed offset or 'ALL'. Currently
only works with resources.
-e, --exports Display exports
-a, --analyze Analyze the file.
-v, --verbose Display version.
-V, --version Print version and exit.
--nobanner Don't display the banner.
-s 또는 --sections 스위치를 사용하여 섹션 정보를 표시합니다. 추가로 -v를 전달하면 섹션 세부 정보를 더 자세히 볼 수 있습니다. 섹션을 내보내려면 --dump와 원하는 섹션 가상 주소를 전달하십시오. (예: --dump 0x00001000)
---- Section Overview (use -v for detailed section info) ----
Name Raw Size Raw Data Pointer Virtual Address Virtual Size Entropy Hash
.text 0x00012200 0x00000400 0x00001000 0x000121d8 6.71168555177 ff38fce4f48772f82fc77b4ef223fd74
.rdata 0x00005a00 0x00012600 0x00014000 0x0000591a 4.81719489022 b0c15ee9bf8480a07012c2cf277c3083
.data 0x00001a00 0x00018000 0x0001a000 0x0000ab80 5.28838495072 5d969a878a5106ba526aa29967ef877f
.rsrc 0x00002200 0x00019a00 0x00025000 0x00002144 7.91994689603 d361caffeadb934c9f6b13b2474c6f0f
.overlay 0x00009b30 0x0001bc00 0x00000000 0x00000000 0 N/A
-r 또는 --resources를 사용하여 리소스 데이터를 표시합니다.
---- Resource Overview ----
Type: CODATA
Name Language SubLang Offset Size Code Page Type
0x68 LANG_RUSSIAN RUSSIAN 0x000250e0 0x00000cee 0x000004e4
0x69 LANG_RUSSIAN RUSSIAN 0x00025dd0 0x000011e6 0x000004e4
Type: RT_MANIFEST
Name Language SubLang Offset Size Code Page Type
0x1 LANG_ENGLISH ENGLISH_US 0x00026fb8 0x0000018b 0x000004e4
특정 리소스를 추출하려면 -D와 원하는 오프셋을 사용하십시오. 모든 리소스를 추출하려면 특정 오프셋 대신 ALL을 전달하십시오.
-i 또는 --imports를 사용하여 임포트 데이터와 모듈을 표시합니다. 오디널(Ordinal)로 식별된 임포트는 식별되며 사용된 오디널을 포함합니다.
[*] Loading File...
---- Imports ----
Number of imported modules: 4
KERNEL32.dll
|-- GetProcessHeap
|-- HeapFree
|-- HeapAlloc
|-- SetLastError
|-- GetLastError
WS2_32.dll
|-- getaddrinfo
|-- freeaddrinfo
|-- closesocket Ordinal[3] (Imported by Ordinal)
|-- WSAStartup Ordinal[115] (Imported by Ordinal)
|-- socket Ordinal[23] (Imported by Ordinal)
|-- send Ordinal[19] (Imported by Ordinal)
|-- recv Ordinal[16] (Imported by Ordinal)
|-- connect Ordinal[4] (Imported by Ordinal)
ole32.dll
|-- CoCreateInstance
|-- ...
-e 또는 --exports를 사용하여 익스포트를 표시합니다.
[*] Loading File...
---- Exports ----
Total Exports: 5
Address Ordinal Name
0x00001151 1 FindResources
0x00001103 2 LoadBITMAP
0x00001137 3 LoadICON
0x000010e9 4 LoadIMAGE
0x0000111d 5 LoadSTRINGW
-R 또는 --rich 플래그를 사용하여 리치 헤더를 표시합니다.
[*] Loading File...
-- Rich Header Details --
Checksum: 0x2b41e6a9
Id Product Count Build Id Build
-- ------- ----- -------- -----
150 AliasObj900 1 20413 <Unknown>
132 Utc1500_CPP 36 21022 9.0 2008
149 Masm900 17 21022 9.0 2008
123 Implib800 3 50727 11.0 2012
1 Import0 102 0 <Unknown>
131 Utc1500_C 123 21022 9.0 2008
145 Linker900 1 21022 9.0 2008
파일 및 버전 메타데이터는 명령줄에 옵션을 전달하지 않으면 표시됩니다.
[*] Loading File...
[*] Processing File details...
---- File Summary ----
General
Filename samaple.exe
Magic Type PE32 executable (GUI) Intel 80386, for MS Windows
Size 135168
First Bytes 4d 5a 90 00 03 00 00 00 04 00 00 00 ff ff 00 00
Hashes
MD5 8e8a8fe8361c7238f60d6bbfdbd304a8
SHA1 557832efe10daff3f528a3c3589eb5a6dfd12447
SHA256 118983ba4e1c12a366d7d6e9461c68bf222e2b03f3c1296091dee92ac0cc9dd8
Import Hash 0239fd611af3d0e9b0c46c5837c80e09
ssdeep
Headers
Subsystem IMAGE_SUBSYSTEM_WINDOWS_GUI
Linker Version 12.0 - (Visual Studio 2013)
Image Base 0x400000
Compile Time Thu Jun 23 16:04:21 2016 UTC
Checksum 0
Filename sample.exe
EP Bytes 55 8b ec 51 83 65 fc 00 8d 45 fc 56 57 50 e8 64
Signature 0x4550
First Bytes 4d 5a 90 00 03 00 00 00 04 00 00 00 ff ff 00 00
Sections 4
Entry Point 0x139de
Packed False
Size 135168
Characteristics
IMAGE_FILE_32BIT_MACHINE
IMAGE_FILE_EXECUTABLE_IMAGE
IMAGE_FILE_RELOCS_STRIPPED
PFTriage는 파일의 간단한 분석을 수행하여 악성 특성을 식별하는 데 도움을 줄 수 있습니다.
[*] Loading File...
[*] Analyzing File...
[*] Analysis Complete...
[!] Checksum Invalid CheckSum
[!] AntiDebug AntiDebug Function import [GetTickCount]
[!] AntiDebug AntiDebug Function import [QueryPerformanceCounter]
[!] Imports Suspicious API Call [TerminateProcess]
[!] AntiDebug AntiDebug Function import [SetUnhandledExceptionFilter]
[!] AntiDebug AntiDebug Function import [IsDebuggerPresent]
오버레이 데이터는 파일의 섹션 정보를 분석하거나 표시함으로써 식별됩니다. 오버레이 데이터가 존재하는 경우 PFTriage는 (--removeoverlay) 스위치를 사용하여 데이터를 제거하거나 (--extractoverlay) 스위치를 사용하여 오버레이 데이터를 내보낼 수 있습니다.