SERANGAN PADA DOMAIN NAME SYSTEM BERLANDASKAN BIRTHDAY ATTACK Dion Jogi Parlinggoman (13509045) Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia
[email protected]
Abstract—Pada makalah ini, hal yang akan dibahas adalah salah satu serangan-serangan pada dunia kriptografi, yakni birthday attack. Birthday attack adalah serangan yang menggunakan yang menggunakan birthday problem dengan teori probabilitas. Dengan birthday problem, metode untuk mencari kesamaan nilai keluaran dapat menjadi lebih efisien. Birthday attack bisa digunakan untuk melakukan penyerangan pada Domain Name S erver. Karena cacat/kelemahan pada kinerja perangkat lunak BIND menghasilkan beberapa query untuk nama domain yang sama pada saat yang sama, seseorang yang berusaha mencari informasi menemukan peluang secara statistik mengalami peningkatan dalam menemukan ID transaksi yang tepat. Ini adalah ide klasik dari birthday attack, yang berasal dari birthday problem.
B. Rumusan Masalah Masalah pokok yang akan dibahas dalam makalah ini adalah pengertian Birthday Attack dan DNS, serangan pada DNS, dan solusi terhadap Birthday Attack . C. Batasan Masalah Pada makalah ini akan dibahas hal-hal mengenai teori Brithday Attack secara umum. Mengingat Birthday Attack adalah penyerangan dengan probabilitas , maka penggunaan notasi matematika dan perhitungan probabilitas secara umum juga akan dibahas dalam makalah ini. Kode program akan dipaparkan pada makalah ini.
II. DASAR TEORI Index Terms—Birthday Problem, Birthday Attack, DNS .
I. P ENDAHULUAN Pada bab ini akan dibahas mengenai latar belakang, rumusan masalah dan batasan masalah dalam pembuatan makalah ini. A. Latar Belakang Teknologi Digital terus berkembang. Saat ini, manusia terus menggunakan berbagai teknologi untuk melakukan berbagai aktivitas. Kriptografi dibutuhkan oleh manusia untuk menjamin keamanan penyampaian pesan pribadi tanpa diketahui oleh pihak ketiga. Seiring berkembangnya teknik kriptografi, serangan-serangan digunakan untuk memecahkan pengamanan yang dihasilkan oleh teknik kriptografi untuk kepentingan pihak lain. Di samping untuk tujuan yang tidak baik, serangan juga digunakan oleh pihak berwajib untuk memecahkan cipher teks yang digunakan oleh penjahat dalam berkomunikasi. Dari sini berkembanglah teknik yang disebut kriptoanalisis. Dalam perkembangannya, serangan kriptografi mengandalkan ilmu matematika, yakni probabilitas dan teori burung merpati. Serangan ini menggunakan probabilitas sebagai dasarnya. Dengan teori burung merpati, serangan ini mengambil kasus ulang tahun dan menggunakan probabilitas. Serangan ini disebut Birthday Attack . Birthday Attack dapat digunakan untuk penyerangan DNS. Penyerangan ini juga dapat dilakukan karena ada kelemahan pada kinerja perangkat BIND (Berkeley Internet Name Domain).
Makalah IF3058 Kriptografi – Sem. II Tahun 2011/2012
Pada bab ini akan dibahas mengenai pengertian Birthday Attack dan DNS.
A. Birthday Problem Dalam teori probabilitas, Birthday Problem atau Birthday Paradox menyangkut kemungkinan bahwa, dalam satu himpunan n orang dipilih secara acak, Lalu, beberapa orang dari mereka akan memiliki ulang tahun yang sama. Dengan mengesampingkan prinsip burung merpati, kemungkinan mencapai 100% bila jumlah orang yang mencapai 366 (karena ada 365 ulang tahun mungkin, tidak termasuk 29 Februari). Namun, probabilitas 99% dapat tercapai dengan hanya 57 orang, dan probabilitas 50% dengan 23 orang. Kesimpulan ini didasarkan pada asumsi bahwa setiap hari sepanjang tahun (kecuali tanggal 29 Februari) adalah sama kemungkinan untuk ulang tahun. Matematika di balik masalah ini menyebabkan serangan kriptografi terkenal disebut Birthday Attack , yang menggunakan model probabilistik untuk mengurangi kompleksitas pada fungsi hash. Secara spesifik misalnya, di antara 23 orang, akan terdapat C(32,2) = 23 x 22 / 2 = 253 pasang, dimana setiap pasang merupakan kandidat untuk ditemukannya pasangan yang cocok tanggal ulang tahunnya. Untuk memahami permasalahan ini adalah dengan berpikir bahwa peluang tidak ada dua orang yang memiliki ulang tahun yang sama adalah peluang bahwa orang ke-1 akan memiliki ulang tahun yang berbeda dengan orang ke-2 dan akan berbeda dengan orang ke-3 dan seterusnya. Semakin banyak orang yang dilibatkan,
peluang tidak adanya dua orang dengan tanggal ulang tahun yang sama akan semakin kecil. Untuk menghitung kemungkinan terdekat bahwa didalam sebuah ruang dengan jumlah peserta n orang akan ada dua orang yang berbagi tanggal ulang tahun , terlebih dahulu abaikan variasi tahun kabisat, terdapat kembar, dan asumsi bahwa 365 hari akan memiliki kemungkinan yang sama. Di dalam kehidupan nyata, tanggal-tanggal dalam 365 hari tidak akan memiliki kemungkinan yang sama. Pertama akan kita hitung peluang p(n) yaitu semua n orang di dalam ruang tidak akan memiliki tanggal ulang tahun yang sama. Peluang dapat dihitung sebagai berikut : ( ) ( ) ( ) ̅( ) (
) (
(
)
)
Orang ke-2 harus memiliki tanggal ulang tahun yang berbeda dengan orang ke-1 dengan peluang kejadian 364/365 , orang ke-3 harus memiliki tanggal ulang tahun yang berbeda dengan dua orang pertama dengan peluang kejadian 363/365, dan seterusnya. Peluang setidaknya dua orang dari kumpulan tersebu t berbagi tanggal ulang tahun yang sama adalah komplemen dari peluang tanggal ulang tahun semua orang akan berbeda, yaitu : ( ) ̅( ) Dari perhitungan di atas ternyata nilai p(n) akan melebihi 50% ketika n=23. Untuk nilai jelasnya akan ditampilkan di tabel berikut : n 10 20 23 30 50 57 100 200 366
p(n) 11.69 % 41.14 % 50.73 % 70.63% 97.04 % 99.01% 99.99996927510721 % 99.999999999999999999999999999839 % 100%
Jika digambarkan dengan grafik dengan skala vertikal adalah logaritma (setiap langkah ke bawah adalah 1020 kali lebih kecil kemungkinannya), maka
Makalah IF3058 Kriptografi – Sem. II Tahun 2011/2012
Gambar 2.1 Probabilitas perkiraan bahwa tidak ada dua orang berbagi ulang tahun dalam kelompok n orang.
B. Domain Name System Sistem Penamaan Domain (Domain Name System) adalah sebuah sistem yang menyimpan informasi tentang nama host maupun nama domain dalam bentuk basis data tersebar di dalam jaringan komputer, misalkan: internet. DNS menyediakan alamat IP untuk setiap nama host dan mendata setiap server transmisi surat yang menerima surel untuk setiap domain. DNS menyediakan servis yang cukup penting untuk internet, apabila perangkat keras komputer dan jaringan bekerja dengan alamat IP untuk mengerjakan tugas seperti pengalamatan dan penjaluran (routing), manusia pada umumnya lebih memilih untuk menggunakan nama host dan nama domain, contohnya adalah penunjukan sumber universal (URL) dan alamat surel. Analogi yang umum digunakan untuk menjelaskan fungsinya adalah DNS bisa dianggap seperti buku telepon internet. Misalnya adalah saat pengguna mengetikkan www.indosat.net.id di peramban web maka pengguna akan diarahkan ke alamat IP 124.81.92.144 (IPv4) dan 2001:e00:d:10:3:140::83 (IPv6). Struktur DNS Struktur database DNS berbentuk hierarki atau pohon. Tingkat teratas pada DNS adalah root yang disimbolkan dengan titik/dot (.) . Setiap titik cabang mempunyai label yang mengidentifikasikannya relatif terhadap root (.). Tiap titik cabang merupakan root bagi sub-tree/tingkat bawahnya. Tiap sub-tree merupakan domain dan dibawah domain terdapat sub-tree lagi bernama subdomain. Setiap domain mempunyai nama yang unik dan menunjukkan posisinya pada pohon DNS, pengurutan/penyebutan nama domain secara penuh dimulai dari domain paling bawah menuju ke root (.). Masing-masing nama yang membentuk suatu domain dipisahkan dengan titik/dot (.) dan diakhiri dengan titik yang merupakan nama absolut relatif terhadap root (.). Contoh: dionsirait.cs.mit.edu. "." merupakan root domain edu merupakan Top Level Domain mit merupakan Second Level Domain cs merupakan Third Level Domain dionsirait merupakan nama komputer/mesin yang bersangkutan
Sistem penulisan nama secara absolut dan lengkap ini disebut FQDN (Fully Qualified Domain Name). Komponen DNS DNS sebenarnya merupakan suatu sistem server-client, jadi ada suatu mekanisme dari client untuk meminta informasi dari server yang akan memberikan informasi yang diminta sang client. Seperti yang disebutkan di atas , program pada server tersebut sering disebut dengan name-server. Pada client sering disebut dengan resolver. DNS mempunyai beberapa komponen yaitu: 1. Resolver Resolver bertugas untuk membuat sebuah permintaan (query) dan mengirimkannya lewat jaringan ke sebuah name-server. Program tersebut berjalan pada host yang menginginkan informasi mengenai suatu host di internet. Resolver juga menginterpretasikan respon dari name-server apakah informasi yang diminta terdapat pada record atau tidak. 2. Resolution Resolution yaitu proses pencarian name-server yang mempunyai tanggung jawab terhadap suatu domain yang akan diminta. Setelah name-server yang dicari ditemukan maka server akan memberikan informasi name-server yang bersangkutan kepada pemintanya. 3. Caching Caching akan menyimpan hasil pencarian domain dalam basis data dari name-server yang pernah diminta. Time To Live (TTL) merupakan batas waktu sebagai acuan bagi server DNS dalam menyimpan infomasi yang pernah dicari.
Gambar 2.2 DNS secara Umum BIND (Berkeley Internet Name Domain) BIND merupakan salah satu implementasi dari DNS yang paling banyak digunakan pada server di Internet. BIND dibuat untuk sistem operasi BSD UNIX 4.3 oleh Kevin Dunlap, tapi kemudian banyak di-porting ke banyak turunan UNIX termasuk Linux. Program utama dari BIND adalah bernama named yaitu sebuah daemon yang bila dijalankan akan menunggu koneksi pada port 53 (default). Koneksi pada port 53 ini adalah koneksi permintaan informasi pemetaan dari nama domain/mesin ke alamat IP dan sebaliknya. Jika sebuah server DNS mempunyai otorisasi terhadap suatu domain maka server DNS tersebut akan memberikan informasi mengenai nama-nama mesin/domain yang berada di bawah domain yang dipegangnya.
Makalah IF3058 Kriptografi – Sem. II Tahun 2011/2012
Misalnya, server DNS penulis mempunyai otorisasi terhadap domain indonesiaITB.com, maka ketika ada sebuah komputer dari internet ingin mengakses informatika.indonesiaITB.com., maka sang komputer itu akan menghubungi server DNS penulis untuk mengetahui informasi alamat IP dari informatika.indonesiaITB.com. Sang server DNS akan menjawab permintaan/query dari komputer peminta tersebut dengan alamat IP yang sesuai kemudian komputer tersebut dapat mengakses pikachu.indolinux.com melalui alamat IP yang diberikan oleh name-server tersebut.
Gambar 2.3 DNS dengan BIND
III. BIRTHDAY ATTACK AND DNS A. Sejarah Pada tahun 1993, Christoph Schuba merilis sebuah makalah berjudul "Mengatasi Kelemahan dalam Protokol Domain Name System". Di dalamnya, ia menguraikan beberapa kelemahan, termasuk teknik ‘meracun’ cache DNS. Dalam proses kemunculan awal, hal tersebut memungkinkan untuk memberikan informasi tambahan dalam paket DNS reply yang akan disimpan sementara (cache) oleh daemon. Hal ini memungkinkan penyerang untuk menyuntikkan informasi palsu ke dalam cache DNS untuk jaringan, yang memungkinkan mereka untuk melakukan serangan man-in-the-middle atau kekacauan lain.[2] Pada tahun 1997, CERT dirilis penasehat CA-1997-22, menggambarkan kerentanan dalam BIND, Berkeley Internet Name Domain, perangkat lunak yang digunakan oleh hampir semua nameserver di internet. Akhirnya sebuah prinsip yang sangat mendasar disadari yaitu BIND tidak mengacak ID transaksinya. ID transaksinya murni berurutan. Selain pengecekan protokol pada lapisan 3 dan 4 (alamat IP sumber dan tujuan dan port harus sesuai), ID transaksi adalah satu-satunya bentuk otentikasi untuk DNS reply. Karena penyerang dapat dengan mudah memprediksi ID transaksi berikutnya setelah membuat permintaan mereka sendiri, serangan ‘peracunan’ cache bisa dilakukan menggunakan query palsu diikuti dengan jawaban palsu. Untuk mengatasi ini, semua versi baru BIND yang diperbaharui untuk menggunakan ID transaksi secara acak. Pada tahun 2002, Vagner Sacramento merilis sebuah anjuran yang menampilkan masalah lain dengan implementasi BIND dari protokol DNS. Ia menemukan
BIND akan mengirim beberapa query rekursif secara simultan untuk alamat IP yang sama. Karena ini fenomena matematika dan probabilitas datang ke dalam permainan yang dikenal sebagai Birthday Paradox. Hal ini menyebabkan kemungkinan serangan untuk sukses menjadi naik hingga mencapai 100% dengan hanya mencoba beberapa ratus paket bukan puluhan ribu sebelumnya diyakini diperlukan. Sementara meneliti beberapa temuan Sacramento, tim CERT juga menyadari mungkin ada serangan lain mungkin, didasarkan pada karya Michal Zalewski di bidang urutan TCP dan tahap analisis ruang dari pembangkit nilai secara pseudo-random yang digunakan oleh sistem operasi yang berbeda untuk menghasilkan n tersebut. Zalewski menemukan bahwa menggunakan beberapa jenis analisis tersebut adalah hal yang mudah untuk menebak urutan nilai berikutnya dalam implementasi tertentu. Tim CERT merasa bahwa ini mungkin juga berlaku untuk pembangkit nilai acak pada BIND.
Kekuatan metode spoofing ini terhadap spoofing DNS konvensional ditunjukkan pada gambar 3.1. Birthday Attack mendekati keberhasilan 100% sekitar 700 paket. Pada titik ini serangan spoofing konvensional hanya akan memiliki probabilitas keberhasilan 700 dibagi dengan 65.535 (1,07%) Para kecuraman kurva, orang hanya perlu 300 paket untuk mencapai rasio keberhasilan 50%. Ini baik dalam bidang serangan yang mudah untuk siapapun yang memiliki koneksi internet broadband. Hal ini menunjukkan bahwa sempurna apapun pembangkit nilai acak adalah hal yang rentan terhadap serangan ketika menghasilkan beberapa nomor untuk transaksi yang sama. Ini adalah sesuatu yang harus diperhitungkan oleh setiap desainer perangkat lunak yang bekerja dengan angka acak. Hal ini telah lama digunakan dalam serangan brute force pada satu arah sistem hash.
B. Birthday Attack Untuk melakukan serangan ini, orang perlu untuk mengirimkan query dalam jumlah yang memadai ke nameserver yang rentan dengan mengirimkan jumlah yang sama atas jawaban palsu pada saat yang sama. Karena cacat dalam perangkat lunak BIND menghasilkan beberapa query untuk nama domain yang sama pada saat yang sama, seseorang menemukan peluang statistik peningkatan dalam menemukan ID transaksi yang tepat. Ini adalah klasik "Birthday Attack ", yang berasal dari "Brithday Paradox", secara singkat dijelaskan di bawah ini: Birthday Attack adalah nama yang digunakan untuk merujuk kepada kelas serangan brute force. Ia mendapat namanya dari “Birthday Paradox”. Jika beberapa fungsi, bila diaktifkan dengan masukan acak, akan dikembalikan salah satu k dengan kemungkinan nilai yang sama. Dengan berulang kali mengevaluasi fungsi untuk input yang berbeda, diharapkan untuk mendapatkan output yang sama setelah sekitar 1.2k1 / 2. Untuk paradoks ulang tahun di atas, ganti k dengan 365. [3]
Kita dapat menerapkan metodologi yang sama untuk urutan nilai yang pseudo-random, seperti salah satu yang menghasilkan ID transaksi pada BIND. Dengan spoofing konvensional, penyusup akan mengirim n balasan palsu untuk satu query. Probabilitas keberhasilan adalah n / 65535. Dengan Birthday Attack pada BIND, penyusup akan mengirim n jumlah balasan palsu untuk n query. Atas tindakan tersebut, penyusup dapat memprediksi probabilitas keberhasilan menggunakan rumus di bawah ini dimana t adalah jumlah total nilai yang mungkin di master set, dan n adalah jumlah nilai dalam spoofing subset. (
(
)
)
Makalah IF3058 Kriptografi – Sem. II Tahun 2011/2012
Gambar 3.1 Perbandingan Spoofing Konvensional dan Spoofing dengan Birthday Attack Birthday Attack pada BIND akan mengikuti urutan ditunjukkan pada gambar 3.2. Penyerang hanya harus mengirim beberapa ratus query ke ISP nameserver untuk meminta alamat IP dari nama domain yang akan dibajak. Pada saat yang sama, penyerang akan mengirimkan jumlah balasan yang sama diformulasikan untuk terlihat seolah-olah balasan tersebut dikirim dari nameserver yang bertanggung jawab. Dalam setiap paket, penyusup akan menetapkan ID transaksi acak. Agar berhasil, salah satu paket palsu berisi ID transaksi, alamat IP asal dan tujuan, dan port harus sesuai dengan paket query rekursif yang sah dari nameserver korban. Menemukan alamat IP yang benar adalah hal yang mudah, terkait mengetahui target, dan mengetahui alamat dari nameserver yang sah untuk domain yang akan dibajak. Hal yang sulit adalah menemukan port. Memang penyerang mengetahui bahwa port tujuan dari query rekursif adalah UDP port 53, tetapi sumber port adalah target yang terus berubah. Keuntungan bagi penyusup, BIND akan lebih sering menggunakan kembali port sumber yang sama untuk permintaan atas nama klien yang sama. Jadi, jika penyusup bekerja dari sebuah nameserver yang mempunyai hak akses, ia pertama kali dapat memnita untuk lookup DNS dari nama host di server-nya. Ketika paket query rekursif tiba, penyusup dapat melihat port sumber. Kemungkinan adalah hal ini akan menjadi port sumber yang sama digunakan ketika korban mengirim query untuk domain yang akan dibajak.
Lihat keluaran tcpdump dari empat pertanyaan berikutnya untuk nama domain yang berbeda: 10:54:12.423228 192.168.1.2.33748 > 66.218.71.63.53: 21345 [1au] A? www.yahoo.com. (42) (DF) 10:54:21.313293 192.168.1.2.33748 > 216.239.38.10.53: 53735 [1au] A? www.google.com. (43) (DF) 10:54:27.182852 192.168.1.2.33748 > 149.174.213.7.53: 19315 [1au] A? www.netscape.com. (45) (DF) 10:54:43.252461 192.168.1.2.33748 > 66.35.250.11.53: 43129 [1au] A? www.linux.com. (42) (DF) Keempat query menggunakan sumber port 33748 pada nameserver berbeda pada empat query yang berbeda. Jika BIND menggunakan port sumber secara acak, bisa meningkatkan peluang dalam menangkal serangan spoofing.
bagian TTL dari jawabannya. Pada titik ini tugas penyusup selesai, tetapi efeknya tinggal untuk selama ISP memegang data (record) palsu dalam nameserver cache-nya. Pengguna yang merupakan korban di ISP akan terkena serangan itu setiap membuat query untuk nama dari domain yang bersangkutan. Serangan semacam ini mungkin berkisar dari gangguan sederhana sampai mimpi buruk dalam keuangan untuk sejumlah besar orang. Tujuannya adalah membuat sebuah situs web yang cukup seperti asli agar tidak menimbulkan kecurigaan apapun. Ketika domain dibajak melalui ‘peracunan’ cache untuk sebanyak mungkin ISP, menyebabkan kemungkinan untuk mengakses situs palsu. Beberapa serangan yang biasa digunakan adalah: Mengarahkan sebuah mesin pencari yang populer untuk situs iklan pop-up Mengarahkan sebuah website bank untuk mendapatkan akses ke password pengguna Mengarahkan situs berita untuk menyuntikkan cerita palsu dan memanipulasi saham pasar
C. IV. SOLUSI DALAM MENANGKAL BIRTHDAY ATTACK Pengguna BIND Ketika mencoba untuk melindungi diri terhadap serangan spoofing DNS, pengguna harus mempertimbangkan berbagai aspek serangan itu dan termasuk kategori apa serangan yang dialami pengguna. Sebagai contoh, apakah pengguna ingin mencegah dirinya dikembalikan data palsu? Atau pengguna mencoba untuk mencegah nama domainnya dari pembajakan? Dalam setiap serangan spoofing DNS ada dua korban - pemilik domain yang dibajak, yang kehilangan akses ke situsnya, dan pengguna akhir yang akan diarahkan ke alamat IP palsu.
Gambar 3.2 Proses Penyerangan pada BIND Pada titik ini, yang perlu dilakukan oleh penyusup adalah memenangkan perlombaan antara irisan pertama yang berhasil dari transaksi palsu dan jawaban sah dari nameserver yang mempunyai hak akses. Perlombaan ini sudah memenangkan penyusup, namun ia bisa menggunakan metode lain untuk memperoleh kesempatan yang lebih besar, seperti memberikan data secara terus menerus ke nameserver yang bertanggung jawab dengan paket palsu untuk memperlambat waktu responnya. Setelah serangan dengan sebuah query rekursif yang sah dan paket balasan yang dipalsukan, nameserver tujuan di ISP akan menyimpan sementara (caching) catatan palsu untuk waktu yang mengindikasikan pada
Makalah IF3058 Kriptografi – Sem. II Tahun 2011/2012
Pemilik Domain Untuk pemilik domain, ada hal yang dapat dilakukan untuk melindungi terhadap spoofing yang dilakukan penyusup terhadap nama domain ke nameserver yang rentan. Jika pemilik domain menjalankan webserver, pertimbangkan untuk menggunakan SSL untuk mengotentikasi diri pada browser. Setelah itu, DNSSEC akan memungkinkan semua server domain untuk mengenkripsi record yang telah ditandai, tetapi tidak banyak diterapkan untuk saat ini. Bahkan mendeteksi serangan tersebut akan sulit, karena pembajakan umumnya tidak tergantung dari server pemilik domain. Harap diperhatikan serangan denial-of-service, hal ini dapat menunjukkan seseorang sedang mencoba untuk membuat server menjadi lambat atau crash sementara waktu dalam upaya untuk menyelesaikan usaha spoofing. Admin ISP Nameserver Admin dapat meng-upgrade BIND ke versi terbaru dari seri 9.x, yang tidak rentan terhadap serangan ini. Atau
Admin dapat mencoba menggunakan djbdns. Langkah pertama adalah nonaktifkan query rekursif dari dunia luar, dengan split-split DNS jika memungkinkan seperti gambar 3.3. Split-split DNS memiliki 2 nameserver yaitu satu server untuk melayani informasi publik domain ke dunia luar, dan satu server untuk melakukan query rekursif untuk pengguna. Server publik tidak harus melibatkan query rekursif, dan server (cache) rekursif harus dilindungi oleh firewall. Jika Admin tidak dapat menggunakan memecah-split DNS, solusi lainnya adalah admin harus membatasi pihak-pihak yang dapat melakukan query rekursif dari nameserver yang dimiliki admin.
my $target = $ARGV[0]; my $m = $ARGV[1]; die "$usage" unless $ARGV[0] && $ARGV[1]; die "$usage" if $m !~ /^\d+$/ || $m == 0; my $domain = "mydomain.com"; # domain name with NS RR pointing to us my $r = 0xdead; # initial transaction ID for our queries my @spoofingset; # list of our guesses my $total = 65536; # total possible packets my $maxlen = 1500; my $collisions = 0; my $datagram; printf "Probability of success using $m packets: %.2f%%\n", 100 - (((1 - (1 / $total)) ** (($m * ($m - 1)) / 2)) * 100);
Gambar 3.3 Split-split DNS Pengguna Akhir Solusi pertama adalah pengguna harus mendesak ISP untuk memperbaharui BIND. Jika perusahaan tidak terbuka ataupun menanggapi hal ini, pengguna dapat menjalankan resolver sendiri secara rekursif dan memberi jalur langsung (bypass) bagi nameserver dari ISP terkait. Langkah lainnya adalah pengguna mengggunakan antivirus yang selalu diperbaharui. Kemudian pengguna harus memastikan kelayakan dan otoritas SSL ketika pengguna ingin melakukan transaksi online secara aman. Jika pengguna merasa mengunjungi sebuah situs yang palsu, pengguna dapat menggunakan ARIN whois untuk memastikan bahwa IP tersebut memang dimiliki oleh organisasi pemegang domain. Vendor Solusi bagi vendor adalah dengan mengubah perilaku BIND 8 dan 4, yakni hanya mengirim satu permintaan untuk sejumlah permintaan untuk nama yang sama. BIND 9 sudah menggunakan hal ini. Namun, BIND 9 juga mempunyai masalah yang lain, yakni menggunakan kembali port sumber.
for (0..($m - 1)) { $spoofingset[$_] = sprintf("%x", int(rand ($total - 1))); } #print "Spoofing set: ", join(" ", @spoofingset), "\n"; my $server = IO::Socket::INET>new(LocalPort => 53, Proto => "udp") or die "Couldn't be a udp server on port 53 : $@\n"; my $client = IO::Socket::INET>new(PeerAddr => $target, PeerPort => 53, Proto => "udp") or die "Couldn't be a udp client on port 53 : $@\n";
Program untuk mengecek kelayakan BIND[2] use IO::Socket; use strict;
my ($second, $top) = split(/\./, $domain); my $findlabel = chr(length($second)) . $second;
$| = 1; my $usage = "Usage: $0 [ip address] [number of packets]\n";
my $request = "\x01\x00\x00\x01\x00\x00\x00\x00\x00\ x00\x03" .
Makalah IF3058 Kriptografi – Sem. II Tahun 2011/2012
"www$findlabel\x03$top\x00\x00\x01\x00 \x01"; for (0..($m - 1)) { ## send query with incrementing transaction ID $client->send(pack("H*", sprintf("%x",$r++)) . $request); } print "Sent $m DNS initial queries to target...\n"; $SIG{'ALRM'} = sub { die "timeout"}; my $count = 0; eval { alarm(30); while ($count ( $m) { $server-)recv($datagram, $maxlen); my $tid = sprintf("%x", hex(unpack("H*", substr ($datagram,0,2)))); printf "Received recursive query with transaction ID: $tid\r"; for (@spoofingset) { if ($tid eq $_) { print "\nMatched TID $tid in spoofing set. Success.\n"; $collisions++; } } $count++; } alarm(0); };
print "Spoofing attack unsuccessful in this run.\n"; }
D. V. KESIM PULAN Penyerangan yang dijelaskan pada makalah ini adalah Birthday Attack. Serangan ini didasarkan atas kemungkinan/probabilitas karena kecacatan pada BIND. Serangan ini biasanya digunakan dengan mencari terlebih dahulu ID transaksi. Penyerangan ini biasanya digunakan untuk mencari kata sandi, iklan, dan merusak harga pasar. Penyerangan ini terjadi karena terdapat kecacatan pada BIND, yakni penggunaan port sumber berulang-ulang atapun mengirim informasi yang sama untuk query yang sama. Solusi pada penyerangan ini tergantung pada posisi seseorang yang berkaitan dengan BIND. Namun, secara umum perilaku BING memang harus diubah.
E. REFERENSI [1] [2] [3] [4]
www.wikipedia.org diakses 28 Februari 2012. www.secureworks.com/research/articles/other_articles/dns-cachepoisoning/ diakses 28 Februari 2012. pl.duniasemu.org/network/bind_dns/bind_dns-4.html diakses 18 Maret 2012. www.x5.net.faqs/crypto/q95.html diakses 18 Maret 2012 .
F. P ERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 18 Maret 2012 Ttd,
if ($@) { if ($@ !~ /timeout/) { alarm(0); die $!; } } print "\nReceived $count recursive queries for $m initial queries\n"; if ($count == 0) { print "Target not listening or does not answer recursive queries\n"; } if ($count == 1) { print "Target does not appear to be vulnerable\n"; } if ($collisions > 0) { print "Spoofing attack would have been successful with " , "these parameters.\n"; } else {
Makalah IF3058 Kriptografi – Sem. II Tahun 2011/2012
Dion Jogi Parlinggoman 13509045