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, %windir%\fonts\tskmgr.exe, c:\windows\rundll32.exe. Masih ada beberapa file lagi yg dihapus Brontok ini (saya tidak melanjutkan analisis penghapusan file sampai di sini).

Perkembangan versi Brontok

Karena saya hanya punya versi awal dan versi akhir, saya tidak bisa membuat perbandingan bertahap, tapi ini perkembangan pentingnya:

Versi awal Versi akhir
Memakai VB6, dikompilasi menjadi PCode. Mudah di bongkar. Memakai VB6, dikompilasi menjadi native code. Lebih sulit dibongkar.
EXE "telanjang". Ukuran sekitar 80 Kb. EXE dipack dengan MEW 11.2. Ukuran sekitar 40 Kb.
Key Registry tetap, bisa memakai file .inf untuk membereskan registry. Key Registry ada yang variabel, sehingga perlu pembersihan manual.
Tidak berjalan di safe mode. Berjalan di safe mode.
Mendownload update dari URL tetap. File yang didownload tidak dicek. Mendownload update dari URL yang berubah, dengan pemeriksaan terhadap file yang didownload.
Menggunakan banyak konstanta string. Menggunakan banyak string yang di-split untuk mengurangi konstanta.
Enkripsi sederhana. Enkripsi lebih berbelit-belit.
Nama file tetap. Membuat aneka macam file, ada yang namanya tetap dan ada yang namanya random (berdasarkan waktu aktivasi brontok).

Enkripsi pada Brontok

Agar isi string pada Brontok tidak terlihat dengan mudah, String pada Brontok dienkripsi. Versi pertama memanfaatkan enkripsi yang sangat lemah, yaitu pergeseran huruf sebanyak 3 (A menjadi D, B menjadi E, dst) cara ini sangat mudah dijebol karena merupakan enkripsi kuno yang sudah ada sejak jaman Julius Caesar (enkripsi ini disebut juga dengan Caesar Chiper), namun versi terbaru menggunakan monoalphabetic substitution chiper, bahkan substitusi dilakukan dua kali.

Brontok menggunakan cara yang agak berbelit-belit dalam mengenkripsi dan mendekripsi stringnya, prosedur dekripsi pada Brontok yang telah saya sederhanakan dalam C dapat dilihat pada listing di bawah ini. (Prosedur aslinya lebih berbelit-belit karena tabel dibuat on-the-fly alias pada runtime dengan suatu prosedur khusus dengan banyak loop).

/*dekriptor string Brontok*/
/*Copyright (c) 2006 Yohanes Nugroho*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*input dari stdin akan didekrip ke stdout*/
int main()
{
        char buff[1000];
        int i;
        char *tab1="/[ 4ysmga|&!VPJD.?93xrlf{+^~UOIC,>82wqke\\_%ZTNHB'<71vpjd="
                   ")$YSMGA;]:}650zutonihcb-`(*#@XWRQLKFE\"";
        char *tab2="ABCDEFGHIJKLMNOPQRSTUVWXYZ~!@#$%^&*()_+|`-=\\{abcdefghijkl"
                   "mnopqrstuvwxyz0123456789 }:<>?[];',./";
        while (fgets(buff, sizeof(buff), stdin)) {
                for (i = 0; i<strlen(buff)-1; i++){
                        int c = (int) (strchr(tab1, buff[i])-tab1);
                        if (c<0) continue;
                        printf("%c", tab2[c]);
                }
                printf("\n");
        }

        return 0;
}
Perhatikan gambar untuk contoh penggunaan dekriptor string Brontok. String chipertext dari IDA Pro disalin ke dekriptor, dan dekriptor mengoutputkan plain text string tersebut.
Dekriptor string Brontok

Contoh aksi dekriptor string brontok.

Update Brontok

Versi pertama Brontok mengupdate dirinya dari: http://www.geocities.com/jowobot123/, Saya minta log ke Geocities, tapi malah situs itu ditutup. Penyelidikan tidak dilanjutkan terhadap versi pertama Brontok. Brontok mendownload file BrontokInf3.txt dari situs itu, lalu isinya diproses (namun detailnya tidak saya analisis).

Versi terbaru ternyata menggunakan URL acak, ini mirip dengan kasus Worm Sober yang menggunakan URL acak. URL acak pada Worm Sober juga digunakan untuk mengupdate dirinya (sebenarnya file yang didownload itu tidak harus selalu update brontok, bisa juga isinya adalah kode perusak).

Versi terbaru situs mendownload dari salah satu URL berikut, dengan nama file acak:

