Selasa, 28 Agustus 2007

How To Make Your Own Anti Virus - Part 1



Shoutz : All echo|staff, yogyafree|staff, The Killer Team
Myztx, vaganci, ^family_code^, TOMMY, adhietslank, ^rumput_kering^, Hartono, etc.
#e-c-h-o, #yogyafree, #javahack, #koncek, #canda, #canda-ops @DAL.NET
newbie_hacker@yahoogroups.com, yogyafree@yahoogroups.com
IT_CENTER@yahoogroups.com, ProgrammerVB@yahoogroups.com
virus_baru@yahoogroups.com
VBbego.com, Virology.info, Vbtn.com
IA01 dan 1IA07, Lab MaDas angk. 19/2004 @ Gunadarma University
Dan teman2 serta kerabat2 lain yang tidak bisa disebutkan satu-persatu

Notes : - Penulis TIDAK bertanggung jawab atas penggunaan maupun penyalahgunaan dari artikel ini.
- Tujuan dibuat artikel HANYA untuk BAHAN PEMBELAJARAN saja.
- Penggunaan nama, merek, atau logo hanya sebagai CONTOH dan REFERENSI saja, TIDAK ada maksud
mempromosikan pihak tertentu.
- Penulis mohon maaf apabila seluruh/sebagian dari isi artikel ini sudah tersirat dalam
artikel sejenis lainnya.

Main#
Sekarang kehadiran para virus maker (--selanjutnya disingkat jadi VM saja) lokal telah membuat gerah
para user komputer tanah air. Bisa dibayangkan bila dari sekian banyak virus lokal tidak satu-dua
yang menghancurkan data (terutama bagi file office; word, excel, dll...).
Bagi para vendor Anti Virus (--selanjutnya disingkat menjadi AV saja) fenomena ini adalah lahan bisnis
untuk produk mereka. Sebut saja NORMAN, yang kini men-support perusahaan konsultan virus lokal (--VAKSIN.COM)
, Symantec, McAffe, NOD32, dan sebagainya. Dengan menawarkan update definisi software AV tercepat, engine
scanner paling sensitif, dan lain-lain merupakan kiat untuk memancing para korban virus membeli
dan menggunakan software AV mereka.
Bagi penulis sendiri hal ini memang agak memberatkan mengingat update file definisi atau engine AV tsb
haruslah melalui koneksi internet. Lalu bagaimana yang tidak mempunyai akses sama sekali? Konsekuensinya iyalah
tertinggal dalam hal pengenalan varian virus baru yang pada ujung-ujungnya membuat AV yang sudah terinstall
bagai 'Macan Ompong'.
Kalau kita membuat AV sendiri bagaimana? dengan database definisi yang bisa diupdate oleh kita bahkan dapat
saling tukar dengan teman? Bisa saja, dengan syarat mau mempelajari sedikit teknik pemograman :D.
Pertama kita harus mengerti bagaimana cara kerja sebuah AV sederhana, pada dasarnya sebuah software AV mempunyai
komponen-komponen :

1. Engine scanner, ini merupakan komponen utama AV dalam mengenali sebuah pattern virus. Engine ini dapat
dikelompokkan menjadi statis dan dinamis. Statis dalam hal ini dapat disebut menjadi spesifik terhadap
pattern tertentu dari sebuah file virus. Checksum merupakan salah satu contoh dari engine statis ini.
Dinamis dalam artian dia mengenali perilaku 'umum' sebuah virus. Heuristic menjadi salah satu contohnya.
2. Database definition, menjadi sebuah referensi dari sebuah pattern file virus. Engine statis sangat bergantung
kepada komponen ini.
3. Decompress atau unpacking engine, khusus untuk pengecekan file-file yang terkompresi (*.rar, *.zip, dll) atau
kompresi atau packing untuk file PE seperti UPX, MeW , dll.

