Jika Anda adalah seorang pembaca buku Computer Worm 1, Anda mungkin
pernah mendapati worm yang baru saja Anda compile dapat terdeteksi oleh
suatu antivirus. Sebenarnya antivirus tersebut tidak menggunakan metode
checksum dalam pendeteksian tetapi lebih cenderung mengacu string pada
body file, nah artikel ini akan membongkar trik untuk mengetahui string
apa yang digunakan AV hingga bisa mendeteksi worm tersebut. Trik ini
bisa diaplikasikan pada mayoritas antivirus seperti?PCMAV, ANSAV,
bahkan antivirus-antivirus professional. Umumnya
pada program antivirus memiliki tiga jenis cara pendeteksian yaitu File
Information seperti nama file, kemudian checksum seperti CRC32 atau
MD5, dan pendeteksian string signature yang langsung melihat byte pada
body file. Untuk mengetahui signature yang menggunakan File Information
dapat diketahui dengan mudah hanya dengan melihat informasi file
tersebut seperti nama file yang menggunakan ekstensi ganda dan lain
sebagainya, dan tentunya Anda akan jauh lebih mengerti dengan
karakteristik worm yang Anda buat sendiri, demikian pula halnya dengan
metode checksum, jika suatu antivirus menggunakan CRC32 atau MD5 Anda
langsung bisa mengetahui signature apa yang digunakan antivirus
tersebut, dengan mencari tahu sendiri nilai checksum file worm Anda
tersebut. Tetapi dengan menggunakan string signature yang notabene
melihat beberapa string pada body file, maka sulit untuk mengetahui
string apa yang digunakan oleh suatu antivirus, berapa string yang
digunakan oleh antivirus tersebut?,? berapa panjang
string tersebut?, dan berapa jumlah section signature tersebut? ada
ratusan bahkan ribuan dan jutaan kemungkinan yang bisa terjadi. Penulis
menemukan suatu cara yang penulis sebut dengan istilah ?Cut and Fill?,
metode Cut and Fill ini memungkinkan untuk mengetahui string signature
apa yang terkandung pada suatu file sehingga bisa terdeteksi pada suatu
antivirus. Sebagai contoh suatu file memiliki isi ?cN2tR5dfWa?, dan
suatu antivirus mendeteksinya sebagai malcode karena mengandung string
?tR5? yang sebelumnya tidak kita ketahui, maka cara yang bisa Anda
lakukan adalah mengurangi setiap string tersebut dan melakukan uji coba
scan antivirus untuk setiap kali berkurangnya string, perhatikan table
uji coba scanning antivirus berikut ini: Pengurangan String | String Pada Body File | Status Hasil Scan AntiVirus | 0 | cN2tR5dfWa | Terdeteksi | 1 | cN2tR5dfW | Terdeteksi | 2 | cN2tR5df | Terdeteksi | 3 | cN2tR5d | Terdeteksi | 4 | cN2tR5 | Terdeteksi | 5 | cN2tR | Tidak Terdeteksi | Sampai
pada pengurangan string ke-5 ternyata antivirus tidak mendeteksinya
lagi, tentu karena string ?cN2tR? tidak mengandung string ?tR5?.
Kemudian untuk menentukan berapa panjang karakter string tersebut dapat
dilakukan dengan cara ?mengotori? bergantian tiap string tersisa yang
terdeteksi yaitu dari pengurangan string ke-4 dengan string tertentu,
contoh table berikut akan menggunakan string ?#? untuk ?mengotori?
string tersebut Pengotoran String ?#? | String Pada Body File | Status Hasil Scan AntiVirus | 0 | cN2tR5 | Terdeteksi | 1 | cN2tR# | Tidak Terdeteksi | 2 | cN2t#5 | Tidak Terdeteksi | 3 | cN2#R5 | Tidak Terdeteksi | 4 | cN#tR5 | Terdeteksi | 5 | c#2tR5 | Terdeteksi | Anda
perhatikan pada pengotoran ke-1, ke-2 dan ke-3 ternyata antivirus tidak
mendeteksinya sebagai malcode karena tidak mengandung string ?tR5?,
dengan demikian untuk menentukan string yang digunakan pada visual
basic adalah dengan rumus berikut ini. String Signature = Mid(BodyFile,Awal,Akhir) String Signature = Mid(?cN2tR5dfWa?,4,3) ?hasilnya adalah ?tR5? Keterangan : Pengurangan? = Pengurangan Terdeteksi Terbesar (4) Pengotoran??? = Pengotoran Tidak Terdeteksi Terbesar (3) TotalBytes???? = 10 (berasal dari jumlah bytes ?cN2tR5dfWa") Akhir???????????? = TotalBytes - Pengurangan - Pengotoran ???????????????????? = 10 - 4 - 3 ?hasilnya adalah = 3 Awal???????????? = TotalBytes - (Pengurangan + Pengotoran) + 1 ???????????????????? = 10 - ( 4+3 ) + 1 ? hasilnya adalah = 4 Mudah
bukan? tentu saja mudah karena contoh yang penulis berikan hanya 10
bytes, lalu bagaimana dengan file asli yang nyata kita hadapi? dimana 1
kb saja adalah 1024 bytes? Sementara umumnya malcode memiliki ukuran
rata-rata lebih dari 20 kb atau 20.480 string? Ya, Anda bisa
berhari-hari didepan komputer hanya untuk mengetahui sebuah string
signature yang digunakan oleh suatu antivirus, terhadap file worm yang
Anda buat J.
Setelah beberapa kali browsing internet, penulis tidak menemukan tool
yang cukup?bagus untuk dapat mengaplikasikan metode ini, yang penulis
temukan hanyalah program spliter yang menurut penulis kurang sesuai,
karena cara kerja program spliter bukan mengurangi byte demi byte
tetapi langsung membagi file tersebut, perhatikan contoh table uji
berikut : Split (bytes) | String Pada setiap Body File Yang Ter-Split | Status Hasil Scan AntiVirus | 2 | cN | 2t | R5 | df | Wa | Tidak Terdeteksi | 3 | cN2 | tR5 | dfW | a | Terdeteksi File Ke-2 | 4 | cN2t | R5df | Wa | Tidak Terdeteksi | 5 | cN2tR | 5dfWa | Tidak Terdeteksi | Kekurangan
utama metode spliter ini adalah, spliter tidak menyertakan header file
pada setiap file hasil split, sementara keberadaan header file
disyaratkan atau dibutuhkan oleh beberapa antivirus untuk bisa
mendeteksi suatu malcode, dengan tool spliter ini Anda juga harus
melakukan pekerjaan yang sama berulang kali untuk setiap file yang
terdeteksi. Nah
untuk memanjakan pembaca, maka penulis melanjutkan riset dan berhasil
membuat sebuah tool sederhana yang mampu mempermudah pekerjaan Anda.
Terbundel dalam program instalasi Darmal?s DarkStudio, program pertama
yang disebut Darmal?s Knife ini berfungsi untuk memotong body file
dengan cara mengurangi sejumlah byte tertentu, kemudian program kedua
adalah Darmal?s DirtStep yang berfungsi untuk ?mengotori? byte tertentu
pada body file, program ketiga adalah Darmal?s cByte yang berfungsi
sebagai pengekstrak byte untuk mengetahui string signature berdasarkan
hasil dari kedua program sebelumnya, Darmal's DarkStudio dapat
didownload gratis di http://darmal.blogs.friendster.com Untuk
mempermudah Anda, penulis akan memberikan contoh nyata bagaimana
mencari string signature yang digunakan engine heuristic program
antivirus terhadap file executable yang memiliki icon dokumen Microsoft
Word. Antivirus pilihan penulis untuk uji coba kali ini jatuh pada
PCMAV versi 1.6, sebuah antivirus lokal Indonesia yang mengklaim
dirinya sebagai antivirus terbaik di dunia dan mengusung sebuah
teknologi yang bernama ?GeneticHeuristic?, baik.. kita akan coba untuk
membongkar rahasia string signature yang digunakan, tanpa perlu
sedikitpun ?mengintip? file binary antivirus tersebut, apalagi
melakukan reverse engineering. -
Penulis
mengekstrak icon berdimensi 32x32 pixel dengan resolusi warna 8 bit
(256 warna)?dari file ?winword.exe? dan memberinya nama file ?MSWord
32x32 8 Bit.ico?. Perlu untuk diketahui, Anda tidak boleh menggunakan
icon multi dimensi dan resolusi, karena beberapa antivirus menggunakan
string signature berbeda untuk masing-masing dimensi dan resolusi, hal
ini akan membingungkan Anda nantinya. Jika Anda tetap ingin menggunakan
icon multi dimensi dan resolusi maka Anda harus mengulangi
langkah-langkah ini untuk setiap icon yang Anda inginkan dan nantinya
menggabungkan kembali icon-icon tersebut. (mengenai icon multi dimensi
dan resolusi akan dibahas lengkap dibuku penulis selanjutnya; Computer
Worm 3) -
Buat
sebuah file dummy, dengan cara membuat sebuah project visual basic
(standard exe) tanpa memasukan code apapun selain hanya mengubah icon
form dengan menggunakan icon hasil ekstrak sebelumnya. Compile project
visual basic dengan nama file ?dummy.exe? dan menyimpannya didalam
folder ?c:\dummy? atau path lengkapnya adalah ?c:\dummy\dummy.exe?,
kemudian kompres file tersebut dengan menggunakan aplikasi compressor
apapun, dalam hal ini penulis menggunakan program upx, atau Anda bisa
mendownload file dummy yang?penulis sediakan pada url berikut ini:? http://www.mediafire.com/?y5wmutwvqms -
Pastikan
terlebih dahulu file dummy yang kita buat terdeteksi oleh antivirus
PCMAV, jalankan program PCMAV beri seleksi pada folder
?c:\dummy\dummy.exe?, pastikan opsi ?Scan for new unknown viruses?
terseleksi kemudian klik tombol Scan, perhatikan gambar berikut ini:
? Sesuai
yang kita harapkan ternyata PCMAV mendeteksi file dummy sebagai ?Virus
Suspected (WP)? penulis memperkirakan string WP pada PCMAV adalah
singkatan dari Word Processor, SS (Spread Sheet), RD (Removable Disk),
FL (Folder), BR (Boot Record), ?SC (Script/Source Code),
OE (Outlook Express), OL (Outlook). Penulis ingatkan lagi dan perlu
Anda catat bahwa file dummy terdeteksi sebagai ?Virus Suspected (WP)?
bukan yang lain, karena hal ini akan sangat berpengaruh pada langkah
selanjutnya. Perhatikan gambar berikut ini:
? -
Setelah
kita memastikan file dummy terdeteksi oleh engine heuristic PCMAV maka
tiba saatnya untuk menjalankan program Darmal?s Knife. Eksekusi program
Darmal?s Knife, setelah jendela aplikasi tampil, klik tombol Source
File kemudian akan tampil kotak dialog ?Open Source File? atur menjadi
file dummy yaitu ?c:\dummy\dummy.exe?, untuk sementara ini atur opsi
Step menjadi 100 (ratusan) dan opsi Limit menjadi source size dikurangi
1 yaitu 8191, kemudian klik tombol Cut, perhatikan gambar berikut ini:
 Pada
contoh diatas penulis membiarkan nilai Target Path dan Group Name
menggunakan nilai default. Baiklah, sampai disini kita scan kembali
menggunakan PCMAV, hanya saja opsi ?Location to Scan? kita atur ke
Target Path program Darmal?s Knife yaitu ?c:\dummy\dummy\? perhatikan
hasil scan berikut ini:
 Yang
perlu kita ketahui adalah file dummy dengan nilai tertinggi yang
terdeteksi oleh PCMAV, jika melihat gambar tersebut diatas menurut Anda
berapakah nilai tertinggi pada dummy file? ?dummy-6700.exe?? Salah!.
Walaupun nilai 6700 adalah nilai tertinggi tetapi PCMAV mendeteksi
nilai 6700 sebagai ?Virus Suspected (OL)? bukan sebagai ?Virus
Suspected (WP)?. File dummy dengan nilai tertinggi yang terdeteksi
sebagai ?Virus Suspected (WP)? adalah file ?dummy-2800.exe?. Kita sudah
mengetahui nilai tertinggi untuk Step ratusan, berikutnya kita kembali
menggunakan program Darmal?s Knife untuk mendapatkan nilai akhir dari
Step satuan, dengan cara klik tombol Source File sehingga tampil kotak
dialog ?Open Source File? atur menjadi file dummy yaitu
?c:\dummy\dummy\dummy-2800.exe?, atur opsi Step menjadi 1 (satuan) dan
opsi Limit menjadi nilai Step sebelumnya yaitu 100, kemudian klik
tombol Cut. Scan kembali menggunakan PCMAV, hanya saja opsi ?Location
to Scan? kita atur ke Target Path program Darmal?s Knife yaitu
?c:\dummy\dummy\dummy-2800\? dari hasil scan yang penulis lakukan nilai
tertinggi untuk Step satuan adalah
?c:\dummy\dummy\dummy-2800\dummy-2800-58.exe? untuk Anda ketahui nilai
dummy ini ditambahkan untuk mendapatkan nilai Darmal?s Knife, dalam hal
ini nilai dKnife menjadi 2858.
-
Agar
tidak membingungkan hapus semua file dummy dan sub direktori kecuali
?dummy-2800-58.exe? agar lebih mudah pindahkan juga file ini ke
direktori ?c:\dummy?. Selanjutnya eksekusi program Darmal?s DirtStep,
setelah jendela aplikasi tampil, klik tombol Source File kemudian akan
tampil kotak dialog ?Open Source File? atur menjadi file dummy yaitu
?c:\dummy\dummy-2800-58.exe?, untuk sementara ini atur opsi Step
menjadi 1 dan opsi Limit menjadi 100 jika Anda berpendapat ternyata
antivirus menggunakan lebih dari 100 bytes untuk string signaturenya
silahkan ubah opsi Limit sesuai dengan perkiraan Anda sendiri, kemudian
klik tombol Dirt, perhatikan gambar berikut ini:
 Baiklah,
sampai disini kita scan kembali file dummy menggunakan PCMAV, pada opsi
?Location to Scan? kita atur ke Target Path program Darmal?s DirtStep
yaitu ?c:\dummy\dummy-2800-58\? perhatikan hasil scan berikut ini:
 Yang
perlu kita ketahui adalah file dummy dengan nilai terendah yang
terdeteksi oleh PCMAV, jika melihat gambar tersebut diatas maka nilai
terendah untuk file dummy yang terdeteksi sebagai ?Virus Suspected
(WP)? adalah ?dummy-2800-58-81.exe? dengan demikian nilai untuk
DirtStep adalah 81.
-
Setelah
sukses mengantongi nilai dKnife dan DirtStep, maka kita bisa
menggunakan program terakhir untuk mengetahui string signature yang
digunakan oleh PCMAV. Eksekusi program Darmal?s cByte, setelah jendela
aplikasi tampil klik tombol Browse kemudian akan tampil kotak dialog
?Open Source File? atur menjadi file master dummy yang tidak mendapat
perubahan yaitu ?c:\dummy\dummy.exe?, atur nilai dKnife menjadi 2858
dan nilai DirtStep menjadi 81, kemudian klik tombol Extract, hasil
string akan tampil pada frame ?Show Bytes in ASCII? klik tombol Convert
untuk mengubah view mode dari ASCII menjadi nilai hexadecimal,
perhatikan gambar berikut ini:
 Untuk
memastikan kebenaran string signature yang kita dapatkan, bisa
dilakukan dengan cara membuka file dummy dengan menggunakan program hex
editor, kemudian mencari nilai string signature yang didapatkan pada
body file dan mengubah salah satu byte, dalam hal ini penulis mengubah
byte dengan nilai hex ?EC? pada akhir byte string signature, dengan
mengubahnya menjadi nilai hex ?00?. Saat di scan kembali menggunakan
PCMAV, ternyata antivirus ini sudah tidak mendeteksinya lagi sebagai
?Virus Suspected (WP)?.
Jika
Anda sukses melakukan langkah-langkah diatas, namun ternyata antivirus
tetap berhasil mendeteksi file dummy tersebut, perhatikan kembali
karena ada kemungkinan string signature tersebut terdapat di dua lokasi
dari body file, juga ada kemungkinan antivirus tersebut menggunakan
lebih dari satu string signature, persis seperti yang penulis temukan
pada antivirus PCMAV setelah penulis mencoba dengan menggunakan exe
compressor lain yaitu FSG, ternyata untuk icon 32x32 pixel dengan
resolusi warna 8 bit (256 warna) pada file winword.exe, PCMAV juga
melihat string signature dengan nilai hexadecimal berikut: 914F2F00D1744600B8684100BB6B4400BD6E4700BE6E4800D79D7F00 D59B7E00D89E8100DAA08300DEBDAC00DFCDC400FDEFE800FDF3 EE00FEF8F500FFFDFC008545230088482600C8917200CE967600D199 7A00D39B7C00FBE7DC00FBE9DF00FCEC | Berikut ini adalah hasil analisa lengkap icon dokumen Microsoft Word terhadap antivirus PCMAV 1.6 : Dimensi & Resolusi | String Signature | 16 x 16 4 Bit 16 Colors | FC0FFCFFFF70CFC070C7F0777F700F0C0C0CFC7F7F70CFCFC0F0 707F7F700C0F0CFC0CFF7F70C0C0C0C0C0777F700FFFFFFFFCFF0 000C0C0C0C0C0FF8F011118FFFFFFFF80111118888888888111E0001 118E000FFFFE000FFFFE000FF7000 | 32 x 32 4 Bit 16 Colors | C0C0C0C0C0C077777777777FFF700C0C0C0C0C0C0C0CFFFFFFFFF FFFFF70C0FFFFFFFFFFFFC077777777777FFF700CFC0CFC0C0FFF0 CFFFFFFFFFFFFFF70C0F0C0F0C0C7FFC077777777777FFF700CFC | 16 x 16 8 Bit 256 Colors | 9300B9A49500C0AB9C00CBB6A600D8C2B200D7C1B100D6C0B000D4 BEAE00D2BDAD00D4C5BA00FDF5EF00FDF4ED00FEF8F300FDF8F400 C8BEB200D9D2CA00FFFFFF0000000000000000000000000000 | 32 x 32 8 Bit 256 Colors | 914F2F00D1744600B8684100BB6B4400BD6E4700BE6E4800D79D7F00 D59B7E00D89E8100DAA08300DEBDAC00DFCDC400FDEFE800FDF3 EE00FEF8F500FFFDFC008545230088482600C8917200CE967600D199 7A00D39B7C00FBE7DC00FBE9DF00FCEC | 4700BE6E4800D79D7F00D59B7E00D89E8100DAA08300DEBDAC00DF CDC400FDEFE800FDF3EE00FEF8F500FFFDFC008545230088482600C8 917200CE967600D1997A00D39B7C00FBE7DC00FBE9DF00FCEC | 48 x 48 8 Bit 256 Colors | 881112658DFFFF0202020270707026E5A4D6D5BCB5CBB9C9A9898A6E B7F600004E5B27281E7E35355A2E2A48687D5E73FE13116773FFFFFF02 020202707070E595D5BAB9B5CBB9C98BE1AA6EB7F600004F3C | D9D9D9D9D9D9D9D70270E5DE81EFD0CDCBCBC95C8BA9AAD0F600 00543E70261C43355D5D345A5435047D2B74FE074B74FFFFFFFFFF020 2020202E5AB7081DEBED3BAC96F5C8BA9D0F600002E3E708120 | 16x16 32 Bit XP:rgb/a | 54FFFFFFFFFFA46C54FF985939FFF4C8B7FF823504FF823504FFD0BA ADFFFFFFFFFF883B07FFFDF4EFFFD6AE90FFFCEDE4FFFBE9DDFFE 0B699FF634935FFD58A66FFFFFFFFFFB37D66FFB96943FFAB745C | 32 x 32 32 Bit XP:rgb/a | F7FFE8C9B1FFE7C7AFFFE6C5ADFFE5C3ABFFE3C2A8FFE2C0A6FFE 1BEA4FFE0BCA1FFDEBA9FFFDDB89CFFDCB69AFFDAB498FFD9B296 FFD8B094FFD7AE91FFD6AD8FFFD5AB8EFFFCEEE5FFFCECE3FFFBEA | 48 x 48 32 Bit XP:rgb/a | 3AFFDBD3CD60EDE9E6300000000000000000E99674FFE99674FFE6916E FFE6916EFFE6916EFFE08C68FFE08C68FFDB8865FFDD855FFFD5835FF FD78059FFD17D57FFCE7A54FFCA7651FFC67351FFC16E | Untuk
mengubah salah satu byte agar tidak terdeteksi, maka dalam hal ini?Anda
harus bertindak hati-hati karena trik ini cenderung mengotori gambar
icon yang digunakan. Trik ini hanya mencontohkan cara melihat string
signature yang kebetulan ada pada resource icon, nah untuk trik yang
secara total bisa menghindari heuristic icon signature dengan sangat
mudah tanpa mengotori gambar icon, anda bisa mengetahuinya hanya?di
buku penulis selanjutnya; Computer Worm 3, halah :P ----
Jika Anda ingin menyadur semua atau sebagian ide atau isi, menjadikan
referensi atau mempublish artikel ini pada site, blog atau media apapun
maka dengan senang hati Penulis persilahkan, namun mohon kiranya untuk
tetap menyebutkan nama Penulis, terima kasih. ----
============ EOF ============ Penulis : Achmad Darmal Tarakan, Kalimantan Timur ? Indonesia www.friendster.com/darmal | achmad_darmal@yahoo.com.sg | darmal.blogs.friendster.com SUMBER Dari sebuah naskah yang belum rampung, yang Penulis sebut dengan codename: COMPUTER WORM 3 -The Biggest Secret Finally Revealed |