Minggu, 18 November 2007

15th INDOCOMTECH 2007 - JCC



INDOCOMTECH 2007 in Nov 14-18, will be occupying Hall A, Hall B, Cendrawasih and Plennary Hall at the Balai Sidang Jakarta Convention Center.


Kemarin hari sabtu, 17-nop-2007 aq n temen2 main ke pameran INDOCOMTECH di JCC. Begitu nyampe langsung nyari tempat buat duduk n buka si lappie. Hehehe biasa, pemburu hotspot gratisan :P. Pas dicari berapa AP yang aktif pake perintah "iwlist scan" , ternyata banyak juga :) (hasil scan dapat didonlod Disini atau Mirror).

Yang dateng lumayan banyak, karena selain pameran juga terdapat seminar n workshop yang diadakan setiap harina :). Aq sempet ngeliat2 n moto2 beberapa booth :) Ada booth yang menarik, yaitu robotika.












Untuk booth dari vendor hardware VGA, biasana disediakan PC Game yang bisa dicoba, kayak yang ini nih :










Kira2 berapa juta yah buat merakit PC Game seperti itu? T_T

Ada kegiatan workshop pas aq dateng, diantarana :


Ternyata ada booth CHIP juga loh! Yang dijual majalah2 CHIP dari tahun 2005 ampe yang baru, lumayan murah! :) :)






Tapi sayang sampe aq pulang gk da lomba2 dari booth. :( padahal pgn ikut sapa tau dapet Flashdisk ato Voucher makan :) :) hehehehhe :P

Minggu, 21 Oktober 2007

My Omni Antenna + si Biru (wrt54GL) :)

Beberapa waktu lalu aq sempet bikin Antenna Omni Homemade bareng ma temen2 :). Kebetulan dapet referensi + video tutorialna dari VOIP Rakyat. Bahan n alat2na yang dipake buat antenna omni sih nyari ndiri, diantarana :

1. Pipa PVC ukuran 1.5" 2 meter
2. Kabel CNT-400 (RG-8) 2 meter
3. RP-TNC + N-Connector masing2 1 buah
4. Kapiler AC diameter 1 cm, 2 meter
5. Busa (busa kali ya? :P) pipa PVC 2 meter
6. Dop (bener gk ya namana?) pipa PVC 2 buah
7. Sekrup kecil, mur, lakban, lem perekat
8. Obeng, tang, solder (kalo bisa yg kayak di video itu, biar gampang nyatuin), gergaji, piso cutter, penggaris

Uhmm mungkin bahan yang agak mahal ada di kabel RG-8 dan konektorna, kemarin nyari di Glodok dapet per m itu sekitar 30 rebu dan konektorna ndiri 50 rebu per biji (mahal pa murah ya?). Untuk pipa kapiler + busana bisa nyari di toko yg jual peralatan AC. Bahan yang lain bisa didapet di toko bangunan.

Bagian yang agak susah menurut aq sih untuk menyatukan masing2 segmen (kabel yg dah dikuliti + diselubungi ma kapiler AC) dengan solder. Soalna kemarin ma temen2 juga rada kerepotan gimana nyolder yg bagus n baik hasilna. Tapi setelah beberapa kali ganti timah solder (baru tau kalo kualitasna beda2 :P) akhirna bisa nyatu juga :). Oiya, jumlah segmen yg dibuat sebanyak 25 segmen.



Untuk tempat si biru (wrt54GL) memakai box plastik makanan (murah meriah, 15000an :P). Dikasi fan kecil buat sirkulasi udara biar gk cepet panas :) hehehehe. Oiya, sempet nambahin indikator LED buat ngetahuin kondisi si biru. Yaitu LED Power, WAN, ma LAN. Aq sih nyolder kabel UTP sebanyak 1 pasang untuk masing2 LED di bagian kaki2 lampu LED si biru. Jadi garansina lsg angus, soalna dah dibuka casingna :( hehehehe

Berhubung si biru dah diinstallin DD-wrt V23 SP2, jadina tinggal milih antenna yang kanan (diliat dari bagian depan si biru) untuk menjadi Tx n Rx. :)



Taraaaa... jadi deh antenna omni n sibiru di"tangkringin" di tiang besi :) hehehhee... mudah2an ajah awet :P

Rabu, 17 Oktober 2007

Serangan Fajar! War Driving sekitar Rumah :)



Humm pagi ini aq war driving sekitar rumah aq, pake motor n lappie :). Daerah yang "dijelajahi" meliputi Wijaya Kusuma, Bunga Rampai, Pondok Kelapa, Mawar Merah, Malaka, Buaran, dan Bintara. Hasilna lumayan banyak yg dapet, bahkan diantarana masih OPEN n DHCP, seperti di kampus Darma Persada n warnet di Pondok Kelapa. Yaudah ngenet gratisan bentar :P hehehhe. Beberapa diantarana mang mendapatkan sinyal yg kecil, mungkin karena faktor tinggina tower + jenis antenna yg dipake kali ya? Kalo yg pake antenna omni enak dapet sinyalna :)

Hasil war driving dapat didonlod disini atau mirror. Nama file *.txt merupakan tempat dimana dilakukan scanning. OS yang dipake buat war driving ini adalah Backtrack 2.0+ :) :) mudah2an bermanfaat :P hehehehe :)

Senin, 15 Oktober 2007

Kebijakan Batas Tagih Speedy, Cara baru Telkom?

Kebijakan Batas Tagih untuk Layanan Speedy Limited Volume Based
01 Oktober 2007 04:07:14 ( Sys Admin TSDC )

Mulai pemakaian September 2007 (tagihan Oktober 2007) batas tagihan maksimum untuk layanan Speedy limited volume based (Speedy Personal & Speedy Professional) yang mengalami overquota adalah sebesar Rp 1.200.000.
Dengan ketentuan ini maka tagihan yang harus dibayar pelanggan tidak akan melebihi angka tersebut. Batasan tagihan ini tidak akan mengurangi hak akses pelanggan, artinya pelanggan tetap masih dapat mengakses layanan Speedy walaupun sudah overquota.
Informasi lebih lanjut dapat menghubungi 147.

Sumber : https://portal.telkomspeedy.com/index.php?act=newsdetail&now=118&id=3

Menurut berita tsb berarti bagi pelanggan limited Telkom Speedy yang mengalami Over Quota (salah satu hal yang biasa n paling ditakuti :P) akan dipatok sampai 1.2 Jt saja. Dulu sering aq liat banyak pelanggan limited Speedy yang over quota, bahkan harus membayar > 2 Jt perbulanna. Kalo dipikir2 kenapa Telkom gak mengeluarkan kebijakan ini sebelom2na ya? Bayangkan bila dari program Speedy launching hingga kebijakan ini keluar berapa profit Telkom yang didapat dari hasil Over quota pelanggan2na? ck ck ck...

Dengan kata lain para pelanggan limited speedy akan mendapatkan akses Unlimited (no Quota) setelah membayar 1.2 Jt (wew... T_T). Aq sendiri juga bukanna tidak pernah over quota hehehehe :P

Kalo bisa sih tarif Speedy bisa lebih murah lagi, ya senggak2na sistem quota dihilangkan. :P hehehehe

Selasa, 09 Oktober 2007

Siemens S35i with my Lappie :P