Tidak jarang hasil dari pengecekan terhadap file suspect virus menghasilkan false-positive bahkan false-negative
(-- false-positive berarti file yang bersih dianggap thread oleh AV, dan false-negative berarti file yang 100% thread
akan dianggap bersih). Semua itu dapat diakibatkan oleh ketidak-sempurnaan dari engine scanner itu sendiri. Misal
pada contoh kasus Engine String scanner (--Engine scanner yang menyeleksi string-string dari file text-based), bila
diterapkan rule 3 out of 5 (-- bila AV menemukan 3 dari daftar 5 string kategori malicious) maka AV akan memberikan
bahwa file terindikasi sebuah thread yang positif. Padahal file tsb nyatanya tidak menimbulkan efek berbahaya bila
dijalankan atau dieksekusi. Kesalahan scanning macam ini lazim ditemukan untuk file-file *.VBS, *.HTML, dll.
Untuk penggunaan engine checksum sangat banyak ditemui di beberapa software AV lokal. Checksum yang lazim digunakan
diantaranya CRC16, CRC32, MD5, dll. Dikarenakan mudah untuk diimplementasikan. Engine ini sendiri bukannya tanpa cacat,
Checksum bekerja dengan memproses byte demi byte dari sebuah file dengan sebuah algoritma tertenu (-- tergantung dari
jenis checksum yang digunakan) sehingga menghasilkan sebuah format tertentu dari file tsb. Contoh checksum menggunakan
CRC32 dan MD5 :

* calCrc = CRC32(file_name_and_path)
* calMD5 = MD5(file_name_and_path)

Maka isi dari string calCrc adalah 7AF9E376, sedangkan untuk MD5nya adalah 529CA8050A00180790CF88B63468826A. Perlu diketahui
bila virus menerapkan rutin yang mengubah byte tertentu dari badan virus tsb setiap kali maka penggunaan engine checksum ini
akan kurang optimal karena bila 1 byte berubah dari file maka checksum juga akan berubah.

Mari kita belajar membuat sebuah AV sederhana, yang diperlukan :

1. Software Visual Basic 6.0
2. Sedikit pemahaman akan pemograman Visual Basic 6.0
3. Sampel file bersih atau virus (-- opsional)

First#
Sekarang kita akan belajar membuat sebuah rutin sederhana untuk :
- Memilih file yang akan dicek
- Membuka file tersebut dalam mode binary
- Memproses byte demi byte untuk menghasilkan Checksum

Buka MS-Visual Basic 6.0 anda, lalu buatlah sebuah class module dan Form dengan menambahkan sebuah objek Textbox, CommonDialog dan Command Button.
(Objek CommonDialog dapat ditambahkan dengan memilih Project -> COmponent atau Ctrl-T dan memilih Microsoft Common Dialog Control 6.0)
Ketikkan kode berikut pada class module (kita beri nama class module tsb clsCrc) :

================= START HERE ====================

Private crcTable(0 To 255) As Long 'crc32

Public Function CRC32(ByRef bArrayIn() As Byte, ByVal lLen As Long, Optional ByVal lcrc As Long = 0) As Long

'bArrayIn adalah array byte dari file yang dibaca, lLen adalah ukuran atau size file

Dim lCurPos As Long 'Current position untuk iterasi proses array bArrayIn
Dim lTemp As Long 'variabel temp hasil perhitungan

If lLen = 0 Then Exit Function 'keluar fungsi apabila ukuran file = 0
lTemp = lcrc Xor &HFFFFFFFF

For lCurPos = 0 To lLen
lTemp = (((lTemp And &HFFFFFF00) \ &H100) And &HFFFFFF) Xor (crcTable((lTemp And 255) Xor bArrayIn(lCurPos)))
Next lCurPos

CRC32 = lTemp Xor &HFFFFFFFF

End Function

Private Function BuildTable() As Boolean
Dim i As Long, x As Long, crc As Long
Const Limit = &HEDB88320

