Analisis Lengkap Virus Brontok

Yohanes Nugroho (yohanes[at]gmail.com)

Editor: Risnawaty
Untuk Informasi mengenai brontok versi baru klik di sini. Saya juga telah menulis tools untuk membasmi brontok (CompactbyteAV) yang bisa didownload secara gratis.

Virus Brontok sudah mulai berkurang penyebarannya, tapi masih menyisakan banyak pertanyaan: siapa yang membuatnya? adakah keterlibatan perusahaan antivirus? seberapa cerdaskah pembuat virus ini dan mungkinkah dia akan menciptakan virus lain yang lebih berbahaya?.

Versi

Dokumen ini merupakan versi 1.3 (Januari 2006), versi sebelumnya dapat diakses di sini.

Revisi dari versi sebelumnya

Revisi dokumen dari versi sebelumnya adalah:

Hal-hal aneh seputar Brontok

Pencipta virus Brontok diduga dari Institut Teknologi Bandung (ITB), tapi ternyata tidak ada bukti mengenai hal itu kecuali mengenai laporan bahwa virus mulai menyebar di ITB. Virus ini mengupdate dirinya dari suatu situs di Internet, tapi anehnya hanya satu analisis yang menyebutkan hal tersebut. Padahal dengan mengetahui dari URL mana virus itu mengupdate dirinya, kita bisa melakukan hal berikut:

Satu-satunya analisis lokal yang menyebutkan bahwa virus mengupdate dirinya berasal dari sebuah perusahaan antivirus lokal yang menjalin kerja sama dengan sebuah perusahaan antivirus luar negeri. Tapi anehnya meski perusahaan tersebut mengetahui bahwa virus tersebut mengupdate dirinya, dia tidak menyebutkan URL updatenya, meski sudah saya tanya pribadi melalui email. Apakah perusahaan tersebut tidak tahu URLnya? (kurang pandai dalam menganalisis virusnya) ataukah mereka sengaja membiarkan agar virus berkesempatan mengupdate dirinya dan perusahaannya mendapatkan untung? (kedua kemungkinan tersebut sama mengkhawatirkannya).

Virus ternyata tidak hanya bisa mengupdate dirinya, tapi juga mendownload daftar file yang perlu dihapus sebelum proses update dilakukan, artinya virus yang tadinya hanya dianggap mengesalkan ini ternyata bisa berbahaya juga. Dan sebenarnya file update virus ini bisa saja bukan berisi virus baru, tapi berisi kode untuk memformat komputer Anda.

Virus versi awal hanya menyerang situs 17tahun.com dan israel.gov.il, tapi lama-lama mulai menyerang situs lain, seperti www.kaskus.com, dan bahkan situs pribadi (blog) seperti fajarweb.com, adakah dendam pribadi oleh pembuat virus ini pada orang tertentu?

Pembuat virus mencantumkan kata-kata ini di virusnya:

!!! Akan Kubuat Mereka (VM lokal yg cengeng & bodoh) Terkapar !!!

Dan di versi Brontok terbaru, ternyata dia berusaha menghapus virus lokal seperti dekil/decoy, kumis, fawn, kangen, dan riyani_jangkaru (pengetahuan saya mengenai virus lokal agak minim, jadi dafar ini hanya yang saya ketahui). Penghapusan sebagian virus lokal cukup menyeluruh, dengan membunuh task virus, menghapus file virus, dan bahkan menormalkan atribut file dokumen yang dibuat menjadi hidden oleh virus lain (tapi pembersihan registry yang diubah virus lain tidak dilakukan).

Artikel ini akan saya buat seobjektif mungkin, dengan analisis yang dalam dan akurat. Artikel ini sekaligus dapat menjadi koreksi bagi informasi analisis Brontok di situs lain yang isinya kadang tidak akurat.

Fakta dan catatan