Masih punya HP ini? Aq sih masih :P hehehe HP yang lawas tapi masih "powerfull", dah ada irDa, WAP n tentuna ada kabel data RS-232na :P hehehe... OK, uji coba dilakukan di lappie (HP nw8240) aq dengan Debian Etch. Untuk berkomunikasi dengan si HP diperlukan aplikasi kecil, yaitu minicom. Pas aq install Debian sih lom ada :P jadina perlu apt-get install minicom dulu dah :)

Kalo dah terinstall, buka terminal/konsole ketikin minicom -s (kita setup duluw si minicom). Nanti ada menu kecil yg muncul kayak gini :



Pilih Serial Port Setup, nanti muncul menu lain :



Karena di lappie aq pasang kabel data di port serial pertama (mang satu2na :P) jadi dia pasti berada di /dev/ttyS0. Maka ubah Serial Device kalo lom bener dengan menekan tombol A dan mengubah nilai yang ada :P. Nah, si HP siemens s35i menggunakan Baudrate 19200, jadi perlu kita ubah juga Bps/Par/Bitsna, jadi tekan tombol E, nanti keluar lagi menu :



Pilih baudratena 19200 yaitu tombol F, nah urusan Parity, Stop Bits n Data Bits, kita pake 8N1, artina Data Bits = 8 bit, No parity dan Stop Bits = 1. Langsung tekan Q ajah :) tekna Enter buat kembali ke menu utama, kita simpan dulu konfigurasina biar gk capek2 setting lagi, pilih Save Setup as dfl :



Kalo udah, pilih Exit n kalo settingan kita dah bener maka langsung muncul :



Horeeee, akhirna kita bisa berkomunikasi ma si HP hehehehe :), trus apa ajah yg bisa kita lakuin disini? Banyaakkkk, tapi "ngobrol"na harus pake AT Command buat s35i :). Misal kita pengen liat inbox SMS kita (ALL ato semua), maka kita ketikin ajah AT Commandna : AT+CMGL=4 , 4 disini berarti nampilin semua SMS :



Nanti muncul dah bilangan2 Hexadesimal.. Duh apa artina? Ini namana format PDU (protocol description unit) Maaf ya isi inbox aq disensor :P hehehhehe :P

Uhmm, next project mungkin bagaimana kita bikin aplikasi kecil2an yg Read/Write ke port serial tuk ngambil n ngebaca SMS di inbox :) Doain ya biar cepet selese aplikasi sederhanana :).. :)

Kamis, 04 Oktober 2007

War Driving @ depok n mangga 2 :)



Beberapa waktu lalu sempet nyoba2 war driving n packet capturing pake airodump-ng di Backtrack 2. Nyoba2 di kampus n jalanan sekitar margonda (pake mobilna si sarap :P).. hasilna lumayan, lumayan crowded maksudna :P hehehe, gk nyangka di jalan2 margonda ajah dah banyak betul sinyal2 wifi bertebaran.. :)

Terus kemarin juga sempet nyoba di mangga 2 mall, hasilna juga lumayan (sempet ngenet gratisan :P). Percobaan dilakukan di lantai 1 dekat pintu utama... Beberapa SSID ketangkep walaupun sinyalna kurang bagus, rata2 -70 dBm. Untuk hasil capture bisa di donlod disini atau mirror :) :)

My lappie with Debian Etch...

Di postingan sebelomna pas aq instal debian etch terdapat masalah, yaitu tampilan yg flickering n gk bekerjana touchpad. Setelah nyari2 referensi, akhirna dapet solusina. Diharuskan edit file /etc/X11/xorg.conf, yg isina :

Section "Device"
Identifier "VESA Framebuffer"
Driver "vesa"
==== Cut Here ====

Pada awalna Driver yang ada bukanlah "vesa", jadi aq ganti menjadi vesa. Setelah itu tampilan pun kembali normal dan berhasil dijalankan hingga resolusi 1600x1200. Sebenarna si lappie dukung ampe 1920x1900, tapi entah mengapa ma si Xserverna cuman bisa sanggup ampe 1600x1200.

Untuk masalah touchpad ternyata harus mengedit file xorg.conf juga, yaitu :

Section "InputDevice"
Identifier "Mouse0"
Driver "synaptics"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "LeftEdge" "1700"
Option "RightEdge" "5300"
Option "TopEdge" "1700"
Option "BottomEdge" "4200"
Option "FingerLow" "25"
Option "FingerHigh" "30"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "VertScrollDelta" "100"
Option "MinSpeed" "0.06"
Option "MaxSpeed" "0.12"
Option "AccelFactor" "0.0010"
Option "SHMConfig" "on"
EndSection

Hehehe kebetulan aq juga pake mouse USB, jadina tinggal nambahin di file tsb :

Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection

Jadi untuk menggabungkan antara touchpad dengan Mouse USB :

Section "ServerLayout"
Screen "Screen 1"
InputDevice "Mouse0" "CorePointer" #Pointer utama, Touchpad
InputDevice "Mouse1" "SendCoreEvents" #Pointer kedua, mengirim event
InputDevice "Keyboard1" "CoreKeyboard"
EndSection

Mudah2an bagi yang mengalami masalah serupa bisa terselesaikan :) :)

Sabtu, 22 September 2007

My New (2nd Hand :P) Hp-Compaq NW8240



Beberapa hari yang lalu aq membeli Lappie (baca: laptop) seken, ya lumayan murahlah buat Mhs.. Merekna Hp-Compaq NW8240... hehehe untuk spek bisa Googling ndiri ya :P....

Begitu sampe ke tangan, wewwwwwwwwww dah ada windows Vista Business Edition terinstall... Bagus sih dekstop n dll na.. tapi ni lappie pgn aq masukin pingu (baca: Linux).. Beberapa alternatif si pingu sih ada.. diantarana Ubuntu, Kubuntu, Debian, Backtrack n Slackware.

Pertama nyoba jalanin Ubuntu, boot dari CDna.. ampe menu pilihan Ubuntu masih lancar, tapi pas milih Start OR Install Ubuntu kok mandek?? :(

Akhirna coba Kubuntu, sama kayak si Ubuntu, tapi bedana dia lancar ampe mounting root file system doank :P selanjutna pingsan T_T

Uji coba lagi dengan menginstall Debian, lancarrrrrrrr truuussssss... tapi begitu muncul dekstop GNOMEna.. kok layarna Flickering (Berkedip2) mulu ya? kayakna masih ada masalah dengan XServerna.. untuk hal ini lom aq perbaikin, masih nyari referensi dari Google.

Slackware 11 diuji coba, install lancar, masuk Desktop KDE lancar, pas mo gerakin pointer, wakksss mandek, gk mo gerak :(( kayakna si slackware lom ada driver untuk Touchpad Synaptics (Mouse USB ajah gk kedetek T_T) padahal dah milih PS/2 untuk inputan mouse pada awal Setup..

Yowiss, akhirna coba jalanin si BackTrack 2 (baca: bt), wekkksss lancar oiiiii!!! akhirna si Backtrack menjadi sang penghuni lappie aq dengan didampingi Debian 4.0 n Slackware 11 :) :)

Moga2 lappie aq awet n si pingu betah didalemna :P :P hehehe

Untuk cara konfigurasi XServer n Touchpad nyusul ya :) :)

Sabtu, 15 September 2007

Software Freedom Days 2007 @ Universitas Budi Luhur



