Penyerangan dengan Menggunakan DNS Poisoning

Sangat menarik untuk di pelajari, itu kesan pertama penulis ketika membaca beberapa artikel tentang metode penyerangan ke nameserver dengan cara poisoning (memberikan racun) kepada nameserver yang memegang otoriti terhadap sebuah domain. Bagaimana cara memberikan racun kepada nameserver? Dan bagaimana dampaknya? Dalam artikel kali ini saya akan mencoba membahas materi ini dengan beberapa visualisasi.

Sebelum kita masuk dalam inti permasalahan saya akan jelaskan terlebih dahulu bagaimana proses query terjadi ketika Anda melakukan request terhadap sebuah domain. Setidaknya ada tiga nameserver yang akan di kontak ketika Anda melakukan request domain yang Anda inginkan. Ketiga nameserver itu adalah:

ISP Nameserver

Root nameserver

Authoritative nameserver


Misal dalam contoh begini, ketika Anda menggunakan program nslookup untuk mencari ip dari domain google.com maka yang akan terjadi adalah program nslookup akan mengirimkan query ke nameserver ISP untuk meminta nomor ip dari domain google.com. Selanjutnya nameserver ISP akan meminta petunjuk kepada nameserver induk (root nameserver) untuk mencari di mana lokasi nameserver yang memegang otoriti domain google.com. Ketika sudah menemukan nameserver pemegang otoriti domain tersebut, kemudian root nameserver akan membalas query nameserver ISP dengan mengirimkan nama nameserver pemegang otoriti domain. Di sini nameserver ISP akan mengirimkan query ke nameserver pemegang otoriti domain dan nameserver pemegang otoriti akan mengirimkan nomor ip dari domain google.com ke nameserver ISP. Dan kemudian nameserver ISP akan mengiriman nomor ip ke program nslookup.

Okee selanjutnya bagaimana dalam konteks penyerangan terhadap nameserver? Tentu sebelumya kita akan pelajari dulu kelemahan dari program DNS server, misal kita ambil contoh BIND. Di dalam kerjanya, BIND meng-generate multi query untuk setiap domain yang sama dalam waktu yang sama juga dan BIND ketika menerima query sama sekali tidak melakukan pengecekan terhadap IP dari peminta domain tersebut tapi hanya menggunakan transaksi IDs untuk mengautentifikasi peminta domain kecuali ketika dia telah menemukan IP domain yang di cari dia akan mengirimkan informasi tersebut ke IP tujuan (peminta IP domain). Artinya dengan melihat kelemahan ini kita bisa melakukan banyak query ke nameserver dalam satu waktu sekaligus dengan menggunakan transaksi IDs yang di random agar BIND membentuk multi query. Dan bahayanya adalah dengan kelemahan BIND ini kita bisa mengirimkan sebuah fake information (informasi palsu) ke nameserver tentang informasi dari sebuah domain yang mengakibatkan nameserver salah memberikan alamat IP dari domain tersebut.

Kesimpulannya seorang attacker bisa membelokan alamat dari sebuah domain dengan menggunakan metode DNS Poisoning dan coba Anda bayangkan ketika nameserver di berikan fake information di nameserver yang akibatnya nameserver akan menerjemahkan bahwa domain itu adalah milik attacker/penyerang. Penyerang itu sendiri telah menyediakan program spoofing juga. Akibatnya bisa Anda perkirakan sendiri, setiap informasi yang di kirim ke domain tersebut akan masuk ke alamat attacker dan program spoofing yang terpasang telah membantu attacker untuk mendapatkan informasi penting seperti login, password bahkan mungkin data-data rahasia.

Apakah semudah itu nameserver bisa di manipulasi? Jawabannya tentu tidak, setidaknya ada dua model penyerangan yang bisa dilakukan. Yang pertama adalah dengan menggunakan conventional spoofing, yang kedua adalah dengan menggunkan metode birthday attack (artikel Joe Stewart, “DNS Cache Poisoning”). Lalu apa perbedaan dari kedua metode di atas? Perbedaannya terletak pada jumlah query yang di kirimkan ke nameserver. Conventional spoofing dalam melakukan penyerangan hanya mengirimkan satu informasi query ke nameserver sedangkan Birthday Attack melakukan penyerangan dengan mengirimkan beberapa ribu query agar nameserver termanipulasi ketika menjawab query tersebut dan nameserver akan mengirimkan informasi yang salah ke nameserver atau user yang merequest domain tersebut.

Coba Anda bayangkan, di sini attacker sebelumnya telah mengirimkan ribuan query dari domain yang sama ke victim nameserver (1) kemudian attacker juga mengirimkan spoofing dengan membuat replies palsu ke nameserver target (2). Yang terjadi ketika ketika ada user yang merequest domain tersebut ke nameserver korban(3), victim nameserver akan me-reply dengan alamat yang salah karena telah di poisoning oleh penyerang (4). Dalam kondisi seperti si attacker telah berhasil menghijacking owner dari domain tersebut dan memutuskan trafik ke situs sebenarnya karena informasi victim domain telah di ganti dengan IP lain.

Tingkat probabilitas (keberhasilan) antara metode spoofing cara konvensional dan birthday attack kemungkinan untuk berhasil lebih banyak di miliki oleh birthday attack tentu ini karena metode kedua mengirimkan banyak query untuk domain yang sama.

Dari informasi yang penulis baca, metode poisoning masih bisa di lakukan di BIND 8 dan 9 walaupun mungkin untuk BIND versi 9 tingkat probabilitasnya hanya 20 % dari 5000 paket/query yang di kirimkan ke victim nameserver.

Bagaimana solusi untuk mengatasi DNS poisoning?

Pertama tentu penulis menyarankan kepada Anda untuk mengganti BIND Anda ke versi 9.x (bukan 9) yang sudah mampu menangani penyerangan dengan metode ini. Atau alternatif lain Anda bisa mencoba DJBDNS buatan D.J. Bernstein (pembuat program qmail). Cara kedua adalah dengan mendisable recursive query ke nameserver dengan membuat split DNS yaitu membuat dua nameserver. Nameserver utama di gunakan untuk menangani domain name dari public domain. sedangkan nameserver kedua di yang berada di internal network bertugas sebagai cache nameserver yang bertugas menjawab query dari user yang merequest domain tersebut sehingga kalau pun di serang dengan ribuan query hal ini tidak akan meracuni informasi public domain karena sudah di tangani oleh nameserver pertama yang di lengkapi juga dengan firewall.

Di dalam konfig BIND memang ada option untuk mengatur allow-recursion untuk membatasi ip/address yang dapat mengakses nameserver, tapi perlu di ingat bahwa seorang penyerang pun bisa dengan mudah mengetahui ip mana saja yang di ijinkan untuk mengirimkan query ke nameserver. Dengan merubah source IP di query-command dengan IP yang di ijinkan untuk mengakses nameserver, penyerangan model ini akan tetap dapat di langsungkan.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s