Beberapa pernyataan dalam artikel ini mungkin akan menimbulkan prasangka tertentu, oleh karena itu saya ingin memberitahukan beberapa fakta mengenai diri saya:

  1. Saat ini saya bukan pengguna Windows lagi meskipun saya masih punya satu partisi Windows yang saya gunakan untuk keperluan seperti ini (analisis virus, dan mencoba-coba program Windows). Saya tidak menyimpan data di Windows, jadi eksperimen semacam ini cukup aman bagi saya. Sehari-hari saya memakai Mac OS X di iBook G4, dan GNU/Linux (Fedora Core 4) di AMD64. Karena bukan pengguna Windows, mungkin pengetahuan saya sedikit tertinggal dalam hal aplikasi-aplikasi yang ada di Windows, tapi pengetahuan teknis low level Windows selalu saya update.
  2. Saat ini saya tidak bekerja di bisnis security ataupun memiliki bisnis yang berhubungan dengan security. Segala macam pernyataan saya terhadap entitas bisnis lain tidak dimaksudkan untuk menguntungkan diri saya. Pekerjaan saya adalah teaching assistant di Jurusan Teknik Informatika Sekolah Tinggi Elektro dan Informatika (dulu bagian dari Fakultas Teknologi Industri) Institut Teknologi Bandung.
  3. Saya bukan cracker, saya bukan orang-orang dari kelompok pembuat virus baik kelompok luar negeri maupun Indonesia.
  4. Saya hanya memiliki Brontok versi lama (contoh Brontok diambil dari salah satu lab di ITB), dan versi terbaru (contoh Brontok diambil dari Universitas Negeri Jakarta/UNJ), versi di antaranya saya tidak punya.
  5. Saya tidak mencantumkan URL aneka tools yang saya pakai, karena URL untuk tools yang dapat membantu proses cracking biasanya selalu berpindah, gunakan Google untuk mencari tools-tools yang saya sebutkan.
  6. Saya tidak membuatkan antivirus untuk Brontok ini, silakan Anda gunakan antivirus yang sudah ada (saya tidak ingin bersusah payah mengupdate antivirus terhadap Brontok yang selalu diupdate, banyak antibrontok yang ada di Internet sudah tidak bisa lagi mendeteksi, menghapus, atau menangani Brontok versi yang baru). Antivirus yang ada di pasaran dengan update terbaru seharusnya sudah cukup. Namun jika Brontok ini makin sulit diberantas, saya akan membuatkan antivirus khusus untuk Brontok. Namun saya memberikan langkah pembersihan Brontok manual yang generik untuk berbagai versi Brontok saat ini.

Bagaimana analisis virus dilakukan?

Ada tiga cara untuk menganalisis virus, pertama dengan cara black box, yaitu melihat perilaku virus di sebuah lingkungan tertentu, menganalisis isi virus dengan disassembly, dan yang ketiga adalah dengan melihat jalannya virus dengan debugger. Sayangnya kebanyakan orang hanya bisa melakukan analisis cara pertama dan sedikit cara kedua, namun tidak menyeluruh.

Black box analysis

Beberapa program tersedia untuk melihat perbedaan state komputer sebelum dan sesudah program sesuatu dijalankan (termasuk juga sebelum dan sesudah virus dijalankan). Saya tidak terlalu percaya dengan program semacam ini, tapi program semacam ini bisa menunjukkan file-file apa saja yang dibuat virus, dan perubahan registry apa yang dilakukan oleh virus.

Cara ini mudah namun tidak ampuh, karena mungkin saja virus berperilaku aneh setiap hari Rabu sementara Anda mengetes di hari Selasa. Mungkin juga program yang dipakai untuk mencatat state sistem tidak sempurna sehingga ada perubahan yang tidak tercatat, dan ada kemungkinan virus tersisa setelah proses analisis selesai. Jika virus cukup canggih dan bisa mendeteksi adanya program pemonitor, virus bisa bertingkah laku berbeda dari keadaannya yang biasa.

Disassembly dan atau dekompilasi