Pada tanggal 13-15 September 2007 telah diadakan acara Software Freedom Days 2007 yang diselenggarakan oleh KSL (Kelompok Studi Linux) Budi Luhur. Kebetulan echo menjadi salah satu pengisi acara. Ada 3 sesi yang diadakan pada hari ini (tgl 15 Sept), yaitu :

1. ksl-bl : All about FOSS (Free & Open Source Software) on Windows
2. ubuntu.or.id : FOSS on Education
3. echo : Firewall dan IDS dengan Linux, Honeypot, dan Security Testing (attacking bl.ac.id)

Acarana cukup rame, mengingat antusias para peserta sangat tinggi ttg dunia Open Source. Pada sesi pertama dibicarakan ttg FOSS di windows, apakah itu aplikasi multimedia seperti Audacity hingga aplikasi pengolah image, seperti GIMP.

Pada sesi kedua, perwakilan dari komunitas Ubuntu Indonesia (ubuntu-id.org) menyampaikan materi ttg dunia FOSS di Linux, khususna di distro Ubuntu. Sangat menarik apa yang disampaikan oleh kang Haary (maap kalo salah eja :P).

Nah setelah istirahat, dilanjutkan sesi untuk para pembicara dari Echo.or.id :). Oms Bherly menyampaikan ttg Firewall dan IDS dengan Linux, dimana membahas ttg IPTABLES dan Snort :). Dilanjutkan oleh oms Hero ttg Honeynet (lupa judul lengkapna :P). Duh materina oms Hero menarik bgt nih :), bagaimana kita bisa menjebak para intruder (penyerang/penyusup) dengan membuat server palsu :)

Sesi yang ditunggu2 oleh para peserta tidak lain adalah POC dari Audit situs bl.ac.id. Kebetulan ada oms Ammar dan oms Azis yang bertugas mendemokanna kepada peserta. Wiihhh.. kata oms hero n kawan2 staff echo yang mendapat tugas audit sih, 15 menit bisa tembus sang situs :) Memang tidak dijelaskan bagaimana cara mendapatkan akses root dari pertama. Hal ini tentu juga dipengaruhi oleh kode etik dan peraturan yg dibuat sebelumna. Jadi hanya dibuktikan bahwa terdapat kelemahan2 pada situs bl.ac.id yg perlu diperbaiki secepatna. Sempat diperlihatkan bagaimana sang "attacker" mendapatkan akses root pada MYSQL server :) wew, pokokna asik deh acarana.. mudah2an tahun depan tetap diadakan n tentuna semangat untuk menggunakan FOSS tidak padam bahkan terus tinggi... Amiinnn :)

Rabu, 12 September 2007

Hack In BRAS Box - Part 3

Bila pada bagian sebelumna kita sudah dapat mendowload/mengupload file ke BRAS Box, maka selanjutna aq pgn mengeksplorasi jaringan internal yang ada di Box tsb. Masih ingat dengan file Log (operationlogfile.log)? Dari 1 file tsb bisa mambantu kita dalam mengeksplorasi lebih lanjut. Misal dari file Log yg aq dapatkan :

%Sep 1 12:40:39 2007 BRAS-D2-XXX SHELL/5/LOGIN: VTY login from 203.xxx.xxx.xxx
%Sep 1 12:40:53 2007 BRAS-D2-xxx SHELL/5/CMD:task:vt0 ip:203.xxx.xxx.xxx user:** command:telnet 10.xxx.xxx.xxx
%Sep 1 12:42:35 2007 BRAS-D2-xxx SHELL/5/CMD:task:vt0 ip:203.xxx.xxx.xxx user:** command:ping 10.xxx.xxx.xxx

Dapat dilihat kalo sang "admin" (mungkin loh :P) sedang melakukan sesi telnet ke salah satu IP internal. Coba yuk kita juga melakukanna :



Wawwwww.... ternyata bisa... n juga username + passwordna masih sangat gampang ditebak :( ... Ada apa ajah sih command disini?



Wew.. gk sebanyak yg di BRAS Box... :) hehehehe... kalo dieksplorasi lebih jauh lagi, ternyata banyak DSLAM box (bener gk ya DSLAM?) yg bisa dimasukin, misal :

10.xxx.xxx.xxx
DSLAM01-D2-xxx_xxx

10.xxx.xxx.xxx
DSLAM01-D2-xxx_xxx

10.xxx.xxx.xxx
DSLAM01-D2-xxx_xxx

10.xxx.xxx.xxx
DSLAM01-D2-xxx

10.xxx.xxx.xxx
DSLAM01-D2-xxx

Dll.... moga2 sang ISP lebih baik lagi dalam hal manajemen keamanan infrastrukturna :) :)

Selasa, 11 September 2007

Hack In BRAS Box - Part 2



Kali ini aq akan mencoba konek ke FTP Server yang berjalan di BRAS target, dengan username + password yang valid tentuna. Pertama aq login terlebih dahulu ke BRAS target seperti gambar diatas. Lalu masuk mode system-view. Perlu diketahui, FTP Server harus dijalankan terlebih dahulu bila sebelumna masih dalam keadaan non-aktif dengan menggunakan perintah :

ftp server enable

Bila sudah aktif, maka selanjutnya kita akan membuat username + password baru agar valid di BRAS tsb :


Pembuatan User baru ada dibagian local-aaa-server, dan syntax tsb berarti kita menambahkan user dengan nama xxxxxxx@ftp (harus memakai domain, misal @yyyy), password berupa plaintext (simple) yaitu xxxxxxxx, mempunyai level 3 dan mempunyai direktori FTP di hd:/ :)

Setelah itu mari kita coba login ke FTP Server tsb :



Taraaaaaaaaaaaaaa.... :) disini kita bisa upload ato download file :).. Untuk referensi perintah FTP bisa liat di Google :)

Ohiya, jgn lupa, semua aktifitas kita di Box ini pasti dicatet ma log daemonna... File Log tsb biasana berada di folder /logfile/xxxxyy/operationlogfile.log, dimana xxxx adalah tahun, dan yy adalah bulan.. :) :)

Minggu, 09 September 2007

Ultah Echo @ SMKN 26

Hari ini Echo mengadakan acara ultah di SMKN 26 (dulu dikenal dengan nama STM Pembangunan) di Rawamangun. Peserta yang hadir jauh dari estimasi para panitia :( Tapi Alhamdulillah acara berjalan lancar dan tertib...

Pembicara yang hadir yaitu Oms Dedi Dwianto (the_day) dan oms Jim Geovedi, Oms Dedi kebagian sesi pertama membawakan materi tentang Protocol Tunneling, From Limit to Unlimit. Sayangna karena hambatan teknis demo tidak bisa dilakukan (walaupun koneksi internet dah diusahakan semampuna dengan Access Point darurat milik oms Hero :P). Sedangkan oms Jim membawakan materi tentang Enterprise Hacking (lupa judul lengkapna :P). Katana materi ini juga dibawakan pada acara HITB (hack In The Box) di Malaysia beberapa hari yg lalu :).. Oms Jim sempat memberikan Bonus Demo berupa penyusupan (cie nyusup2 bahasana :P) melalui protocol SSH ke sistem target (targetna terkemuka loh :P).. Thx oms Jim n oms Dedi atas materi yg sangat2 bermanfaat, semoga menjadi inspirasi dan motivasi bagi kita semua :)