For i = 0 To 255
crc = i
For x = 0 To 7
If crc And 1 Then
crc = (((crc And &HFFFFFFFE) \ 2) And &H7FFFFFFF) Xor Limit
Else
crc = ((crc And &HFFFFFFFE) \ 2) And &H7FFFFFFF
End If
Next x
crcTable(i) = crc
Next i
End Function

Private Sub Class_Initialize()
BuildTable
End Sub


================= END HERE ====================

Lalu ketikkan kode berikut dalam event Command1_Click :

================= START HERE ====================

Dim namaFileBuka As String, HasilCrc As String
Dim CCrc As New clsCrc 'bikin objek baru dari class ClsCrc
Dim calCrc As Long
Dim tmp() As Byte 'array buat file yang dibaca

Private Sub Command1_Click()
CommonDialog1.CancelError = True 'error bila user mengklik cancel pada CommonDialog
CommonDialog1.DialogTitle = "Baca File" 'Caption commondialog

On Error GoTo erorhandle 'label error handle

CommonDialog1.ShowOpen
namafilbuka = CommonDialog1.FileName
Open namafilbuka For Binary Access Read As #1 'buka file yang dipilih dengan akses baca pada mode binary
ReDim tmp(LOF(1)) As Byte 'deklarasi ulang untuk array
Get #1, , tmp()
Close #1

calCrc = UBound(tmp) 'mengambil ukuran file dari array
calCrc = CCrc.CRC32(tmp, calCrc) 'hitung CRC

HasilCrc = Hex(calCrc) 'diubah ke format hexadesimal, karena hasil perhitungan dari class CRC masih berupa numeric
Text1.Text = HasilCrc 'tampilkan hasilnya
Exit Sub

erorhandle:
If Err.Number <> 32755 Then MsgBox Err.Description 'error number 32755 dalah bila user mengklik tombol cancel pada saat memilih file

================= END HERE ====================

COba anda jalankan program diatas dengan memencet tombol F5, lalu klik Command1 untuk memilih dan membuka file. Maka program akan
menampilkan CRC32nya.

Second#
Kode diatas dapat kita buat menjadi sebuah rutin pengecekan file suspect virus dengan antara membandingkan hasil
CRC32nya dan database CRC kita sendiri. Algoritmanya adalah :
- Memilih file yang akan dicek
- Membuka file tersebut dalam mode binary
- Memproses byte demi byte untuk menghasilkan Checksum
- Buka file database
- Ambil isi file baris demi baris
- Samakan Checksum hasil perhitungan dengan checksum dari file

Format file database dapat kita tentukan sendiri, misal :
- FluBurung.A=ABCDEFGH
- Diary.A=12345678
Dimana FluBurung.A adalah nama virus dan ABCDEFGH dalah Crc32nya. Jika kita mempunyai format file seperti diatas, maka kita perlu membaca
file secara sekuensial per baris serta memisahkan antara nama virus dan Crc32nya. Dalam hal ini yang menjadi pemisah adalah karakter '='.
Buat 1 module baru (-- diberi nama module1) lalu isi dengan kode :

================= START HERE ====================

Public namaVirus As String, CrcVirus As String 'deklarasi variabel global untuk nama dan CRC virus
Public pathExe as String 'deklarasi variabel penyimpan lokasi file EXE AV kita

Public Function cariDatabase(Crc As String, namaFileDB As String) As Boolean
Dim lineStr As String, tmp() As String 'variabel penampung untuk isi file
Open namaFileDB For Input As #1 'buka file dengan mode input
Do
Line Input #1, lineStr
tmp = Split(lineStr, "=") 'pisahkan isi file bedasarkan pemisah karakter '='
namaVirus = tmp(0) 'masukkan namavirus ke variabel dari array
CrcVirus = tmp(1) 'masukkan Crcvirus ke variabel dari array
If CrcVirus = Crc Then 'bila CRC perhitungan cocok/match dengan database
cariDatabase = True 'kembalikan nilai TRUE
Exit Do 'keluar dari perulangan
End If
Loop Until EOF(1)
Close #1
End Function