Program dalam bahasa tertentu (biasanya yang dikompilasi dan diinterpretasi sekaligus, misalnya Java atau C#) bisa didekompilasi dengan mudah, artinya "bahasa mesin" yang ada pada file exe bisa dikembalikan menjadi source code, tapi program dalam bahasa lain tidak bisa dikembalikan menjadi source code, hanya bisa menjadi bahasa assembly.

Bahasa assembly sifatnya sangat low level (sangat dekat dengan mesin) sehingga sulit dimengerti kecuali dengan kesabaran dan banyak latihan (biasanya dengan bantuan debugger juga). Tidak banyak orang yang mau dan bisa melakukan hal tersebut, tapi itulah yang setiap hari dilakukan cracker untuk membuat serial number generator, dan mengcrack aneka program (program bajakan yang dipakai oleh banyak orang sekarang adalah karya cracker).

Melihat jalannya virus dengan debugger

Debugger bisa digunakan untuk menjalankan virus dalam lingkungan yang dapat dimonitor. Alur eksekusi, termasuk enkripsi virus bisa dipelajari dengan mudah. Penganalisis harus berhati-hati karena virus bisa saja menggunakan teknik antidebug, atau berjalan tidak terkendali. Biasanya teknik analisis ini digabung dengan disassembly.

Pendekatan analisis Brontok

Bagian ini sangat teknis dan boleh di-skip.

Saya tidak melakukan black box analysis (karena sudah terlalu banyak orang yang melakukannya dengan kesimpulan yang agak ngawur), tapi langsung men-disassemble Brontok. Brontok versi pertama dikompilasi menjadi p-code (semacam bytecode pada Java) dan cukup mudah dimengerti. Versi Brontok yang baru menggunakan native code, sehingga lebih sulit dianalisis. Analisis versi pertama tidak akan dibahas.

Sebelum saya menjelaskan proses analisis, saya perlu memberitahukan bahwa telah menyalin brontok menjadi beberapa nama yang berbeda sebelum diproses (debug, disassemble, dll) oleh program yang berbeda. Tujuan penyalinan adalah agar aman bagi saya (jangan sampai tidak sengaja menjalankan file exe), dan aman dari kesalahan program yang mungkin mengubah salinan Brontok yang saya miliki.

File EXE Brontok dienkripsi dengan program MeW sehingga harus didekrip/ekstrak menggunakan UnMeW, tapi ini menyebabkan struktur file berubah dan menyebabkan program untuk menganalisis executable Visual Basic, misalnya Race, tidak bisa mengenali lagi bahwa itu adalah file VB. Untungnya salah satu tools untuk membantu menganalisis file VB yang bernama VBDE masih bisa mengekstrak sedikit informasi dari file tersebut .

VBDE beraksi

VBDE digunakan untuk mendapatkan informasi dasar file VB

Karena file menggunakan native code, disassembler terbaik adalah IDA Pro (saya pakai versi freeware), dengan IDA Pro saya bisa melihat cukup banyak hal di Brontok. Tapi sayangnya IDA Pro tidak bisa melihat VTABLE Visual Basic (tabel method, ini sangat penting dalam kode program yang dikompilasi dari suatu bahasa yang menggunakan objek), dan satu-satunya cara termudah adalah menjalankan Brontok.

Pertama sebelum Brontok dijalankan, binary Brontok perlu diedit untuk menonaktifkan timer (waktunya diset menjadi 0 agar timer tidak pernah dieksekusi). Pengeditan ini dilakukan dengan mengunakan Hex Editor (saya memakai Hexplorer yang gratis), dan hal ini memerlukan sedikit coba-coba sampai berhasil. Bagian utama Brontok ada di timer, sehingga dengan menonaktifkan timer, Brontok bisa dianalisis dengan aman (tapi tetap berbahaya).

Tampilan Hex Editor ketika membuka brontok

Isi file Brontok, terlihat ada beberapa string yang dienkripsi dan yang tidak dienkripsi dalam Brontok.

Untuk mendebug, debugger yang saya pakai adalah OllyDbg, debugger ini cukup canggih dan nyaman dipakai dibanding WinDBG dari Microsoft (dan sama dengan WinDBG, program ini gratis). Dengan mencocokkan listing IDAPro dengan OllyDbg saya bisa memahami Brontok dengan cukup mudah.

IDA Pro beraksi

Isi brontok yang didisassembly menggunakan IDA Pro.

Langkah terakhir adalah dengan merekonstruksi sebagian source code Brontok menggunakan VB, hal ini dilakukan untuk melihat apakah pemahaman saya sudah benar. Jika hasil disassembly dari file VB yang sudah saya buat sama dengan disassembly Brontok, maka berarti pemahaman saya sudah benar.

VB memiliki error handling "On Error Resume Next" yang sangat membantu pemahaman hasil disassembly. Error handling tersebut berarti jika terjadi error maka pergilah ke baris berikutnya. Nah komputer perlu tahu di mana lokasi baris berikutnya yang harus dieksekusi jika ada error, sehingga informasi tersebut disimpan di executable file. Dengan berbekal nomor baris itu, saya bisa merekonstruksi dengan cukup tepat sampai ke level baris kode.

Karakteristik Brontok

Saya tidak akan memberikan penjelasan panjang lebar mengenai karakteristik Brontok, karena bagian ini sudah dibahas di banyak situs. Secara singkat, karakteristik Brontok adalah:

  1. Brontok menggunakan ikon folder standar Windows, Anda yang memakai theme aneh/nonstandar akan melihat keanehan ikon ini.
  2. Brontok membuat banyak perubahan di registry agar sulit dibersihkan (menonaktifkan registry editor, menghilangkan menu folder options, dll). Tepatnya, Brontok melakukan perubahan pada nilai di subkey:
    • HKCU\software\microsoft\windows\currentversion\run
      • Nilai Tok-Cirrhatus menjadi path ke Brontok.
      • Nilai Tok-Cirrhatus-XXX (xxx adalah acak) menjadi path ke Brontok yang namanya juga acak.
    • HKLM\software\microsoft\windows\currentversion\run
      • Nilai Bron-Spizaetus menjadi path ke Brontok.
      • Nilai Bron-Spizaetus-xxx (xxx adalah acak) menjadi path ke Brontok.
    • HKCU\software\microsoft\windows\currentversion\Policies\Explorer\
      • Nilai NoFolderOptions menjadi 1.
    • HKCU\software\microsoft\windows\currentversion\Policies\System\
      • Nilai DisableCMD menjadi 0.
      • Nilai DisableRegistryTools menjadi 1.
    • HKCU\software\microsoft\windows\currentversion\explorer\advanced
      • Nilai Hidden menjadi 0.
      • Nilai HideFileExt menjadi 1.
      • Nilai ShowSuperHidden menjadi 0.
    • SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
      • Nilai Shell menjadi Explorer.exe "c:\windows\sembako-xxx.exe". (xxx adalah acak)
    • SYSTEM\CurrentControlSet\Control\SafeBoot\
      • Nilai AlternateShell menjadi cmd-bro-xxx.exe (xxx adalah acak). Perhatian: ternyata Windows akan secara otomatis menyalin isi semua key di HKLM, SYSTEM\CurrentContolSet\Control\SafeBoot ke HKLM, SYSTEM\ContolSet00X\Control\SafeBoot X (dari 1-2) jika proses restart dilakukan dengan sukses (atau jika komputer dimatikan lalu komputer dinyalakan lagi).
  3. Brontok mengotori banyak direktori dengan salinan dirinya.
  4. Brontok menimpa autoexec.bat dengan satu baris "pause", mungkin maksudnya menghentikan antivirus yang berjalan di mode DOS yang dijalankan dengan autoexec.bat.
  5. Brontok membuat banyak item startup agar dijalankan ketika komputer dimulai (di start menu dan di aneka tempat di registry). Hal ini berlaku juga dalam safe mode (Perhatian perhatian, yang benar adalah "SAFE MODE" bukan "SAVEMODE").
  6. Brontok mengupdate dirinya sendiri dari URL tertentu, tepatnya Brontok ini mendownload file exe dari situs tertentu dan mengeksekusinya (bisa saja isinya bukan update brontok, tapi kode untuk memformat seluruh isi komputer). Pembahasan ada di bagian berikutnya di artikel ini.
  7. Brontok menggunakan enkripsi untuk menyembunyikan string-string dalam dirinya. Enkripsi Brontok juga dibahas pada artikel ini.
  8. Brontok mengirimkan dirinya ke alamat email yang ditemukannya, jika alamat tersebut tidak mengandung string berikut (artinya brontok tidak akan mengirimkan dirinya ke Microsoft, perusahaan antivirus, dll): SECURE,SUPPORT,MASTER,MICROSOFT,VIRUS,HACK,CRACK,LINUX,AVG,GRISOFT,CILLIN,SECURITY, SYMANTEC,ASSOCIATE,VAKSIN,NORTON,NORMAN,PANDA,SOFT,SPAM,BLAH, .VBS,DOMAIN,HIDDEN,DEMO,DEVELOP,FOO@,KOMPUTER,SENIOR,DARK,BLACK,BLEEP,FEEDBACK, IBM.,INTEL.,MACRO,ADOBE,FUCK,RECIPIENT,SERVER,PROXY,ZEND,ZDNET, CNET,DOWNLOAD,HP.,XEROX,CANON,SERVICE,ARCHIEVE,NETSCAPE,MOZILLA,OPERA,NOVELL,NEW LOTUS,MICRO,TREND,SIEMENS,FUJITSU,NOKIA,W3.,NVIDIA,APACHE,MYSQL,POSTGRE,SUN.,GOO GLE,SPERSKY,ZOMBIE,ADMIN,AVIRA,AVAST,TRUST,ESAVE,ESAFE,PROTECT, ALADDIN,ALERT,BUILDER,DATABASE,AHNLAB,PROLAND,ESCAN,HAURI,NOD32,SYBARI,ANTIGEN,R OBOT,ALWIL,BROWSE,COMPUSE,COMPUTE,SECUN,SPYW,REGIST,FREE,BUG,MATH, LAB,IEEE,KDE,TRACK,INFORMA,FUJI,@MAC,SLACK,REDHA,SUSE,BUNTU,XANDROS,@ABC,@123,LO OKSMART,SYNDICAT,ELEKTRO,ELECTRO,NASA,LUCENT,TELECOM,STUDIO,SIERRA,USERNAME,IPTE K,CLICK,SALES,PROMO,.CA.COM Ada sedikit perbedaan pada email jika email dikirim ke alamat dengan substring berikut ("alamat indonesia"): PLASA;TELKOM;INDO;.CO.ID;.GO.ID;.MIL.ID;.SCH.ID;.NET.ID;.OR.ID; .AC.ID;.WEB.ID;.WAR.NET.ID;ASTAGA;GAUL;BOLEH;EMAILKU;SATU. Perbedaannya pada asal pengirim, jika untuk tujuan Indonesia pengirimnya menjadi @boleh.com sedangkan kalau non "alamat Indonesia" pengirimnya menjadi @friendster.com (pada versi awal Brontok, untuk Indonesia memakai @kafegaul.com dan untuk alamat non Indonesia memakai alamat @pornstargals.com). (bodohnya isi emailnya tetap sama, dan memakai Bahasa Indonesia padahal isinya didownload dari Internet). Perhatian: banyak analisis salah yang menyatakan bahwa Brontok tidak mengirimkan dirinya ke alamat email di Indonesia.
  9. Brontok berusaha mendapatkan alamat email korban dengan melakukan parsing terhadap file HTML, .HTM,.TXT, .EML, .WAB, dan .PHP yang ditemuinya (Brontok mencari semua string [email protected] dalam file).
  10. Brontok melakukan koneksi SMTP langsung ketika mengirim email, tapi tidak menggunakan MX record (Mail eXchanger Record) DNS suatu domain. Jika Brontok mengirim ke alamat @yahoo.com, dia akan mencoba memakai SMTP server mta237.mail.re2.yahoo.com, sedangkan jika ke domain lain Brontok mencari MX/Server SMTP dengan menambah prefix smtp., mail. atau ns1. pada domain mail.
  11. Brontok Membuat file yang isinya agar semua orang menghentikan kejahatan (bla bla bla, silakan baca di situs lain jika Anda penasaran dengan isinya).
  12. Brontok merestart komputer ketika program tertentu aktif. Pengecekan program dilakukan dengan melihat teks Window program terhadap string: REGISTRY,SYSTEM CONFIGURATION,COMMAND PROMPT,.EXE,SHUT DOWN,SCRIPT HOST,LOG OFF WINDOWS,KILLBOX,TASK, dua string terakhir baru ditambahkan untuk mengantisipasi program yang dapat membunuh task Brontok, misalnya program HijakThis.
  13. Brontok menjadwalkan dirinya agar dijalankan di jam tertentu. Versi awal brontok menjadwalkan dirinya hanya pada jam 17:08, tapi versi baru juga menjadwalkan eksekusi pada jam 11:03 (keduanya dijadwalkan setiap hari).
  14. Brontok berusaha mengakses share di jaringan lokal dan menginfeksinya juga.
  15. Brontok memiliki string: By: HVM31 -- Jowobot #VM Community -- (Perhatikan kata VM/Virus Maker community ini, mungkin saja HVM31 itu punya teman yang tahu tentang ini).
  16. Brontok versi lama menyerang (maksudnya ingin melakukan DDOS/Distributed Denial of Service attack) situs 17tahun.com dan israel.gov.il dengan ping, sedangkan versi baru menggunakan HTTP Get untuk menyerang www.17tahun.com, www.kaskus.com, dan www.fajarweb.com.
  17. Brontok membuat counter di situs debuging.com, URLnya: http://debuging.com/WS1/cgi/x.cgi?NAVG=Tracker&username=%64%65%6C%62%65%6C%62%72%6F (usernamenya adalah delbelbro). Saya belum mengontak pemilik situs tersebut. Counter dinaikkan nilainya setiap selesai menyerang situs yang ada di daftarnya (www.17tahun.com, www.kaskus.com, dan www.fajarweb.com).
  18. Brontok membuat file sistem.sys di direktori %windir%/system32/sistem.sis yang isinya adalah kode waktu saat brontok aktif kali pertama. Kode ini terdiri atas 2 digit bulan, 2 digit tanggal, 2 digit jam dan 2 digit menit. Misal: 01122245 berarti Brontok aktif kali pertama pada 01 = Januari, 17 = tanggal 17, 22 = jam 1 malamm, 45 = menit ke 45. File ini juga dicopykan ke direktori \Documents and Settings\Username\Application Data\ dengan nama file BronMes*.ini (bagian * bisa bervariasi).
  19. Brontok akan berusaha membunuh paksa beberapa proses (proses adalah program yang berjalan) dengan command taskkill /f /im namaproses. Proses yang dibunuh meliputi virus/worm lokal lain, dan sepertinya beberapa antivirus. Tepatnya proses yang dibunuh adalah mcvsescn.exe;poproxy.exe;avgemc.exe;ccapps.exe;tskmgr.exe;syslove.exe; xpshare.exe;riyani_jangkaru.exe;systray.exe;ashmaisv.exe; aswupdsv.exe;nvcoas.exe;cclaw.exe;njeeves.exe;nipsvc.exe;dkernel.exe; iexplorer.exe;lexplorer.exe.
  20. Brontok akan mengubah atribut file MSVBVM60.DLL yang ada di direktori sistem Windows. Atribut file akan diubah menjadi hidden, system, dan read only. Tujuan langkah ini adalah agar lebih sulit menghapus file msvbvm60.dll dari mode DOS seperti yang dibahas dalam beberapa website.
  21. Brontok akan mendownload file dari sebuah URL acak (lihat bagian update Brontok) dan berusaha menimpa file %windir%\system32\drivers\etc\hosts dengan file yang didownloadnya.
  22. Jika Brontok menemui file .DOC, .PDF .XLS, dan .PPT maka attributnya akan dikembalikan ke normal, sifat ini sepertinya dilakukan untuk mengembalikan dokumen yang disembunyikan (dijadikan hidden) oleh virus lain.
  23. Brontok berusaha menghapus file dengan substring "kangen", *RORO*.HTT, FOLDER.HTT. Jika ekstensi file adalah .EXE, maka Brontok juga akan menghapus file jika substring file memiliki nama .DOC.EXE;.DOC ;.XLS.EXE;. XLS ;PATAH;HATI; CERITA; LUCU;MOVZX;CINTA;UNTUKMU;DATA-TEMEN;RIYANI;JANGKARU;KANGEN;JROX; DIARY;DKERNEL;IEXPLORER;LEXPLORER;ADULTONLY;ASIAN;VIRTUAL GIRL;X-PHOTOS;BESTMODEL;GAME NUDE;HOT SCREEN;HOTBABE; NAKED ;MODEL VG;SEXY ;V-GIRL7;JAPANESEGIRL;PUISI (perhatikan bahwa Brontok tidak menghapus .DOC, tapi .DOC yang diikuti spasi dan dengan ekstensi .EXE, demikian juga halnya dengan .XLS).
  24. Brontok juga menghapus file: C:\!submit\winword.exe, c:\submit\xpshare.exe,c:\windows\systray.exe, %windir%\systray.exe, %win