Di acara tadi juga dijual berbagai merchandise spesial edition, special dimanana? pertama harga, pasti didiskon.. dan kedua tersedia Baju versi spesial ultah :).. Yang dijual tadi itu Buku Jasakom : Seri Hacking 1 dan 2, Wireless Kungfu, CD Hacking Backtrack 2.0 dan Buku oms Ammar : Hacker : it's not about black or white dan Pin Echo :) ...

Selain itu juga ada sesi diskusi panel yang isina tentang perkenalan staff2 echo, sejarah, visi-misi echo dan harapan echo di masa datang :).. Pada saat akhir acara diadakan Quiz yang hadiahna buku gratisan, :)

Semoga Echo menjadi komunitas yang besar, tidak hanya besar dalam jumlah memberna tapi "besar" dalam jiwa, berkarya, dan tidak henti2na memberikan kontribusi yang baik dan manfaat bagi bangsa (cieee :P)... Happy B'Day Echo... we always love U :)

Selasa, 28 Agustus 2007

How To Make Your Own (Portable) Anti Virus




Portable itu apa sih? menurut aq ya, portable itu bisa dibawa n digunain dimana2.. Kalo aplikasi yg portable gimana?


"A portable application, or portable app for short, is a software program that does not require any kind of formal installation onto a computer's permanent storage device to be executed, and can be stored on a removable storage device such as a CD-ROM, USB flash drive, flash card, or even a floppy disk, enabling it to be used on multiple computers."
sumber : wikipedia

Yups, berarti aplikasi tersebut bisa dijalankan tanpa harus diinstal terlebih dahulu di komputer yang menjalankanna... Lalu kalo Anti Virus dijadikan portable gimana? tentuna lebih efesien n manfaat, napa? soalna tidak perlu terinstall di komputer, jika sewaktu2 kita ingin menggunakanna di komputer lain bisa langsung dijalankan :) cucok buat yg suka nancepin Flashdisk ato HD External di komputer2 publik.

OK, apa aja yg diperluin untuk membuat suatu aplikasi yg portable? Berhubung karena tiap komputer itu beda spesifikasi hardware n software, maka perlu dicermati dalam pembuatan aplikasina juga. Misal, apakah di komputer yang akan dijalankan sudah tersedia file2 pendukung untuk aplikasi kita? Entah itu file DLL, OCX, atau lainna. Apakah spesifikasi hardwarena sama dengan komputer kita dimana development aplikasi dibuat? Untuk menghindari adana error atau tidak berjalanna aplikasi portable kita, lebih baik untuk memikirkan semua kemungkinan yg kira2 penting untuk berjalanna aplikasi kita nantina :)

Anti virus yang aq bikin menggunakan scanner statis dengan teknik checksum MD5. Disini aq sengaja gk pake rutin menghitung MD5 di dalam Anti Virus itu sendiri, melainkan memakai librari luar, yaitu aamd532.dll. untuk tampilan form menggunakan control Active-X Advanced Progress Bar, yaitu APB.ocx. Dan menggunakan control common dialog, yaitu comdlg32.ocx. Semua file librari external tersebut dijadikan sebah file Resource (RES) yg nanti akan dimasukkan kedalam aplikasi Anti Virus kita.

Secara garis besar, pada pertama kali run Anti Virus akan mengekstrak n menyalin file2 librari yg ada di "tubuhna" ke dalam direktori sistem dan menregister satu-persatu. Bisa diliat dari snippet kode berikut :

[code]
ekstrak GetSystemRoot & "\APB.OCX", 101
ekstrak GetSystemRoot & "\aamd532.dll", 102
ekstrak GetSystemRoot & "\comdlg32.OCX", 103
RegSvr32 GetSystemRoot & "\APB.OCX", False
RegSvr32 GetSystemRoot & "\aamd532.dll", False
RegSvr32 GetSystemRoot & "\comdlg32.OCX", False
[/code]
Rutin "ekstrak", "GetSystemRoot" dan "RegSvr32" dapat dilihat pada source code Anti Virus

Selanjutna, Anti Virus akan mengscan semua proses yg ada di memory terlebih dahulu. Hal ini dilakukan dengan :

[code]
Scanmem strDB, Form1.APB1, Form1.Label9, Form1.Label5, Form1.Label10, Form1.List1
[/code]
Objek label, APB dan listbox dapat dilihat pada source code Anti Virus

Setelah itu sang Anti Virus akan mengscan semua file yg ada di direktori dimana ia berada :

[code]
scanDir apPath
[/code]
Rutin "scanDir" dapat dilihat pada source code Anti Virus

Berhubung Anti Virus ini menggunakan scanner statis, maka diperlukan suatu database checksum MD5 yang berisi checksum dari file virus. Hal ini juga menjadi suatu kelemahan scanner statis :) File database yang digunakan bernama DB.DAT. Engine scanner statis ini dapat ditingkatkan kemampuanna sesuai dengan artikel sebelumna, "How To Make Your Own Anti Virus - Part 2".

Anti Virus ini dapat dijalankan secara otomatis pada flashdisk begitu flashdisk dimasukkan ke dalam komputer, dengan catatan autoplay pada komputer tersebut dinyalakan. Hal tsb dapat dilakukan dengan cara membuat file Autorun.inf pada root direktori flashdisk dan menambahkan kode berikut :

[code]
[Autorun]
open=nama_file_AV.exe
[/code]

Fitur yang dapat digunakan pada Anti Virus ini adalah pemeriksaan terhadap suatu file, pemeriksaan terhadap folder tertentu, pemeriksaan terhadap drive tertentu n penambahan checksum file yang dicurigai sebagai thread kedalam database checksum. Kecepatan penghitungan checksum MD5 terhadap suatu file pada Anti Virus ini dapat dikatakan cepat. Dengan catatan bahwa memory yang tersedia pada sistem komputer yang dijalankan memadai. Serta ukuranna yang relatif kecil, sehingga dapat dimasukkan kedalam disket :P Adapun kelemahan dari Anti Virus ini adalah penggunaan scanner statis yg kurang efesien n akurat. Untuk kelemahan2 lainna lom sempat ditemukan, dan diharapkan kelemahan2 yang akan ditemukan dapat diperbaiki serta ditingkatkan hingga optimal :)

Projek lengkap dapat diunduh di multikiller3-portable, Mirror

Source code APB.ocx, Mirror
Bila menemui dalam penggunaan file APB.ocx, harap source code APB.ocx di recompile terlebih dahulu

Saran n kritik terhadap aplikasi Anti Virus Portable sederhana ini sangat diharapkan :) :)

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 :) :)

Struktur Program COM



#####################################
Dokumentasi asli ada di www.SROeR.org
"Chapter 1 : Struktur Program COM"
#####################################

Mengapa menggunakan bahasa Assembly?

1. Cepat, Lebih cepat dari compiler lainnya.
2. Lebih dekat dengan bahasa mesin, disebabkan bahasa Assembly dialamatkan
1:1 dengan bahasa mesin.
3. Kode yang dihasilkan lebih kecil dari compiler lainnya.
4. Dapat mengakses hardware lebih luas.

Compiler Assembly sudah banyak tersedia di internet, contohnya TASM (Turbo
Assembler), MASM (Microsoft Assembler), NASM (Netwide Assembler), dan lainlain.
Salah satu bentuk program yang dapat dihasilkan oleh compiler Assembly
adalah file COM. File COM adalah struktur program paling sederhana. Ada
beberapa syarat dalam pembuatan atau penggunaan file COM :

