Analisa PE File


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.

,

Silahkan tuliskan tanggapan, kritik maupun saran