Kamis, 30 April 2009

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.



1.
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)
2.
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
3.
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:

?


4.
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.
5.
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.
6.
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

REFERENSI
Buku Computer Worm?2 - Secret Of Underground Coding | www.jasakom.com

GREETS
Teman-teman di Jasakom.. mas S'to, psychozetic, cron of 0x00, lEO_rETRo, tomahawk
Teman-teman di Friendster.. Andi Suharto, Ian, adHie, yuanzzttt, liko, ran, eri, Bagus, Foker, Jenonk, Panggi
Teman-teman di KBT aka Komunitas Blogger Tarakan

JUST FOR YOU
Special Thanks buat pembaca yang sudah meresensikan, merekomendasikan atau memperkenalkan buku Computer Worm melalui site-site, blog, yahoo group ataupun forum-forum. Beberapa yang Penulis temukan saat surfing dengan Google! adalah sebagai berikut :

* Anggara's Site : http://locklems90.multiply.com/reviews/item/1
* Fariskhi Vidyan : http://virologi.info/virologist/modules/news/article.php?storyid=172
* Carolus Agung : http://agunk.wordpress.com/2008/01/16/dasar-perakitan-virusworm-dengan-vb6/
* Taruma : http://taruma.info/2007/05/virus-vs-worm/
* Sucks05 aka Rizky : http://sucks05.multiply.com/reviews
* AlaV anti virus : http://alhadimedia.multiply.com/journal/item/3
* EA Ngel : http://hikari-community.darkbb.com/malicious-code-malware-virus-hijack-spyware-dll-f19/dasar-perakitan-virus-worm-dengan-vb6-t215.htm
* jenonk : http://jenonk.wordpress.com/2007/07/30/ada-buku-rahasia-membuat-antivirus-menggunakan-visual-basic/

Related Posts by Categories



3 komentar:

Unknown mengatakan...

sudah dipraktekkan belum :D

Unknown mengatakan...

sudah dipraktekkan belum nih..... :D

admin mengatakan...

pusing,,g tw mw komen apa...g tw masalh anti virus juga...

Posting Komentar

cryptonseankingston © 2008 Template by:
SkinCorner