1. Kode dan data program harus tidak lebih besar dari 64 KB.
2. Tidak dapat memesan alamat memori melalui sistem operasi.

Contoh bentuk kode program COM, ketiklah di teks editor yang dapat
menghasilkan file ASCII murni seperti Notepad, vi, atau lainnya. Simpan
dengan nama COBAASM.ASM.
Versi TASM :
----------------------------------
ideal
p386n
model tiny
codeseg
org 100h
jmp start
;tempat data dan subrutin
start:
mov ax, 4c00h
int 21h
end
----------------------------------
Versi MASM :
----------------------------------
.386
.model tiny
.code
org 100h
entry:
jmp start
;tempat data dan subrutin
start:
mov ax, 4c00h
int 21h
end entry
----------------------------------

Compilelah dengan perintah TASM.EXE COBAASM.ASM lalu dikuti dengan perintah
TLINK.EXE /T COBAASM.OBJ jika menggunakan compiler TASM. Untuk compiler MASM
gunakan perintah ML COBAASM.ASM. Jika tak ada error maka akan terlihat
output seperti ini :

E:\PUSHM0~1\TASM3>tasm.exe cobaasm.asm
Turbo Assembler Version 3.0 Copyright (c) 1988, 1991 Borland
International
Assembling file: cobaasm.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 460k

File yang dihasilkan dari proses kompilasi adalah file OBJ. Untuk merubah
file OBJ ini menjadi sebuah file EXE atau COM kita perlu melakukan "linking"
dengan program linker. Disini kita menggunakan TLINK.exe.

E:\PUSHM0~1\TASM3>tlink.exe /t cobaasm.obj
Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International

Argumen /t pada tlink.exe berarti kita ingin membuat file COM dari file .obj
yang dihasilkan oleh compiler. Sedangkan untuk membuat file EXE tidak perlu
mengikutkan argumen /t.
Jalankan program COM tersebut :

E:\PUSHM0~1\TASM3>cobaasm.com

Apa yang terjadi? Tentunya tidak terjadi apa-apa karena kita belum
menuliskan perintah untuk program tersebut. Jadi program cobaasm.com
tersebut hanya diload ke memory lalu terminate dengan sendirinya.
Apa sih arti dari kode-kode diatas? lalu apa perbedaan antara kode yang
ditulis untuk compiler TASM dengan MASM?
berikut adalah penjelasan lengkapnya...

1. Perintah "ideal" berarti kita menggunakan syntax ideal dalam compiler
TASM.
2. Perintah "p386n" atau ".386" berarti kita menggunakan intruksi prosesor
80386.
3. Perintah "model tiny" atau ".tiny" berarti kita ingin menggunakan
format file COM.
4. Perintah "codeseg" atau ".code" adalah awal dari kode program kita.
5. Perintah "org 100h" berarti program kita akan dimulai dari offset 100h.
6. Dalam compiler MASM kita perlu mendeklarasikan entry point untuk
program, disini kita gunakan label "entry:".
Perlu diketahui kalau deklarasi sebuah label : "nama_label:".
7. Program COM selalu diawali dengan "peloncatan" atau "jump" ke awal kode
program. Perintah yang digunakan adalah “jmp" diikuti dengan nama
label, misalnya "start". Bila diperhatikan, diantara perintah "jmp
start" dan label "start" adalah tempat dimana kita bisa deklarasikan
variabel-variabel ataupun data-data yang digunakan dalam program kita.
8. Untuk mengakhiri jalannya program, kita perlu membuat suatu perintah.
Perintah "end" atau "end entry" disini hanya menunjukkan akhir dari
kode program, bukan untuk MENGAKHIRI proses. 2 perintah yang digunakan
adalah :

MOV AX, 4c00h
int 21h

Perintah MOV adalah perintah untuk menyalin isi data atau register ke
suatu register lain. Bentuk umum perintah MOV :

MOV tujuan_salin, asal_salin

Pada perintah diatas kita akan menyalin atau lebih tepatnya "mengisi"
register AX (lebih dikenal dengan register akumulator 16 bit) dengan
bilangan heksa 4c00.
Sedangkan perintah INT 21h berarti kita menjalankan interrupt sistem
dengan fungsi 21h.

ActiveX-DLL with ASP



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
VB-bego.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#
ASP atau Active Server Pages adalah produk server-side scripting yang dikeluarkan oleh Microsoft Corporation.
Terdapat beberapa perbedaan antara ASP dengan server-side scripting lainnya, diantaranya :

- Lisensi, seperti yang diketahui ASP adalah bersifat proprietary.
- Distribusi, ASP hanya dapat dijalankan di sistem operasi windows dengan IIS yang terinstall didalamnya.
Walaupun dapat dijalankan di linux/unix dengan Chilisoft ASP, tidak dapat selancar bila di windows.
- Penggunaan COM object yang kental, salah satu keunggulan ASP adalah kekayaannya dalam integrasi dengan COM
Object dalam kinerjanya.
- Dapat berkolaborasi dengan script lainnya, seperti VBScript, JScript, PerlScript, PyhonScript, dan lainnya.
- Dominan memakai ADO dalam konektivitas databasenya.

Dalam perkembangannya, saat ini ASP sudah mengimplementasikan konsep .NET didalamnya. Berikut adalah sejarah singkat
dari perkembangan ASP :

- ASP version 1.0 (distributed with IIS 3.0) , Desember 1996,
- ASP version 2.0 (distributed with IIS 4.0) , September 1997,
- ASP version 3.0 (distributed with IIS 5.0) , November 2000,
- ASP.NET version 1.0 (part of the Microsoft .NET platform) , Januari 2002
- ASP.NET version 1.1 , April 2003
- ASP.NET version 2.0 , November 7 2005)

Pada artikel ini akan dijelaskan bagaimana membuat dan mengimplementasikan ActiveX DLL di halaman ASP. Mengapa menggunakan
ActiveX DLL? Karena komponen tersebut dapat diubah dan dibuat dengan mudah, tentunya jika diimbangi dengan pengetahuan pemograman
yang baik. Secara umumnya, pengaksesan komponen ActiveX DLL dari script ASP adalah :

set obj = Server.createobject(object/file_name.classname)

Objectname adalah nama object/file yang sudah teregistrasi di windows sebelumnya, dan classname adalah nama class dari object
tersebut. Sedangkan untuk pengaksesan fungsi atau method yang ada di object tersebut adalah :

obj.methodname(param)

Param adalah parameter masukan untuk fungsi.

How to build#
Dalam membuat komponen ActiveX untuk ASP perlu diperhatikan hal-hal sebagai berikut :

- Privilege atau hak akses. Jika komponen ActiveX perlu menjalankan suatu program, menghapus/membuat file dan kegiatan akses sistem
lainnya, perlu konfigurasi privilege yang baik. Karena jika tidak maka akan terjadi penolakan hak akses dari sistem operasi.
- Run-time, pada saat eksekusi komponen ActiveX maka komponen tersebut akan diload oleh IIS Worker Process atau w3wp.exe. Maka bila
terjadi kesalahan atau kondisi dimana komponen tidak respon, diperlukan penanganan seperti merestart service IIS guna membuka
handle ke file ActiveX DLL tsb.
- Registrasi komponen, registrasi komponen dengan menggunakan tools regsvr32.exe diperlukan agar IIS dapat mengetahui komponen yang
akan dijalankannya. Registrasi dapat dilakukan dengan cara mengetikkan : regsvr32.exe [path/nama DLL] pada kotak Run dan untuk unregister
komponen dengan cara : regsvr32.exe /u [path/nama DLL].