http://www.20mbweb.com/Kids/dbrosji/
http://www.20mbweb.com/Kids/dbrolro/
http://www.20mbweb.com/Kids/dbrotlu/
http://www.20mbweb.com/Kids/dbrotppt/
http://www.20mbweb.com/Kids/dbrolma/
Tapi saat ini situs 20mbweb.com (baca: 20mb web) tersebut tidak lagi bisa dipakai, sepertinya situs gratisan tersebut sudah tutup (kacian deh lu yang bikin Brontok, dah bikin algoritma yang ribet buat update Brontok lu).

URL di atas juga merupakan sumber untuk mendownload file Host[N].css dengan N adalah versi brontok. Ketika brontok aktif, brontok akan memilih satu URL acak, dan akan menggunakan URL tersebut.

Begini algoritma update Brontok:

  1. Brontok menghasilkan URL acak (salah satu URL di atas).
  2. Brontok membuat URL dengan menambah IN.18.css (18 adalah versi Brontok saat ini yang saya miliki).
  3. Brontok mendownload URL pada langkah sebelumnya menjadi file (Update.Bron.Tok.bin) yang isinya adalah daftar file yang akan dihapus, ukuran Brontok yang baru, dan sebuah prefix URL baru (namakan ini Z).
  4. Brontok menghapus file-file yang tercantum dalam hasil download, membuat file szbro[N].txt yang isinya adalah ukuran Brontok yang baru (dengan N adalah versi Brontok saat ini).
  5. Brontok akan menghasilkan string X dari menit saat ini. Brontok membentuk string dari array (LON,UTS,AUD,AGT,TPE,AML,MNE,HJT,PLD,LBS). Perhatikan bahwa itu sebenarnya NOL, STU, DUA, TGA, dst dibalik. Jadi menit 15 akan menghasilkan string UTSAML (UTS = 1, AML=5). Jika menit <10, maka menit diberi tambahan prefiks nol agar menjadi dua digit.
  6. Brontok membentuk string dari URL Z di atas di tambah .ico (ini file exe Brontok yang baru)
  7. Brontok mendownload file dan memastikan ukurannya antara 43000 sampai 49000 (eksklusif) byte, dan membandingkannya dengan ukuran file pada szbro[N].txt . Jika file terlallu besar atau kecil, atau tidak sama dengan isi szbro[N].txt maka Brontok akan membatalkan proses update.
  8. Brontok mendownload file exe yang baru menjadi bernama Update.AN.[N].A.Bron.Tok.exe.
  9. Brontok menyalin Update.AN.[N].A.Bron.Tok.exe menjadi A.Bron.Tok.tempo.exe, dan menghapus file Update.AN.[N].A.Bron.Tok.exe.
  10. Brontok mengeksekusi file A.Bron.Tok.tempo.exe.

Brontok juga mendownload sebuah file dari situs yang sama (dengan nama file Bron-ID.xxx.css, dengan xxx adalah nilai yang dihasilkan secara algoritmik), file tersebut menjadi isi email yang dikirimkan ke orang lain, ini juga menjadi metode update virus (karena isi email bisa diganti oleh pembuat brontok).

Membersihkan Brontok

Brontok mungkin masih akan di-update, sehingga saya akan memberikan petunjuk pembersihan Brontok dan bukan sebuah antibrontok. Perhatikan bahwa langkah-langkah detail di sini mungkin tidak akan sama persis untuk membereskan Brontok, karena nama file mungkin akan selalu berubah.