================= END HERE ====================

Lalu tambahkan 1 objek baru kedalam Form, yaitu Command button2. lalu ketikkan listing kode berikut kedalam event Command2_Click :

================= START HERE ====================
If Len(App.Path) <= 3 Then 'bila direktori kita adalah root direktori
pathEXE = App.Path
Else
pathEXE = App.Path & "\"
End If

CommonDialog1.CancelError = True 'error bila user mengklik cancel pada CommonDialog
CommonDialog1.DialogTitle = "Baca File" 'Caption commondialog

On Error GoTo erorhandle 'label error handle

CommonDialog1.ShowOpen
namafilbuka = CommonDialog1.FileName
Open namafilbuka For Binary Access Read As #1 'buka file yang dipilih dengan akses baca pada mode binary
ReDim tmp(LOF(1)) As Byte 'deklarasi ulang untuk array
Get #1, , tmp()
Close #1

calCrc = UBound(tmp) 'mengambil ukuran file dari array
calCrc = CCrc.CRC32(tmp, calCrc) 'hitung CRC

HasilCrc = Hex(calCrc) 'diubah ke format hexadesimal, karena hasil perhitungan dari class CRC masih berupa numeric
If cariDatabase(HasilCrc, pathEXE & "DB.txt") Then 'bila fungsi bernilai TRUE
MsgBox "Virus ditemukan : " & namaVirus 'tampilkan message Box
End If
Exit Sub

erorhandle:
If Err.Number <> 32755 Then MsgBox Err.Description 'error number 32755 dalah bila user mengklik tombol cancel pada saat memilih file

================= END HERE ====================

Fitur AV sederhana ini dapat ditambahkan dengan fitur process scanner, akses registry, real-time protection (RTP) dan lain lain. Untuk process
scanner pada dasarnya adalah teknik enumerasi seluruh proses yang sedang berjalan pada Sistem Operasi, lalu mencari letak atau lokasi file
dan melakukan proses scanning. Fitur akses registry memungkinkan kita untuk mengedit secara langsung registry windows apabila akses terhadap
registry (--Regedit) diblok oleh virus. Sedangkan fitur RTP memungkinkan AV kita berjalan secara simultan dengan windows explorer untuk mengscan
direktori atau file yang sedang kita browse atau lihat. Untuk ketiga fitur lanjutan ini akan dibahas pada artikel selanjutnya.

Kesimpulan#
Tidak harus membeli software AV yang mahal untuk menjaga komputer kita dari ancaman virus, kita bisa membuatnya sendiri dengan fitur-fitur yang
tak kalah bagusnya. Memang terdapat ketidaksempurnaan dalam AV buatan sendiri ini, tetapi setidaknya dapat dijadikan pencegah dari infeksi virus
komputer yang semakin merajalela. Software AV sederhana ini dilengkapi oleh engine scanner statis dan database definisi. Tidak tertutup kemungkinan
software AV ini ditingkatkan lebih advanced dalam hal engine scannernya.

Penutup#
Pengembangan software AV sederhana ini sepenuhnya Open-Source selama mengikutsertakan nama pembuat asli didalamnya. Listing serta projek lengkap dapat
didownload di Projek AV, Mirror

Senin, 27 Agustus 2007

Acara Ulang tahun Echo.or.id



Dalam rangka meningkatkan semangat berbagi dna belajar bersama maka di ulang tahunnya yang ke empat in Echo akan mengadakan beberapa kegiatan:

Nama : Ulang tahun Echo yang ke 4
Pelaksanaan
Tempat : Aula SMK N 26 Jakarta (ex. STM Pembangunan)
Jl. Balai Pustaka Baru I, Rawamangun, Jakarta Timur 13220
Tanggal : Minggu, 9 September 2007
Waktu : Pukul 09.00 - Selesai BBWI