Selanjutnya kita akan membuat contoh komponen ActiveX yang sederhana dengan bahasa pemograman Visual Basic 6.0. Untuk memilih pembuatan ActiveX,
dapat dilakukan dengan cara memilih jenis projek pada jendela pilihan projek. Pilihlah projek New ActiveX DLL. Maka akan tersaji 1 buah class kosong
yang siap digunakan. Perlu diketahui bahwa pengaturan properties class Instancing harus diset ke nilai 5 atau MultiUse. Berikut adalah contoh fungsi
yang akan mengembalikan nilai perhitungan aritmatika :

------------------ START COPy FROM HERE ------------------

Public Function hitung(ByRef x As Integer, ByRef y As Integer) As Integer
hitung = (x + y) * 2
End Function

------------------ STOP COPy FROM HERE ------------------

Lalu simpanlah projek dengan nama coba.vbp dan nama class dengan nama hitung1.cls. Lalu buatlah komponen ActiveX dari projek tersebut dengan memilih
menu File -> Make Coba.dll dari toolbar. Registrasi komponen tersebut dengan command dari kotak Run : Regsvr32.exe coba.dll. Buatlah file ASP berikut
ini :


------------------ START COPy FROM HERE ------------------

<%
dim hasil
set obj = Server.createobject("coba.hitung1")
hasil = obj.hitung(1,2)
Response.Write hasil
%>

------------------ STOP COPy FROM HERE ------------------

Lalu jalankanlah dari browser anda, maka akan terlihat bahwa tercetak angka "6" dari hasil perhitungan fungsi hitung. Memang terlihat masih sangat sederhana,
tetapi komponen ActiveX dapat dibuat dan digunakan untuk keperluan yang sangat banyak, Seperti perhitungan matematis yang rumit, prosedur Pengecekan Anti-Virus,
mengirimkan email secara otomatis, dan lain sebagainya.
Disamping kemudahan menggunakan komponen ActiveX dalam ASP, juga terdapat kekurangannya yaitu pemanggilan fungsi/method dari object diperlukan waktu yang lama.
Bahkan untuk membuat object itu sendiri juga diperlukan waktu yang lama. Berikut adalah tabel perbandingan antara waktu eksekusi VBS, JS dan VB :

Time taken by same code in VB/VBS/JS [misc].

VB Code VBS JS VB5
Application("A2"), 0items 35 54 7
Application("A4"), 1000items 42 65 15
request.querystring 124 8
request.querystring("A") 176 161 47
request.querystring.Item("A") 210 205 47
request.servervariables("HTTP_REFERER")177 175 55
request.ServerVariables("REMOTE_ADDR") 205 175 74
request.servervariables("X") 224 226 95
request.servervariables("HTTP_COOKIE") 318 109
request.cookies("AAA") 165 160 47
request.totalbytes 61 61 3
A = X & "AAAA" 4.6 1.7
A = "" & Now() 40.7 29.3
D = Now 10.8 9.8
A = FormatNumber(5.5,2) 17.6
A = Format(5.5, "0.00") 52.4
A = Left(X,2) 5.8 1.7
D = InStr(X, "bb") 4.4 1.4
Call sub 7.4 1.4
CreateObject("ADODB.Connection") 1110 471
CreateObject("ADODB.Recordset") 751 83
CreateObject("Scripting.Dictionary") 590 257
CreateObject("Scripting.FSO") 350 27

Penggunaan memory juga mempengaruhi kinerja dari ASP. ASP mempunyai karakteristik menyimpan file include di dalam memory setiap dipanggil. Jadi bila
Terdapat banyak file include, maka akan membebani sistem itu sendiri. Contohnya bila terdapat 100 kB file include dan tiap byte dari file tersbut memakan
3 byte di memory dan file tersbut di include ke dalam 100 file ASP, maka 100 * 3 * 100 = 30 MB jumlah memory yang digunakan.
Sedangkan pada penggunaan komponen ActiveX pada ASP akan sedikit menguntungkan, karena komponen akan terus di memory begitu ia diload atau di eksekusi
hingga di bebaskan kembali oleh IIS.

Penutup#
Penggunaan komponen ActiveX di halaman ASP sangat mudah dibuat dan diimpelemntasikan. Komponen ActiveX dapat mmebaut konten web lebih dinamis dan membantu
perhitungan matematis bila diperlukan. Penggunaan komponen ActiveX juga terdapat kelemahannya, seperti pembuatan dan pemanggilan object yang cukup memakan waktu.

Referensi#
http://en.wikipedia.org/wiki/Active_Server_Pages
http://www.motobit.com/tips/detpg_DLLinclude/
http://www.planet-source-code.com/
http://support.microsoft.com/kb/249873
http://www.google.co.id/

How To Make Your Own Anti Virus - Part 2



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
VB-bego.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#
Pada artikel terdahulu penulis sudah membahas tentang bagaimana engine scanner statis bekerja secara umum. Seperti yang
diketahui, scanner statis akan mendeteksi sebuah malware atau thread berdasarkan hasil checksum dari file tersebut. Tetapi
teknik ini tidak akan efesien apabila diterapkan pada malware yang sudah mengimplementasikan teknik polymorph. teknik Polymorph
secara umum adalah teknik mereplikasi diri dan tiap signature replikanya berbeda satu sama lain.
Dalam beberapa kasus virus lokal sudah ditemukan penggunaan teknik polymorph. Baik itu secara sederhana maupun kompleks. Cara
yang biasa digunakan yaitu :

- Merubah atau mengenkripsi nama variabel dan string
- Menambah atau mengurangi byte-byte tertentu dalam diri virus
- Menggunakan engine polymorph tertentu

Untuk kasus yang menggunakan teknik enkripsi, tidak semua jenis enkripsi dapat didekripsi oleh engine Antivirus. Perlu analisa
dengan menggunakan reverse-engineering yang mendalam guna memahami teknik enkripsi yang dipakai.
Pada penulisan berikut akan dijelaskan bagaimana membuat scanner statis yg bisa mengenali thread secara lebih baik dari yang terdahulu
Ada baiknya kita mengenal terlebih dahulu format file PE (Portable Executable) pada Windows.
Format File PE mulai dikenalkan pada Windows NT 3.1, dimana format file ini masih menyimpan header MZ dari MS-DOS. Berikut skema dasar
format file PE :

|----------------------------|
| CodeView Debug Information |
|----------------------------|
| COFF Symbols |
|----------------------------|
| COFF Line Numbers |
|----------------------------|
| Section - n |
| . |
| . |
| Section - 2 |
|----------------------------|
| Section - 1 |
|----------------------------|
| Section - 0 |
|----------------------------|
| Array Section table |
| . |
| . |
| Array Section table |
|----------------------------|
| Data Directory |
|----------------------------|
| |
|----------------------------|
| Image File Header |
|----------------------------|
| "PE\0\0" |
|----------------------------|
| "MZ" |
|----------------------------|