Jika Anda tidak yakin, ganti semua langkah hapus menjadi langkah memindahkan file ke direktori tertentu.

  1. Matikan fitur system restore di Windows.
  2. Tutup semua program yang berjalan, simpan semua dokumen Anda.
  3. Pertama, bunuh proses Brontok (proses adalah program yang sedang berjalan).
    • Anda bisa memakai Process Explorer dari sysinternals.com, salah satu program yang masih belum dipikirkan oleh pembuat Brontok (program lain sejenis akan menyebabkan komputer restart. Mungkin saja di versi Brontok berikutnya program Process Explorer tersebut juga akan menyebabkan komputer restart jika dijalankan). Bunuh proses services.exe, lsass.exe, smss.exe, dan winlogon.exe.
    • Cara lain yang lebih mudah adalah dengan memanfaatkan program KillVB yang telah saya buat, program tersebut akan membunuh semua proses yang executablenya ditulis dalam VB (tidak hanya virus). Cukup download, ekstrak, dan jalankan file tersebut. Virus akan mati di memori setelah Anda menjalankan program tersebut dan Anda bisa meneruskan proses pembersihan komputer (tidak perlu restart atau masuk safe mode).
      Program killvb beraksi

      killvb membunuh proses Visual Basic yang berjalan.

  4. Di start menu, pilih programs, lalu pilih startup Klik kanan (jangan salah dengan klik kiri) pada Empty.pif, dan hapus file tersebut. (Kalau perlu, hapus semua file yang tidak Anda perlukan, di masa depan mungkin nama file Empty.pif akan berubah.)
  5. Perbaiki registry dengan membuat file fixbrontok.inf yang tercantum di bawah, lalu mengklik kanan pada file tersebut dan memilih install (Anda bisa mendownload file tersebut di sini). File ini akan memperbaiki perubahan setting oleh Brontok, dan akan mengeset agar Explorer menampilkan file yang hidden dan menampilkan juga ekstensi file yang dikenal oleh Explorer.
  6. [Version] 
    Signature="$Chicago$" 
    Provider=Compactbyte
     
    [DefaultInstall] 
    AddReg=fix
    DelReg=del 
     
    [fix] 
    HKCU, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced,Hidden,%REG_DWORD%,1
    HKCU, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced,HideFileExt,%REG_DWORD%,0
    HKCU, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced,ShowSuperHidden,%REG_DWORD%,0
    HKLM, Software\CLASSES\batfile\shell\open\command,,,"""%1"" %*" 
    HKLM, Software\CLASSES\comfile\shell\open\command,,,"""%1"" %*" 
    HKLM, Software\CLASSES\exefile\shell\open\command,,,"""%1"" %*" 
    HKLM, Software\CLASSES\piffile\shell\open\command,,,"""%1"" %*" 
    HKLM, Software\CLASSES\regfile\shell\open\command,,,"regedit.exe "%1"" 
    HKLM, Software\CLASSES\scrfile\shell\open\command,,,"""%1"" %*" 
    HKLM, SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon, Shell,0, "Explorer.exe" 
     
    [del]
    HKCU, Software\Microsoft\Windows\CurrentVersion\Run,Tok-Cirrhatus 
    HKLM, SOFTWARE\Microsoft\Windows\CurrentVersion\Run,Bron-Spizaetus 
    HKLM, SYSTEM\CurrentContolSet\Control\SafeBoot,AlternateShell
    HKLM, SYSTEM\ContolSet001\Control\SafeBoot,AlternateShell
    HKLM, SYSTEM\ContolSet002\Control\SafeBoot,AlternateShell
    HKLM, SYSTEM\ContolSet003\Control\SafeBoot,AlternateShell
    HKCU, Software\Microsoft\Windows\CurrentVersion\Policies\System,DisableCMD
    HKCU, Software\Microsoft\Windows\CurrentVersion\Policies\System,DisableRegistryTools
    HKCU, Software\Microsoft\Windows\CurrentVersion\Policies\Explorer,NoFolderOptions
    
    [Strings]
    REG_DWORD      = 0x00010001
    
  7. Untuk langkah selanjutnya, untuk meyakinkan apakah objek dengan ikon folder adalah benar-benar folder, lakukan salah satu langkah berikut:
    • Gunakan view detail (di Explorer, pilih menu view, lalu details). Lihat di jenis objek apakah folder atau application. Jangan mengklik aplikasi dengan ikon folder.
    • Restart explorer (tanpa merestart Windows), caranya: jalankan task manager dengan menekan ctrl-alt-del, pilih processes, lalu pilih explorer.exe dan pilih End Process. Pilih "Yes", setelah itu pergi ke tab Application, pilih New Task, ketikkan Explorer.exe, lalu tekan enter.
  8. Hapus semua file .exe di %windir%\shellnew (%windir% adalah direktori Windows Anda, misalnya C:\Windows). Tepatnya Anda harus menghapus yang memiliki ikon folder, tapi seharusnya direktori ini tidak berisi file .exe dan biasanya semua file exe di direktori tersebut aman di hapus.
  9. Bersihkan sisa registry yang dibentuk dengan string random, gunakan msconfig (pilih start, ketik msconfig lalu Enter), dan lihat di bagian tab startup, hapus startup item dengan nama diawali dengan bbm dan dengan nama brxxxon (xxxx adalah angka acak). Sekali lagi: nama ini mungkin kelak berubah. Cara terbaik adalah dengan melihat bagian command (kolom kedua), misalnya tercantum C:\Windows\X.exe, lihat file C:\Windows\X.exe, jika file tersebut memiliki ikon folder Anda bisa menghapusnya.
    Tampilan MSConfig

    Tampilan msconfig.

  10. Cari semua file .exe dan .scr di seluruh drive Anda menggunakan fitur find pada Explorer lalu hapus file tersebut jika file tersebut memiliki ikon folder. Untuk mengurangi jumlah file yang ditemukan batasi ukuran file menjadi < 90 kb (Versi lama sekitar 82 kb, versi baru sekitar 43 kb). Urutkan berdasarkan ukuran file agar memudahkan proses penghapusan. Perhatikan agar Anda mencari juga file yang sifatnya hidden Untuk lebih jelasnya lihat gambar berikut.
  11. Setting pencarian yang benar

    Setting pencarian yang benar.

  12. Hapus semua file .com yang ukurannya sama dengan ukuran Brontok yang Anda temukan pada langkah-sebelumnya di C:\Documents and Settings\%username%\Templates.
  13. Hapus scheduled task di Control panel yang bukan milik Anda (yang namanya At1, At2, dst).
    Tampilan scheduled tasks Windows XP

    Tampilan scheduled tasks di Windows XP.

  14. Jika Anda memakai Windows 95, Windows 98, atau Windows ME, lihat isi file autoexec.bat yang ada di root folder (C:\autoexec.bat, D:\autoexec.bat, dst), jika isinya hanya satu baris (berupa satu kata "pause"). Hapus autoexec.bat .
  15. Restart komputer, dan lihat apakah Brontok masih ada.

Admins unite: Mari kita tangkap pembuat Brontok!

Jika Anda adalah admin di sebuah ISP dan diberi hak (hak administratif, bukan hak di komputer) untuk mengakses log file, cobalah untuk mencari URL-URL yang telah saya sebutkan dalam log file Anda, dan kirimkan ke saya kapan kali pertama URL tersebut muncul di log Anda. Jika sudah diketahui titik awalnya, kemungkinan pembuat Brontok bisa dilacak.

Kemampuan Pemrograman Sang Pembuat Brontok

Pembuat Brontok ini memiliki kemampuan pemrograman yang cukup rendah (tidak akan lulus di mata kuliah di mana saya menjadi TA-nya). Beberapa kebodohan yang dilakukan pembuat Brontok:

  1. Kesalahan dalam kode, misalnya lupa menginisialisasi variabel yang diakumulasi dalam loop.
  2. Melakukan hal aneh, misal membaca seluruh isi file untuk mengambil hanya baris PERTAMA.
  3. Tidak konsisten memakai tipe dalam VB.
  4. Tidak terlalu memahami pass by value atau by reference, sering menyalin parameter ke variabel lokal untuk diproses.
  5. Tidak terlalu memahami API Win32, sehingga campur aduk, kadang memanggil program eksternal, kadang memakai API Windows.

Kemungkinan pembuat Brontok ini banyak mengcopy paste kode dari Internet, sehingga hasilnya kodenya jelek.

Sebagai tambahan, sepertinya kemampuan berbahasa Inggris sang pembuat brontok kurang bagus, sehingga hanya bisa menuliskan pesan moral dalam bahasa Indonesia meski sudah mendeteksi antara domain lokal dengan domain asing.

Satu-satunya kelebihan yang dimiliki oleh pembuat Brontok ini adalah ketekunannya untuk selalu mengupdate brontok setiap kali ditemukan cara untuk menghapus dirinya.

Kesimpulan

Pembuat Brontok ini sepertinya bukan mahasiswa Teknik Informatika ITB (namun mungkin saja dari ITB), kemampuannya cukup rendah, mungkin orang Jawa Tengah/Timur (dari banyaknya penggunaan string dalam bahasa Jawa, ini bukan menyudutkan suku tertentu, saya juga orang Jawa tengah). Penyelidikan lebih lanjut mungkin bisa menemukan dengan tepat siapa yang membuat Brontok. Pembuat Brontok bisa saja memasukkan Brontok kali pertama ke ITB, karena ada beberapa WIFI access point yang terbuka di ITB. Beberapa Universitas lain, seperti UNJ juga memiliki WIFI access point yang terbuka umum.

Pembuat Brontok ini cukup "baik" karena menghapus virus lokal yang lain, tapi cara penghapusannya agak "brutal" dan mungkin menghapus file Anda yang berharga. Contoh kasusnya seperti ini: beberapa orang suka menciptakan self extracting zip file, suatu file zip yang diubah menjadi exe agar tidak perlu program WinZip atau semacamnya untuk mengekstraknya, biasanya ini dikirimkan ke rekan yang punya Windows versi lama dan mungkin tidak punya Zip Extractor (Windows baru bisa mengekstraksi file zip otomatis). File EXE tersebut sangat rawan terhapus oleh Brontok jika namanya mengandung substring tertentu. Mungkin saja hanya 1 dari 10000 orang yang mengalami kasus seperti ini, tapi itu berarti Brontok merusak bagi satu orang itu. "Kebaikan hati" pembuat Brontok untuk menghapus virus lain ini sepertinya hanya dilakukan untuk membuat popularitasnya menaik di kalangan pembuat virus, dan seperti janjinya, dia ingin agar pembuat virus lokal lain "terkapar".

Apakah pembuat antivirus terlibat dalam hal ini? saya tidak bisa memberi jawaban pasti. Versi awal Brontok sangat mudah dipahami dan dibongkar (jadi ada kemungkinan mereka menyembunyikan fakta mengenai URL update Brontok), tapi versi Brontok selanjutnya memang sudah cukup kompleks, dan ada kemungkinan mereka tidak memahami algoritma enkripsi Brontok.

Jika tidak dihentikan, pembuat brontok ini mungkin saja akan membuat worm/virus yang lebih berbahaya lagi untuk memperlihatkan kehebatannya kebodohannya. Sepertinya sampai saat ini pembuat virus masih merasa aman-aman saja karena tidak merasa ada petunjuk yang mengarah padanya.

Saran buat virus maker wannabes

Pertama, bagi yang belum pernah membuat virus dan sudah sering mengutuk pembuat virus, Anda perlu tahu bahwa: Membuat virus memang terkadang menyenangkan dan mendidik. Saya pernah (tahun 1999) membuat virus yang tidak saya sebarkan (saya simpan dalam keadaan terenkripsi dan tidak dikompilasi, sehingga tidak mungkin tidak sengaja berjalan, virusnya juga virus DOS, jadi tidak akan menginfeksi apapun sekarang). Pembuatan virus itu telah mengajarkan pada saya hal-hal yang tidak diajarkan pada pelajaran Algoritma dan Pemrograman, Arsitektur Komputer, Sistem Operasi, dan Otomata (virus saya ditulis dalam assembly dan polymorphic, jadi ada teori formalnya juga).

Saran saya untuk para pembuat virus atau calon pembuat virus:

  1. Jangan buat virus yang merusak.
  2. Jangan sebarkan virus Anda (pastikan ini dengan membuat kode agar virus tidak berjalan di komputer selain komputer Anda)
  3. Jangan cuma membuat virus yang bodoh, eksplorasilah teknik tingkat lanjut seperti teknik stealth, polymorhic, dll.
  4. Tuliskan hasil eksplorasi Anda, buat majalah virus Indonesia (tentunya majalah versi elektronik, coba tengok majalah virus 29A yang hanya mengeksplorasi teknik-teknik virus, tapi tidak membuat virus yang disebarkan, padahal mereka bisa membuat virus yang seribu kali lebih hebat dibanding dengan Brontok).
  5. Salurkan bakat dan kemampuan Anda itu untuk hal-hal yang lain.

Pikirkan hal ini: Anda sama sekali nggak jadi hebat dengan membuat virus yang menyebar dan merusak. Contoh sesuatu yang hebat adalah pada pelajar TOKI (Tim Olimpiade Komputer Indonesia) yang berjuang mengharumkan nama bangsa dengan membuat program yang menyelesaikan masalah kompleks.

Contoh lain yang hebat adalah jika Anda mengeksplorasi pembuatan virus, tidak menyebarkannya, dan Anda menghasilkan antivirus yang lebih baik untuk virus lain.

Saran buat hacker wannabes

Menjadi white hat hacker butuh waktu lama, dan bukan hasil dari sebuah pelatihan singkat ataupun sertifikasi, jadi untuk Anda yang benar-benar tertarik pada security, belajarlah dengan rajin dan benar. Jika Anda kurang memahami sesuatu, Please jangan membuat analisis aneh-aneh yang bisa menyesatkan atau meresahkan masyarakat.

Contoh analisis yang menyesatkan: katanya virus tidak mengirim dirinya ke domain indonesia, nah misalnya ada yang menerima file dan yakin itu bukan virus karena domainnya adalah .ac.id, maka orang itu bisa terinfeksi. Contoh analisis yang meresahkan: ada yang bilang virus dari ITB hanya karena jadwalnya jam 17.08 WIB yang berarti restriksi internet di ITB sudah dicabut pada jam itu (tepatnya mulai pukul 17.00), tapi tidakkah ada yang melihat bahwa 17.08 mungkin saja dipilih karena melambangkan hari proklamasi?.

Made with Bluefish HTML editor and TextWrangler.

Copyright © 2005 Yohanes Nugroho.