DDoS Forensics:DDoS Saldırılarında Sahte IP Kullanımı Belirleme

Yıkım
saldırıları olarak tanımlayabileceğimiz DoS/DDoS saldırılarında en
temel sorunlardan birisi ip spoofing (ip sahteciliğidir). Internetin
üzerinde çalıştığı TCP/IP protokolündeki bazı esneklik ve eksiklikler
kullanılarak gerçekleştirilen DDoS saldırılarında saldırganın
yakalanması neredeyse imkansızdır.

Linux/UNIX
sunucuya sahip bir saldırgan istediği ip adresinden geliyormuş gibi
DoS saldırısı gerçekleştirebilir. Hatta istenirse hedef olarak belirlenen
kurumun/şirketin kendi ip adresinden geliyormuş gibi bile
gösterilebilir.

Bu blog girdisinde DoS/DDoS analizinde saldırı yapan IP adreslerinin gerçek olup olmadığının anlaşılması konusuna değinilmiştir. 

Örnek:
Aşağıdaki
DDoS saldırı logları test ortamında üretilmiş ve sanki tüm saldırı
istekleri beyaz saray (Whitehouse.gov)’dan geliyormuş gibi
gözükmektedir.

root@bt:~# tcpdump -i eth0 -tn tcp port 80tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
IP 23.14.92.90.2861 > 50.22.202.162.80: Flags [S], seq 1539702406, win 512, length 0
IP 23.14.92.90.2862 > 50.22.202.162.80: Flags [S], seq 664924080, win 512, length 0
IP 23.14.92.90.2863 > 50.22.202.162.80: Flags [S], seq 1884477834, win 512, length 0
IP 23.14.92.90.2864 > 50.22.202.162.80: Flags [S], seq 1637761741, win 512, length 0
IP 23.14.92.90.2865 > 50.22.202.162.80: Flags [S], seq 1371834373, win 512, length 0

Burada eğer saldırı iyi analiz edilmezse yanlış kişi veya kurumlar gereksiz yere suçlanabilir.
Saldırılarda
kullanılan IP adreslerinin gerçekten o kişi/kurumdan mı geliyor yoksa
başkaları tarafından sahte olarak üretilip üretilmediğini belirlemek çok
zordur. Protokol başlık bilgilerini detaylı analiz ederek bu konuda
bazı ipuçları yakalanabilir. 

Bu ipuçlarından en kolayı ve ilki IP başlık
bilgisindeki TTL (Time To Live) alanıdır. 

IP başlığındaki TTL alanı IP paketinin kaç
adet yönlendirici (OSI katmanına göre >3 katmanda yönlendirme yapan
herhangi bir cihaz da olabilir) dolaştığını belirtir. TTL değerleri işletim sistemlerine göre farklılık gösterse de genellikle 64, 128 veya 256 gibi değerlerden başlatılır. DDoS saldırı analizinde kaydedilen paketler incelendiğinde TTL değerlerine bakılarak paketlerin gerçekten ilgili kaynaktan gelip gelmediği konusunda yorum yapılabilir.[1]

Aşağıdaki
paketlere (tcpdump çıktısı ) bakarak paketin başlangıç
TTL’inin 64 olduğunu ve bize ulaşana kadar toplamda 7 cihaztan geçtiğini
tahmin edebiliriz.
 

# tcpdump -i eth0 tcp port 80 -v -n
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
15:52:21.486405 IP (tos 0x0, ttl 57, id 56984, offset 0, flags [none], proto TCP (6), length 40)
    23.14.92.27.2839 > 50.22.202.162.80: Flags [S], cksum 0x0ce7 (correct), seq 1877259047, win 512, length 0
15:52:22.486712 IP (tos 0x0, ttl 57, id 46513, offset 0, flags [none], proto TCP (6), length 40)
    23.14.92.27.2840 > 50.22.202.162.80: Flags [S], cksum 0x8ca2 (correct), seq 910508081, win 512, length 0

Bu
bilgileri kullanarak DDoS saldırılarında kaynak olarak kullanılan IP
adreslerinin gerçekten gözüken IP adresinden mi yoksa başkaları
tarafından spoof edilerek gönderilen adresler mi olduğu belirlenebilir.

Örnek Analiz:

Aşağıdaki çıktılara göre saldırıda kullanılan ip adreslerinin gerçek ya da sahte olma ihtimali nedir?

# tcpdump -i eth0 tcp port 80 -v -n
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
15:57:40.356491 IP ( ttl 58, id 42475, offset 0, flags [none], proto TCP (6), length 40)
 15.118.77.4.1593 > 50.22.202.162.80: Flags [S], , seq 317707819, win 512, length 0