$PE Header
PE Header merupakan salah satu struktur dari IMAGE_NT_HEADER (dideklarasikan dalam WINNT.H). Header ini mengandung berbagai macam jenis
informasi seperti lokasi dan ukuran dari area kode dan data, system operasi yang dipakai, ukuran stack, dan lain-lain.
Header ini juga mengandung MS-DOS stub, yaitu program kecil yang akan menampilkan teks "This program cannot be run in MS-DOS mode." bila
file PE dijalankan di lingkungan yang tidak mendukung Win32. PE Header Terdiri dari struktur :

DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_OPTIONAL_HEADER OptionalHeader;

Dimana Signature adalah teks "PE\0\0". Sedangkan IMAGE_FILE_HEADER berisi struktur :

WORD Machine //Berisi nilai untuk jenis CPU yang dipakai, ex : 0x14d untuk Intel i860
WORD NumberOfSections //Berisi jumlah section yang ada di file PE
DWORD TimeDateStamp //Berisi tanggal kapan linker (atau compiler untuk File OBJ) memproduksi file PE
DWORD PointerToSymbolTable //Offset untuk tabel symbol COFF
DWORD NumberOfSymbols //Berisi jumlah symbol COFF di tabel
WORD SizeOfOptionalHeader //Berisi ukuran dari optional header
WORD Characteristics //Berisi informasi tentang file PE

Untuk IMAGE_OPTIONAL_HEADER berisi :

WORD Magic //Selalu bernilai 0x010B
BYTE MajorLinkerVersion //Versi linker yang dipakai
BYTE MinorLinkerVersion //Versi linker yang dipakai
DWORD SizeOfCode //Ukuran dari section code
DWORD SizeOfInitializedData //Ukuran dari semua data section yang terinisialisasi
DWORD SizeOfUninitializedData //Ukuran dari semua data section yang tidak terinisialisasi
DWORD AddressOfEntryPoint //Alamat dimana loader akan memulai eksekusi file PE, alamat ini adalah RVA (Relative Virtual Address)
DWORD BaseOfCode //Alamat RVA dimana section code dimulai
DWORD BaseOfData //Alamat RVA dimana section data dimulai
DWORD ImageBase //Alamat dimana file PE akan dimapping di memory
DWORD SectionAlignment //Nilai penggandaan untuk mapping tiap section di memory
DWORD FileAlignment //Nilai penggandaan untuk mapping tiap section di disk
WORD MajorOperatingSystemVersion //Versi OS yang dipakai
WORD MinorOperatingSystemVersion //Versi OS yang dipakai
WORD MajorSubsystemVersion //Versi minimum OS yang dipakai
WORD MinorSubsystemVersion //Versi minimum OS yang dipakai
DWORD Reserved1 //Selalu bernilai 0
DWORD SizeOfImage //Ukuran dari image yang akan diload oleh loader
DWORD SizeOfHeaders //Ukuran dari PE Header dan tabel section
DWORD CheckSum //Nilai checksum CRC dari file PE
WORD Subsystem //Tipe subsistem yang diperlukan untuk keperluan GUI
WORD DllCharacteristics //Tanda atau flag untuk inisialisasi DLL (Dynamic Link Library)
DWORD SizeOfStackReserve //Ukuran dari virtual memory yang akan digunakan untuk inisialisasi stack
DWORD SizeOfStackCommit //Ukuran dari memory yang akan digunakan untuk inisialisasi stack
DWORD SizeOfHeapReserve //Ukuran dari virtual memory yang akan digunakan untuk inisialisasi heap proses
DWORD SizeOfHeapCommit //Ukuran dari memory yang akan digunakan untuk inisialisasi heap proses
DWORD LoaderFlags //Digunakan untuk keperluan debugging
DWORD NumberOfRvaAndSizes //Jumlah dari array DataDirectory

$Tabel Section
Secara umum Tabel Section dapat dianalogikan sebagai "daftar" untuk tiap section yang ada di file PE. Tabel ini mencakup informasi
tentang section-section file PE. berikut contoh layout dari tabel section file PE yang sudah di dump :

01 .text VirtSize: 00005AFA VirtAddr: 00001000
raw data offs: 00000400 raw data size: 00005C00
relocation offs: 00000000 relocations: 00000000
line # offs: 00009220 line #'s: 0000020C
characteristics: 60000020
CODE MEM_EXECUTE MEM_READ

02 .bss VirtSize: 00001438 VirtAddr: 00007000
raw data offs: 00000000 raw data size: 00001600
relocation offs: 00000000 relocations: 00000000
line # offs: 00000000 line #'s: 00000000
characteristics: C0000080
UNINITIALIZED_DATA MEM_READ MEM_WRITE

03 .rdata VirtSize: 0000015C VirtAddr: 00009000
raw data offs: 00006000 raw data size: 00000200
relocation offs: 00000000 relocations: 00000000
line # offs: 00000000 line #'s: 00000000
characteristics: 40000040
INITIALIZED_DATA MEM_READ

04 .data VirtSize: 0000239C VirtAddr: 0000A000
raw data offs: 00006200 raw data size: 00002400
relocation offs: 00000000 relocations: 00000000
line # offs: 00000000 line #'s: 00000000
characteristics: C0000040
INITIALIZED_DATA MEM_READ MEM_WRITE

05 .idata VirtSize: 0000033E VirtAddr: 0000D000
raw data offs: 00008600 raw data size: 00000400
relocation offs: 00000000 relocations: 00000000
line # offs: 00000000 line #'s: 00000000
characteristics: C0000040
INITIALIZED_DATA MEM_READ MEM_WRITE

06 .reloc VirtSize: 000006CE VirtAddr: 0000E000
raw data offs: 00008A00 raw data size: 00000800
relocation offs: 00000000 relocations: 00000000
line # offs: 00000000 line #'s: 00000000
characteristics: 42000040
INITIALIZED_DATA MEM_DISCARDABLE MEM_READ

Layout diatas adalah format dari IMAGE_SECTION_HEADER, Berikut keterangan tentang IMAGE_SECTION_HEADER :

BYTE Name[IMAGE_SIZEOF_SHORT_NAME] //Nama section, biasanya diawali dengan tanda titik/dot
union { //Nilai sesungguhnya dari ukuran kode atau data
DWORD PhysicalAddress
DWORD VirtualSize
} Misc;
DWORD VirtualAddress //Alamat RVA untuk keperluan mapping oleh loader
DWORD SizeOfRawData //Ukuran dari section setelah dibulatkan ke ukuran file alignment
DWORD PointerToRawData //Offset dari section
DWORD PointerToRelocations //Offset untuk informasi relokasi section
DWORD PointerToLinenumbers //Offset untuk nomor baris (line number)
WORD NumberOfRelocations //Jumlah dari relokasi yang ada di tabel relokasi
WORD NumberOfLinenumbers //Jumlah dari nomor baris yang ada di tabel nomor baris
DWORD Characteristics //Berisi angka tertentu yang menunjukkan atribut dari suatu section (data, kode, dll)

How to build#
Untuk membangun suatu scanner statis yang dapat memetakan (mapping) dan mengambil sebagian sectionnya utnuk dianalisa
, perlu diketahui terlebih dahulu hal-hal berikut :

- What's section? Berhubung section yang dimiliki oleh suatu file PE beragam jumlah dan isinya, kita perlu mengetahui section
keberapa dan apa isinya sebelum di analisa atau di dump. Pengidentifikasian tiap section dapat dilakukan dengan cara menganalisis
karakteristik file PE tersebut.
- Is it packed/compressed or not? Kadang para pembuat aplikasi perlu memproteksi atau mengecilkan ukuran file PE mereka
dengan cara menggunakan packer/compressor. Hal ini sangat berpengaruh dalam pengidentifikasian section, karena seringkali packer
/compressor membuat section dummy dalam file PE yang dihasilkan.

