Saya lanjutkan pembahasan buku Saxe. Untuk melakukan analisa PE dapat menggunakan modul python pefile. Modul ini dibuat oleh ero carerra. Di buku, saxe memberi sampel ircbot.exe untuk dianalisa. Sampel ini bisa diunduh dari web link yang sudah dishare sebelumnya. Untuk install library pefile dapat menggunakan perintah berikut:
$ pip install pefile
Perintah berikut ini untuk menjalankan python, import modul pefile open dan parse sampel ircbot
$ python
>>> import pefile
>>> pe = pefile.PE(“ircbot.exe”)
pefile.PE adalah core class dari module PE. Hasil parsing file PE, kita mendapatkan atribut sampel. Dengan memanggil PE constructor, kita mlakukan load dan parsing sampel. Untuk mendapatkan info ttg sampel jalankan perintah berikut:
# based on Ero Carrera's example code (pefile library author) for section in pe.sections:
print (section.Name, hex(section.VirtualAddress), hex(section.Misc_VirtualSize), section.SizeOfRawData
Hasil outputnya:
(‘.text\x00\x00\x00’, ‘0x1000’, ‘0x32830’, 207360) (‘.rdata\x00\x00’, ‘0x34000’, ‘0x427a’, 17408) (‘.data\x00\x00\x00’, ‘0x39000’, ‘0x5cff8’, 10752) (‘.idata\x00\x00’, ‘0x96000’, ‘0xbb0’, 3072) (‘.reloc\x00\x00’, ‘0x97000’, ‘0x211d’, 8704)
Sekarang kita mendapat data dari 5 section berikut: .text, .rdata, ,data, .idata dan .reloc . Entry pertama merupakan nama section. Kita dapat mengabaikan bytes \x00. Bagian lainnya menjelaskan utilisasi (pemakaian) memori dari setiap section, yaitu dimana dimana dia disimpan di memori
Contohnya 0x100 adalah base virtual memory address dimana sections tersebut di pindahkan. 0x32830 adalah virtual size yang menjelaskan banyak memory yang dibutuhkan ketika section dijalankan. 207360 menjelaskan banyak data yang dibutuhkan section pada memory chunk tersebut.
Selain menggunakan pefile untuk parsing section, kita dapat menggunakannya juga untuk mengetahui DLL apa saja yang dijalankan sampel, serta function call yang direquest oleh dLL tersebut. Caranya dengan melakukan dumping IAT dari PE file, menggunakan perintah berikut:
$ python
pe = pefile.PE(“ircbot.exe”)
for entry in pe.DIRECTORY_ENTRY_IMPORT:
print entry.dll for function in entry.imports:
print '\t',function.name
Outputnya:
KERNEL32.DLL
GetLocalTime ExitThread
CloseHandle
WriteFile
CreateFileA
ExitProcess
CreateProcessA
GetTickCount
GetModuleFileNameA
Dari output itu kita mengetahui bahwa sampel melakukan write, membuka file dan membuat proses baru
Malware image
Di dalam PE File dapat kita temukan beberapa image. Dari image ini ada beberapa info yang bisa kita dapatkan. Pada section .rsrc kita menemukan icons. Binary malware seringkali dirancang untuk menyamar menjadi file word, installer game, pdf dll. Saxe menyampaikan dari gambar yang ditemukan kita bisa membuat profile tentang penyerang. Saxe pernah menemukan sampel yang berisi icon desktop jihadist, gambar karton iblis, gambar kalashnikov, dll. Pada percobaan ini kita menggunakan sampel fakepdfmalware.exe . Sampel ini menggunakan icon adobe acrobat untuk samaran. User akan mengira ini adalah file pdf, padahal PE file berbahaya. Sebelum melakukan ekstraksi file menggunakan wrestool, kita membuat directory untuk menyimpan gambar menggunakan perintah berikut:
$ mkdir images
$ wrestool –x fakepdfmalware.exe –output=images
$ icotool –x –o images images/*.ico
wrestool digunakan untuk ekstrak image, icotool untuk ekstrak dan convert resource -ico menjadi .png.
Sampai disini dulu, besok insyaallah saya share tentang mencari strings.
reference:
Saxe, Joshua, and Hillary Sanders. Malware Data Science: Attack Detection and Attribution. No Starch Press, 2018.