Acara

Sesi Seminar dengan tema "Apakah Kamu dan Komputermu aman" ?
Speaker & Judul Materi :

* Jim Geovedi
materi : Latest Computer And Network Security Threats (0day)
(akan membahas info-info up-to-date tentang berbagai jenis ancaman dan serangan terhadap keamanan komputer dan jaringan saat ini)
* the_day (Dedi Dwianto)
materi: Protocol Tunneling : From Limited to Unlimited Acces
plus demo inet gratis dengan tunneling

Sesi Diskusi Panel:
* all Echo staff, moderator Jim Geovedi
materi : sejarah echo dan eksistensi echo

Sesi Pemotongan Tumpeng

Sesi Dikusi Bebas
Selama lebih kurang 45 menit, para peserta bisa bebas bertanya tentang semua hal di luar materi dan terkait dengan keamanan komputer dan jaringan.

Sesi launching Buku y3dips
Selama 15 menit, para peserta bisa mengetahui latar belakang pembuatan buku ini, serta diskon sebesar 20% untuk pembelian buku tersebut :)

Sesi hiburan
Akan di bagikan Door price berupa buku, kaos, pin dan merchandise lainnya

E.t.c
Di jual buku-buku keamanan (buku y3dips juga :P) yang bekerja sama dengan jasakom.com, kaos echoerz edisi khusus, PIN echo dsb

Kontribusi Peserta

Rp.45.000 untuk mahasiswa/pelajar
Rp.75.000 untuk umum

Fasilitas

- Makan Siang + Air Mineral
- untuk yang membawa hardisk external/usb bisa mengkopi materi plus dokumentasi lainnya.


Pendaftaran

- EMail Registration
Dengan format sebagai berikut :

============

To : ultah@echo.or.id
Subject : ultah echo REGISTRATION
BODY :

Ultah EcHo .

Full Name :
Nick :
Phone :
Email :

============


Apabila sudah Transfer silakan kirim email konfirmasi dengan format sebagai berikut

- Email Confirmation
Dengan format sebagai berikut :

============

To : ultah@echo.or.id
Subject : ultah echo CONFIRMATION
BODY :


Full Name :
No Rekening Asal :
No Rekening Tujuan :
Bank Mandiri Cabang RS. Harapan Kita
Rekening No : 116 000 4584 117
a/n Siska Kusumadewi
Jumlah Transfer :
Waktu Transfer :
============

- Transportasi & Peta Map+Transport Service


Regards;
echo|staff

Minggu, 26 Agustus 2007

Hack in BRAS Box



BRAS, Broadband Remote Access Server bertugas untuk mengroute lalu lintas data dari/ke DSLAM (Digital Subscriber Line Access Multiplexer) di suatu ISP. Berbagai fitur ada di BRAS, seperti IP QoS, ototenkasi, PPPoA, n dll. Kali ini aq nyoba "masuk" ke box sebuah BRAS ISP terkemuka di Indonesia :P.


OK, lets get it ON!! Seperti biasa, kita akan gathering informasi seputar target. Aq nyoba ngescan port yang terbuka pake Angry IP Scanner. Port yg discan : 21,22,23,2222,2323,80,8080.



Si target membuka port telnet, berarti kita coba konek dengan telnet.exe. Uuppss, ada passwordna, n aq gk tau ni :(.. Untuk itu kita coba crack dengan Brutus...



Yupsss, kita dapet passwordna :) hehehe, dalam masalah crack password (palagi dengan teknik brute-force) memang diperlukan kesabaran extra, soalna makin panjang password (> 6 karakter) perlu waktu lama...
Coba kita login yuk ke BRAS tsb...



Taraaaaaaaaaaa... kita dah masuk ke box si BRAS... mo ngapain ya? Humm, coba kita liat user yg valid disini ...



Weks, banyak juga nih.. hehehehe... coba kita liat sapa ajah account yang konek ke BRAS ini...