Bahasa pemograman yang digunakan adalah Visual Basic 6.0. sedangkan Projek yang akan dibuat adalah ActiveX DLL (Dynamic Link Library),
sehingga dapat digunakan oleh aplikasi lain. Referensi tentang File DLL dapat dilihat dibagian akhir artikel ini.
Section yang akan diambil adalah data atau code section, dengan mengasumsikan section tersebut berada di urutan kedua maka Section tersebut
seharusnya memiliki nama ".data". Berikut adalah flowchart sederhana dari DLL yang akan dibuat :

|Start|
|
|
|Input File|
|
|

|y
|
|Mapping tabel section|
|
|

|y
|
|Dapatkan size dan offsetnya|
|
|
|ambil checksum dari byte section tsb|
|
|
|End|

Untuk fungsi pengambilan checksum dapat menggunakan teknik CRC ataupun MD5. Khusus utnuk teknik CRC dapat ditemui pada artikel sebelumnya.
Sedangkan untuk teknik MD5 dapat menggunakan file aamd532.dll yang ada di file projek artikel ini.
Berikut ini adalah contoh sederhana Activex DLLnya :

------------------ START COPy FROM HERE ------------------
'Jenis Projek : Activex DLL
'Nama file Class : Class1.cls

Private Type IMAGEDOSHEADER
e_magic As String * 2
e_cblp As Integer
e_cp As Integer
e_crlc As Integer
e_cparhdr As Integer
e_minalloc As Integer
e_maxalloc As Integer
e_ss As Integer
e_sp As Integer
e_csum As Integer
e_ip As Integer
e_cs As Integer
e_lfarlc As Integer
e_ovno As Integer
e_res(1 To 4) As Integer
e_oemid As Integer
e_oeminfo As Integer
e_res2(1 To 10) As Integer
e_lfanew As Long
End Type

Private Type IMAGE_SECTION_HEADER
nameSec As String * 6
PhisicalAddress As Integer
VirtualSize As Long
VirtualAddress As Long
SizeOfRawData As Long
PointerToRawData As Long
PointerToRelocations As Long
PointerToLinenumbers As Long
NumberOfRelocations As Integer
NumberOfLinenumbers As Integer
Characteristics As Long

End Type

Private Type IMAGE_FILE_HEADER
Machine As Integer
NumberOfSections As Integer
TimeDateStamp As Long
PointerToSymbolTable As Long
NumberOfSymbols As Long
SizeOfOptionalHeader As Integer
Characteristics As Integer
End Type

Private Type IMAGE_DATA_DIRECTORY
VirtualAddress As Long
size As Long
End Type


Private Type IMAGE_OPTIONAL_HEADER
Magic As Integer
MajorLinkerVersion As Byte
MinorLinkerVersion As Byte
SizeOfCode As Long
SizeOfInitializedData As Long
SizeOfUninitializedData As Long
AddressOfEntryPoint As Long
BaseOfCode As Long
BaseOfData As Long
ImageBase As Long
SectionAlignment As Long
FileAlignment As Long
MajorOperatingSystemVersion As Integer
MinorOperatingSystemVersion As Integer
MajorImageVersion As Integer
MinorImageVersion As Integer
MajorSubsystemVersion As Integer
MinorSubsystemVersion As Integer
Win32VersionValue As Long
SizeOfImage As Long
SizeOfHeaders As Long
CheckSum As Long
Subsystem As Integer
DllCharacteristics As Integer
SizeOfStackReserve As Long
SizeOfStackCommit As Long
SizeOfHeapReserve As Long
SizeOfHeapCommit As Long
LoaderFlags As Long
NumberOfRvaAndSizes As Long
DataDirectory(0 To 15) As IMAGE_DATA_DIRECTORY
End Type

Private Type IMAGE_NT_HEADERS
Signature As String * 4
FileHeader As IMAGE_FILE_HEADER
OptionalHeader As IMAGE_OPTIONAL_HEADER
End Type

Private DOSHEADER As IMAGEDOSHEADER
Private NTHEADER As IMAGE_NT_HEADERS
Private SECTIONSHEADER() As IMAGE_SECTION_HEADER
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)

Public Function ReadPE(ByRef DATA() As Byte) As String
On Error GoTo ErrX
Dim CNT As Long
Dim u As Long
Dim dumpSec() As Byte

CopyMemory DOSHEADER, DATA(CNT), Len(DOSHEADER) 'Memulai mapping
If DOSHEADER.e_magic <> "MZ" Then Exit Function 'Periksa apakah DOS Header adalah valid
CopyMemory NTHEADER, DATA(DOSHEADER.e_lfanew), Len(NTHEADER)
CNT = CNT + DOSHEADER.e_lfanew + Len(NTHEADER) 'Offset section pertama
If NTHEADER.Signature <> "PE" & Chr(0) & Chr(0) Then Exit Function 'Periksa apakah file PE adalah valid
ReDim SECTIONSHEADER(NTHEADER.FileHeader.NumberOfSections - 1) 'Array tabel section
For u = 0 To UBound(SECTIONSHEADER) 'Enumerasi tiap section
CopyMemory SECTIONSHEADER(u), DATA(CNT), Len(SECTIONSHEADER(0))
CNT = CNT + Len(SECTIONSHEADER(0)) 'Offset section berikutnya
If SECTIONSHEADER(u).nameSec = ".data" Or u = 1 Then 'Periksa apakah section ke 2 atau bernama .data
POINTERTORAW = SECTIONSHEADER(u).PointerToRawData 'Dapatkan offset section
SIZEOFRAW = SECTIONSHEADER(u).SizeOfRawData 'Dapatkan ukurannya
ReDim dumpSec(SIZEOFRAW - 1)
For i = 0 To SIZEOFRAW - 1
dumpSec(i) = DATA(i) 'Salin array yang mengandung section code
Next
ReadPE = Hex(CRC32(dumpSec(), SIZEOFRAW - 1)) 'Teknik CRC32
GoTo udah
End If
Next u
udah:
Exit Function
ErrX:
On Error GoTo 0
End Function

------------------ STOP COPy FROM HERE ------------------

Dimana DATA() adalah array byte dari file PE yang dibuka. Engine scanner ini perlu ditingkatkan sensitifitas
nya, karena bila terdapat section dummy pada urutan section kedua atau tidak ada section yang bernama .data
maka hasil yang diperoleh akan salah.

Penutup#
Engine scanner statis pada AntiVirus dapat ditingkatkan kinerjanya dengan menambahkan algoritma, fungsi ataupun
prosedur tertentu dalam menganalisa setiap file suspect. Salah satu yang bisa ditambahkan adalah fungsi pengecekan
per section pada file PE. Fungsi ini juga masih rawan dari kesalahan analisa. Diharapkan dengan adanya artikel ini
dapat mengembangkan ataupun memajukan kualitas aplikasi Anti Virus lokal.

Referensi#
Pietrek,Matt; Peering Inside the PE: A Tour of the Win32 Portable Executable File Format; MSDN; 1994
www.allapi.net
www.google.co.id
www.planet-source-code.com

Links#
Projek lengkap dapat didownload di : Projek AV 2, Mirror