Memang bukan hal baru sebuah malware menggunakan sertifikat
resmi. Kali ini saya menemukan sebuah file executable dengan icon mirip file
Microsoft Word. Tadinya diduga ini hanyalah sebuah worm yang umum yang
banyak ditemui yang menyaru atau menyamar sebagai file DOC. Namun ternyata setelah ditelusuri lebih lanjut file tersebut dalam keadaan bertandatangan (signed).
Dari file properties terlihat file tersebut ditanda-tangani
menggunakan sertifikat yang dikeluarkan untuk sebuah perusahaan di Korea.
Berdasarkan histori dari Virus Total, file ini sudah empat kali di upload dan kesemuanya berasal dari Korea dengan nama “MyInfo.doc.exe” dan "C$$DOCUME~1$ROOTAD~1$LOCALS~1$Temp$~00C.tmp_X".
File tersebut ditanda-tangani pada tanggal 11 Juni 2012 22:05:20, informasi dari file header pun mengatakan ia dibuat pada tanggal yang sama 11 Juni 2012 14:54:54, kurang lebih dua bulan yang lalu. Memang informasi dari file header belum tentu akurat karena bisa dengan mudah dipalsukan.
The DOC File
File tersebut dibuat menggunakan Microsoft Visual C++ dan tidak di-pack. Ia memiliki 4 sections, dan pada section .data terlihat sebuah magic number yang familiar – 0xD0CF11E0 atau juga dikenal dengan "docfile".
Saat malware tersebut dieksekusi ia akan meng-extract file DOC tersebut dengan nama MyInfo.doc (sesuai dengan nama awal) pada direktori yang
sama dan membuka file dokumen itu. Pada Microsoft Word terlihat dokumen
tersebut merupakan sebuah resume atau curriculum vitae seseorang.
File Components
Selain meng-extract file .doc, MyInfo.doc.exe juga akan
men-drop dua file lainnya pada direktori khusus yakni "C:\tmp". Berikut adalah daftar file selengkapnya:
File DaumCleans.exe di-extract dari dalam tubuh MyInfo.doc.exe
yang terdapat pada section .data dan dalam kondisi ter-encrypt menggunakan
enkripsi berbasis xor dan subtitusi.
Menariknya, sama seperti halnya pada dropper, file ini juga ditandatangani, dan menggunakan sertifikat yang diperuntukan untuk perusahaan yang berbeda, yang setelah ditelusuri juga mengarah kepada sebuah perusahaan di Korea yang ditanda-tangani pada 27 April 2012 12:33:05, sementara dari file header terlihat bahwa file tersebut kemungkinan dibuat pada tanggal 06 March 2012 11:20:28.
Sementara untuk file kernel.dll memang merupakan file DLL namun dalam keadaan ter-enkripsi. File ini akan dibahas selanjutnya.
Executions
Saat dropper berhasil dijalankan dan berhasil meng-extract
beberapa file dari dalam dirinya, ia akan menghapus dirinya sendiri dengan berpindah
ke direktori temp mengunakan nama temporary lalu kemudian kembali memanggil
perintah MoveFileEx dengan menggunakan flag MOVEFILE_DELAY_UNTIL_REBOOT. Setelah
itu file pertama yang berhasil di-drop, DaumCleans.exe, akan dieksekusi.
DaumCleans.exe saat dijalankan akan membuat sebuah mutex
yakni "mark02" sebagai penanda kehadirannya. Setelah itu akan membuat autorun
dengan membuat entri baru di Registry dengan nama "WarHead" pada key:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\
Contacting Server
Saat DaumCleans.exe dieksekusi ia akan menghubungi beberapa
C&C server menggunakan port 80 dan mencari mana yang aktif, diantaranya
adalah:
- war.winxps.com
- war.webok.net
- war.eatuo.com
Ketiga host tersebut berada
pada IP yang sama: 61.111.3.45.
Perintah API Windows send and recv digunakan untuk berkomunikasi dengan server. Pertama ia akan mengirimkan pesan "Password:". Jika ia berhasil terkoneksi dan server mengirimkan password yang diminta, maka password atau key tersebut akan disimpan untuk kemudian digunakan nantinya untuk men-decrypt file kernel.dll.
Kernel.dll Decryption
Saat artikel ini ditulis, malware tidak dapat berkomunikasi dengan server tersebut sehingga tidak ada data yang berhasil kami dapatkan. Berikut ini adalah algoritma yang digunakan malware tersebut untuk men-decrypt file kernel.dll:
Dengan menggunakan bahasa tingkat tinggi, kita bisa menuliskannya seperti ini:
Buffer[i] := AnsiChar(((((Ord(Buffer[i]) xor Ord(Key[1])) - Ord(Key[2])) xor Ord(Key[3])) + Ord(Key[4])) xor KeyLength);
Seperti yang terlihat pada rutin di atas, untuk men-decrypt file kernel.dll, rutin tersebut paling tidak membutuhkan password sepanjang 4 karakter, walaupun bisa saja password aslinya lebih dari 4 karakter.
Untuk itu yang bisa kita lakukan sekarang adalah dengan melakukan brute-force untuk mendapatkan kunci yang tepat, paling tidak untuk mendapatkan 4 karakter pertama. Sementara untuk panjang key kita bisa mencoba segala kemungkinan, misalkan mulai dari 4 hingga 10.
Berikut ini tampilan file kernel.dll dalam kondisi ter-encrypt:
Untuk melakukan brute-force kita juga harus mengetahui
kondisi tertentu karena jika tidak program brute-force kita tidak akan pernah berhenti.
Kondisi tersebut dalam hal ini adalah string khusus yang kemungkinan besar
terdapat pada file tersebut, contoh yang paling dikenal dan paling sering
digunakan adalah "MZ", dan DOS string "This program cannot be run in DOS mode".
Agar lebih akurat kita juga menambahkan string condition lainnya yakni "KERNEL32.DLL"
atau "WS2_32.DLL" yang kemungkinan besar terdapat pada file tersebut.
Tidak beselang lama setelah brute-force dijalankan, maka didapatlah kunci yang cocok, yakni: "game" dengan panjang key yang benar adalah 8. Dengan kata lain, password yang benar yang ia gunakan adalah sepanjang 8 karakter dengan 4 karakter pertama adalah "game". Mungkinkah maksudnya adalah "gameover"?
Berikut ini adalah tampilan file kernel.dll setelah di-decrypt:
3 Certificates From 3 Different Companies
Setelah file kernel.dll berhasil di-decrypt ternyata diketahui bahwa file tersebut juga ditandatangani. Sertifikat yang digunakan pun berbeda dengan dua file sebelumnya, yang ditanda-tangani pada tanggal 06 Maret 2012 18:18:26 sementara pada file header menunjukan file tersebut dibuat pada tanggal 11 Maret 2012 11:12:13. Sedikit kecurigaan muncul apakah tanggal dan waktu tersebut telah dimodifikasi atau hanya kebetulan, karena waktu compile sangat berurutan, jam 11 menit 12 detik 13.
Terlepas dari hal itu jadi total total sertifikat yang ia gunakan adalah 3 dari perusahaan yang berbeda – beda. Namun, tidak seperti pada kedua file executable sebelumnya yang status sertifikatnya masih dalam keadaan valid, pada file kernel.dll sertifikatnya telah di-revoke sehingga sudah tidak valid lagi.
Kembali pada file DaumCleans.exe, saat ia mendapatkan kunci yang cocok dan file kernel.dll berhasil di-decrypt, maka DaumCleans.exe akan me-load file tersebut dan mencoba mendapatkan alamat API dari beberapa exported function, diantaranya adalah:
- StartShell
- ClearFile
- g_iiskill
Selanjutnya fungsi pertama yang akan dipanggil adalah StartShell yang bertugas sebagai backdoor. Fungsi StartShell pertama akan menjalankan ipconfig dengan parameter "ipconfig /all". Data hasil tangkapan ini selanjutnya dikirim kembali ke C&C server.
Dengan dikirimkannya hasil output dari perintah ipconfig tadi, maka kini attacker dapat mengetahui IP yang digunakan pada komputer korban, termasuk gateway, DNS server, MAC address, dan mungkin dapat memperkirakan struktur jaringan, dan lain – lain.
Setelah backdoor pada komputer korban tercipta, attacker kini selanjutnya dapat leluasa mengirimkan perintah kepada komputer. Perintah – perintah tersebut memiliki format sebagai berikut:
Sama seperti halnya pada saat ia memanggil perintah "ipconfig", setiap perintah yang dijalankan akan ditangkap dan disimpan pada buffer untuk kemudian dapat dikirim kembali ke server. Untuk itu saat ia mendapatkan perintah "iiscmd", ia akan memanggil CreateProcess dengan sebelumnya sebuah anonymous pipe telah dibuat menggunakan CreatePipe yang dipersiapkan untuk meng-capture hasil dari standard output.
Suicide
Jika ternyata attacker tidak menginginkan malware nya menginfeksi korban atau ia punya alasan lainnya, ia dapat menghentikannya dengan mengirimkan perintah "iiskill". Dengan begitu malware tersebut akan melakukan bunuh diri dengan menghapus key run yang telah dibuat di registry dan menghapus dirinya sendiri dari system. Selain itu pada rutin bunuh diri juga terlihat ia mencari file dengan nama tran.exe di direktori yang sama, C:\tmp, apabila ditemukan maka file tersebut juga akan akan dihapus.
Propagation
Ada satu hal yang hingga sampai saat ini saya belum yakin, yaitu dari mana dan bagaimana malware tersebut menyebar. Namun dari hasil pencarian saya menemukan dokumen ASEC Report milik Ahnlab (halaman: 14) yang pada salah satu artikelnya yang berjudul "A file-stealing malicious code distributed via email" terdapat analisa malware yang memiliki kemiripan dengan malware ini, mulai dari nama file hingga nama registry key yang dibuat yang saya duga merupakan varian awal dari malware tersebut.
Dalam laporan dituliskan bahwa malware tersebut menyebar melalui email dengan perantara link berbahaya yang disertakan pada email. Jika link berbahaya tersebut di-klik, maka pengguna akan dibawa ke situs yang telah terpasang Java exploit, untuk kemudian men-download file berbahaya ke komputer korban dan menginfeksinya.