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.
[email protected]:~# 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 16IP (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.
Merhaba,
Yine her zamanki gibi güzel bir yazı, elinize sağlık.
TTL değerine bakılarak proxy kullanımı tespit edilebilir mi? Tünelleme yaparak içerik filtreleme sistemlerini atlatan kullanıcıların tespitinde bir yöntem olarak kullanılabilir mi?