Dalam posting sebelumna yg membahas soal hijacking account ADSL, kayakna lebih gampangan lewat BRAS ini dah.. hehehehe langsung ke pusatna :P
trus apa ajah yg ada di sini selain diatas? banyaaakkkk bgt, dari konfigurasi jaringan (bisa kita liat lewat SNMP) ampe konfigurasi BRAS tsb. Untuk SNMP sengaja aq aktifkan di BRAS tsb, n akses lewat public-community :)



Wah mang rawan nih kalo diapa2in si BRAS.. dari bikin backdoor ampe MITMA mungkin bisa dilakukan disini :P hehehhe, semoga para ISP lebih bisa mengamankan infrastruktur mereka tuk meminimalkan serangan seperti ini :) :)

Your ADSL Modem : How Secure Is It?



Pernah ngalamin waktu konek ke internet dengan menggunakan koneksi ADSL, (lagi asik2 donlod :P) tiba2 putus koneksi? atau ingin konek ke internet tapi username n password anda ditolak? Humm, status modem OK, lampu ADSL nyala, lampu USB/Ethernet juga OK, Username n Password OK, kok gk mo konek!!!??? Nah lo! apa yang anda lakukan pertama kali? Angkat telpon n mulai mendial nomor telepon Customer Service ISP anda. Tetapi oleh sang "CS", diberitahu bahwa jaringan ADSL anda baik2 saja n sedang digunakan saat ini!??

Don't panic, mungkin anda termasuk salah satu (ato salah dua,tiga,empat, ... n) korban hijacking account ADSL. Kejadian ini bukanlah hal asing lagi, karena memang beberapa waktu lalu (atau bahkan saat ini masih) terjadi di berbagai kota. Aq gk tau angka pastina, tapi dengan tutorial atau pun eksperimen dewek, hampir semua orang bisa melakukanna.

"Gimana sih aq ko bisa kena?", sederhanana kita menggunakan modem untuk menghubungkan diri ke jaringan ADSL. Yups, modem ADSL (beberapa dah ada yg built-in router) mang banyak sekali jenisna. Dari china-manufactured ampe eropa-manufactured mungkin ada :P (bukan distibutor, jadi asal nyebut ajah :P). Pernahkah anda melihat-lihat atau mencoba fitur yang ada di modem ADSL anda? Salah satu fitur yang "wajib" ada di modem ADSL adalah Remote Management atau Web Management. Fitur ini memungkinkan kita mengakses modem secara remote/di luar jaringan lokal.

Nah itu dia permasalahanna, apakah fitur ini di modem anda sudah di non-aktifkan? bila belum, coba buka remote/web management dari browser anda. Masukkan IP/hostname modem anda (biasana sih IPna 192.168.1.1 atau 192.168.0.1, liat buku manual :P) lalu login dengan username n password yg ada di buku manual modem. Ubek2 si modem ampe nemu kata/kalimat "Enable/disable Remote/web management" atau sejenisna. Ya abis itu di non-aktifkan. Bila anda memang menggunakan fitur ini, ya tidak ada salahna untuk mengubah port default yg digunakan (biasana port 80 atau 8080). Jika tidak mengubah port ya ubahlah usernmae n password default modem anda :) :)

Aq ndiri juga pernah nemuin banyak modem ADSL yang masih bisa "terakses" dengan username n password defaultna. Apa yg bisa kita peroleh? dari username n password account ADSL hingga (mungkin) mengakses komputer yang ada di jaringan lokal mereka :)

Kalo account ADSL kita dah di tangan orang lain, wew bisa disalahgunakan (mungkin dipergunakan kata yg tepat :P). Tapi kayakna dengan adana hal semacam ini tentuna dari pihak ISP juga gk mau ketinggalan dunk, ya mereka bisa lebih "mengamankan" kustomer mereka. Misal dengan menerapkan sistem ototenkasi yang lebih ketat lagi :) :)