15:57:41.356872 IP  ttl 58, id 40125, offset 0, flags [none], proto TCP (6), length 40)
    91.250.206.34.1594 > 50.22.202.162.80: Flags [S], cksum 0x9f0b (correct), seq 820931198, win 512, length 0
15:57:42.357198 IP (tos 0x0, ttl 58, id 36059, offset 0, flags [none], proto TCP (6), length 40)
    151.31.27.199.1595 > 50.22.202.162.80: Flags [S], cksum 0x208a (correct), seq 1444135933, win 512, length 0
15:57:43.357543 IP (tos 0x0, ttl 58, id 60185, offset 0, flags [none], proto TCP (6), length 40)
    24.162.11.171.1596 > 50.22.202.162.80: Flags [S], cksum 0x13e5 (correct), seq 750695986, win 512, length 0
15:57:44.358025 IP (tos 0x0, ttl 58, id 41019, offset 0, flags [none], proto TCP (6), length 40)
    250.250.205.165.1597 > 50.22.202.162.80: Flags [S], cksum 0x2764 (correct), seq 440922370, win 512, length 0
15:57:45.358314 IP (tos 0x0, ttl 58, id 1793, offset 0, flags [none], proto TCP (6), length 40)
    144.104.160.222.1598 > 50.22.202.162.80: Flags [S], cksum 0x4725 (correct), seq 507576874, win 512, length 0
15:57:46.358612 IP (tos 0x0, ttl 58, id 6020, offset 0, flags [none], proto TCP (6), length 40)
    19.199.201.237.1599 > 50.22.202.162.80: Flags [S], cksum 0xf8b4 (correct), seq 1523793720, win 512, length 0
15:57:47.358930 IP (tos 0x0, ttl 58, id 5398, offset 0, flags [none], proto TCP (6), length 40)

2.16.217.123.1599 > 50.22.202.162.80: Flags [S], cksum 0xf8b4 (correct), seq 1523793720, win 512, length 015: ( ttl 58, id 5398, offset 0, flags [none], proto TCP (6), length 40)

Yukarıdaki çıktı incelendiğinde rastgele IP adreslerinden TCP SYN paketlerinin 80. porta gönderildiği gözükmektedir.(SYN flood saldırısından alınmış örnek). Burada dikkat çeken bir husus gönderilen tüm paketlerde TTL değerinin 58 olmasıdır, farklı farklı IP Adreslerinden gelen paketlerin  TTL değerlerinin aynı olması pek olası değildir. Örnek olması açısından en son satırdaki IP adresi  2.16.217.123 inceleyelim.

İlk adım olarak bu IP adresine bir adet paket gönderelim ve cevaptaki TTL değerini inceleyelim.

# hping3 -p 80 -S 2.16.217.123 -c 1
HPING 2.16.217.123 (eth0 2.16.217.123): S set, 40 headers + 0 data bytes
len=46 ip=2.16.217.123 ttl=53 DF id=0 sport=80 flags=SA seq=0 win=14600 rtt=53.1 ms

— 2.16.217.123 hping statistic —
1 packets tramitted, 1 packets received, 0% packet loss

Gönderilen bu isteğin cevapları incelenirse dönen pakete ait TTL değerinin 53 olduğu görülebilir. Oysa saldırı paketlerinde bu ip adresinden gelen paketlere ait TTL değerinin 58 olduğu gözükmekteydi. Bu da bize ilgili SYN flood saldırısında kullanılan IP adreslerinin gerçek olmadığını söylemektedir.


# tcpdump -n -t tcp port 80 -v
IP (tos 0x0, ttl 64, id 25701, offset 0, flags [none], proto TCP (6), length 40)
    85.95.238.172.2651 > 2.16.217.123.80: Flags [S], cksum 0x65ca (correct), seq 16

IP (ttl 53, id 0, offset 0, flags [DF], proto TCP (6), )
    2.16.217.123.80 > 85.95.238.172.2651: Flags [S.], cksum 0x1c1d (correct), seq 2868979279, ack 1695933000, win 14600, options [mss 1460], length

Tabi
buradaki analiz yöntemi ileri seviye teknik bilgiye sahip saldırganlar
tarafından rahatlıkla aşılabilse de bugüne kadar bu yöntemi şaşırtacak
bir saldırı analiziyle karşılaşmadık.

*Internet
altyapısının esnekliği ve yönlendirme algoritmalarının işleyişi
düşünüldüğünde bir paketin A noktasından B noktasına giderken izlediği
yol ile B noktasından A’ya geri dönüşte izlediği yollar farklı olabilir
bu da TTL değerlerinin farklı çıkmasına yol açacaktır.