04
04
,,
.::...., .:: .. .::. ..:: .:: ::. ., . .,::.. ::. .,::. : .::... ,
.::.... .,:: .::. ..:: ::. ,::.., .::. ::. ...::, : .::...
.::.:.. .::: .::....:: ::. ,::.., ..::. ::. . .::.: .::.:.
.::.... ,:: .::. ..:: ::, :::.., .::, . ::. . .::: .::...
.::. .,M8.:M...M8..,M:~MD .MM .M7..MM::M..Z .MM: .M8:.MM8..D..,M,.:M .::. . ,
.::,.,~M8.?,::MM:. .N:~M8 :MM..MM::.~MD.M..,.MM8...M8:.MMMM.D:.,M,..I ..::,.,::
,MMM? .7MM. ,MMMMMM..MM. .MM.M..,NM8. .M8. M.NMM8 .,MMM.
,M8.?...MM. ,M8 MM..MM .MM.M..:MM ...M8. M OMM .,M,....
,M8...,.MM. .D ,M8 MM ?M. .NM..M..MM. 8..M8. M .OM .,M,..,,.
,88D8D8....NMM..,D888D8D8...8MM:. .M.DD888D8,D88888D. .$.88D88D8..
.M.
.Z.
[ Main ]
Dalam beberapa kasus virus lokal sudah ditemukan penggunaan teknik polymorph.
Baik itu secara sederhana maupun kompleks. Cara yang biasa digunakan yaitu :
Untuk kasus yang menggunakan teknik enkripsi, tidak semua jenis enkripsi
dapat
didekripsi oleh engine Antivirus. Perlu analisa dengan menggunakan reverse-
engineering
yang mendalam guna memahami teknik enkripsi yang dipakai.
Format File PE mulai dikenalkan pada Windows NT 3.1, dimana format file ini
masih
menyimpan header MZ dari MS-DOS. Berikut skema dasar format file PE :
|----------------------------|
| CodeView Debug Information |
|----------------------------|
| COFF Symbols |
|----------------------------|
| COFF Line Numbers |
|----------------------------|
| Section - n |
| . |
| . |
| Section - 2 |
|----------------------------|
| Section - 1 |
|----------------------------|
| Section - 0 |
|----------------------------|
| Array Section table |
| . |
| . |
| Array Section table |
|----------------------------|
| Data Directory |
|----------------------------|
| |
|----------------------------|
| Image File Header |
|----------------------------|
| "PE\0\0" |
|----------------------------|
| "MZ" |
|----------------------------|
[ PE Header ]
DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_OPTIONAL_HEADER OptionalHeader;
WORD Machine //Berisi nilai untuk jenis CPU yang dipakai, ex : 0x14d untuk
Intel i860
WORD NumberOfSections //Berisi jumlah section yang ada di file PE
DWORD TimeDateStamp //Berisi tanggal kapan linker (atau compiler untuk File
OBJ) memproduksi file PE
DWORD PointerToSymbolTable //Offset untuk tabel symbol COFF
DWORD NumberOfSymbols //Berisi jumlah symbol COFF di tabel
WORD SizeOfOptionalHeader //Berisi ukuran dari optional header
WORD Characteristics //Berisi informasi tentang file PE
[ Tabel Section ]
Secara umum Tabel Section dapat dianalogikan sebagai "daftar" untuk tiap
section
yang ada di file PE. Tabel ini mencakup informasi tentang section-section file PE.
berikut contoh layout dari tabel section file PE yang sudah di dump :
[How to build ]
Untuk membangun suatu scanner statis yang dapat memetakan (mapping) dan
mengambil
sebagian sectionnya utnuk dianalisa, perlu diketahui terlebih dahulu hal-hal
berikut :
- What's section? Berhubung section yang dimiliki oleh suatu file PE beragam
jumlah dan
isinya, kita perlu mengetahui section keberapa dan apa isinya sebelum di analisa
atau di dump.
Pengidentifikasian tiap section dapat dilakukan dengan cara menganalisis
karakteristik
file PE tersebut.
Bahasa pemograman yang digunakan adalah Visual Basic 6.0. sedangkan Projek
yang
akan dibuat adalah ActiveX DLL (Dynamic Link Library), sehingga dapat digunakan
oleh
aplikasi lain. Referensi tentang File DLL dapat dilihat dibagian akhir artikel ini.
Section yang akan diambil adalah data atau code section, dengan mengasumsikan
section tersebut berada di urutan kedua maka Section tersebut seharusnya memiliki
nama ".data". Berikut adalah flowchart sederhana dari DLL yang akan dibuat :
|Start|
|
|
|Input File|
|
|
<Periksa apakah PE yang valid>
|y
|
|Mapping tabel section|
|
|
<Apakah section urutan ke 2 atau bernama .data>
|y
|
|Dapatkan size dan offsetnya|
|
|
|ambil checksum dari byte section tsb|
|
|
|End|
Untuk fungsi pengambilan checksum dapat menggunakan teknik CRC ataupun MD5.
Khusus utnuk teknik CRC dapat ditemui pada artikel sebelumnya. Sedangkan untuk
teknik MD5 dapat menggunakan file aamd532.dll yang ada di file projek artikel ini.
Dimana DATA() adalah array byte dari file PE yang dibuka. Engine scanner ini
perlu ditingkatkan sensitifitasnya, karena bila terdapat section dummy pada urutan
section kedua atau tidak ada section yang bernama .data maka hasil yang diperoleh
akan salah.
[ Penutup ]
[ Notes ]
[ Referensi ]
[1] http://echo.or.id/forum/viewtopic.php?t=5903
[2] Pietrek,Matt; Peering Inside the PE: A Tour of the Win32 Portable Executable
File Format; MSDN; 1994
[3] www.allapi.net
[4] www.google.co.id
[5] www.planet-source-code.com
[ Links ]
[ Shoutz ]