Günümüz Internet Dünyasında IP Spoofing

Günümüz internet dünyasının temelini TCP/IP protokol ailesi oluşturmaktadır. TCP/IP ailesi OSI katmanına benzer şekilde katmanlı bir yapıdadır. Her bir katman bir üst katmana karşı sorumludur ve her katman barındırdığı özelliklerle diğer katmanların tamamlayıcısı olur. Mesela Network katmanındaki Internet Protocolü(IP)’nin hata kurtarma mekanizması olmadığı için ICMP’den destek alır.

Bu tamamlama özelliklerinden en önemli biri de IP katmanındaki adres sahteciliğine karşı Transport katmanında yer alan TCP’nin tahmin edilmesi güç sıra -onay numaraları barındırması özelliğidir.

IP Spoofing Nedir?

İstenilen IP adresinden TCP/IP paketleri (tcp, udp, ip, icmp, http, smtp, dns vb.) gönderebilme işlemine IP spoofing , ip sahteciliği denir. Sahte ip paketini alan taraf paketin gerçekten gönderilen ip adresinden gelip gelmediğini bilemez.

Genellikle internet dünyasında ip spoofing denildiğinde başkasının ip adresinden mail göndermek, bir foruma mesaj yazmak işlemleri gelmektedir. Bu tip işlemler teorik olarak mümkün olsa da günümüz internet dünyasında pratik olarak başkasının ip adresinden geliyormuş gibi mail gönderme, web sayfasına bağlanma işlemleri gerçekleştirilemez (*hedef ip adresinin çalıştığı sistem ele geçirilmeden)

IP Spoofing Uygulaması

IP spoofing yapabilmek için çeşitli ücretsiz/açık kaynak kod/ticari yazılımlar bulunmaktadır. Bunlar arasında en sık tercih edilenlerden birisi hping’dir. hping kullanarak istenilen özelliklerde ip paketi üretilebilir.
hping -a sahte_ip_adresi -p 80 -S www.bga.com.tr
komutuyla BGA.com.tr makinesinin 80. portuna TCP SYN paketi gönderilmektedir.

Popüler ağ keşif yazılımı Nmap’in Decoy Scan(-D) özelliği kullanılarak sahte ip adreslerinden port tarama gerçekleştirilebilir. Bu tarama tipinde aynı tarama 5, 10 (isteğe bağlı) farklı ip adresinden geliyormuş gibi gözükecektir. Tarama yapıyor gözüken ip adreslerinden bir tanesi de gerçek ip adresidir fakat hangisinin gerçek hangisinin sahte olduğu anlaşılamaz.

Günümüzde IP Spoofing Yapılabilir mi?

Teorik olarak IP spoofing tüm protokollerde gerçekleştirilebilir. Pratik olarak IP spoofing UDP kullanan uygulamalarda

gerçekleştirilebilirken TCP tabanlı uygulama seviyesi protokollerinde (HTTP, SMTP, FTP..) gerçekleştirilemez. Bunun temel nedeni TCP

başlık bilgisinde yer alan sıra numaralarının tahmin edilemez şekilde üretilmesidir. TCP, bağlantı kurulmadan önce her iki uç arasında üçlü el sıkışma işlemini tamamlamayı zorunlu kıldığı için bu aşamaları geçmeden iki uç arasında veri transferi normal yollardan gerçekleştirilemez.

TCP Başlık Değerleri
Transmission Control Protocol, Src Port: 51917 (51917), Dst Port: https (443), Seq: 1197810500, Ack: 1016160500, Len: 52
Source port: 51917 (51917)
Destination port: https (443)
[Stream index: 0]
Sequence number: 1197810500
[Next sequence number: 1197810552]
Acknowledgement number: 1016160500
Header length: 20 bytes
Flags: 0x18 (PSH, ACK)
000. …. …. = Reserved: Not set
…0 …. …. = Nonce: Not set
…. 0… …. = Congestion Window Reduced (CWR): Not set
…. .0.. …. = ECN-Echo: Not set
…. ..0. …. = Urgent: Not set
…. …1 …. = Acknowledgement: Set
…. …. 1… = Push: Set
…. …. .0.. = Reset: Not set
…. …. ..0. = Syn: Not set
…. …. …0 = Fin: Not set
Window size value: 15524
[Calculated window size: 15524]
[Window size scaling factor: -1 (unknown)]
Checksum: 0x4b0e [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 70]
[The RTT to ACK the segment was: 0.179202000 seconds]
[Bytes in flight: 52]

TCP tabanlı protokollerde sadece bağlantıyı başlatma istekleri (SYN bayraklı paketler) ve bağımsız TCP paketleri (FIN, ACK, PUSH bayrakları paketler) gönderilebilir.

IP Spoofing Nerelerde Kullanılmaktadır?

IP spoofing günümüz siber dünyasında yoğunlukla DDoS saldırılarında kullanılmaktadır. DDoS saldırılarının da statefull olmayan protokollerle gerçekleştirilen bölümünde geçerlidir. Yani HTTP GET flood sahte ip adreslerinden gerçekleştirilemez. Ama SYN flood, ACK flood, UDP Flood, DNS flood gibi saldırılar sahte ip adreslerindne gerçekleştirilebilir.

Bunun haricinde ip spoofing saldırıları UDP tabanlı protokollerdeki ip adresi sınırlamasını aşmak için de kullanılmaktadır.

IP Spoofing Nasıl Engellenebilir?

URPF kullanılarak ISP seviyesinde sistemlerin kendilerine atanan IP adresinden farklı bir IP adresini kullanarak paket göndermeleri engellenebilir.

Sahte IP adresi ile gelen paketleri paketlerin ulaştığı noktada engellenemez. Ancak Syn Proxy, Syn cookie gibi yöntemler kullanılarak TCP için üçlü el sıkışmayı tamamlamayı başaramayan paketlerin uç noktalardan iç noktalara(sunuculara, sistemlere) geçmesi engellenebilir.

Teknik Olarak IP Spoofing Detayları

TCP protokolünde bağlantı kurulmasında önce üçlü el sıkışması tamamlanmalıdır. Sahte bir IP adresi ile üçlü el sıkışmasının tamamlanabilmesi için TCP başlık bilgisinde yer alan 32 bitlik sıra numarası (ISN) tahmin edilebilir olması gerekmektedir. Günümüz işletim sistemlerinin hemen hepsinde bu değer yeteri kadar rastgele olacak şekilde üretilmektedir. Bu değerin tahmin edilebilir olması TCP kullanan uygulamalarda IP spoofing yapılabilir demektir.

Bir işletim sisteminin ürettiği sıra numaralarının tahmin edilebilir olup olmadığını anlamak için Wireshark, Hping gibi araçlar kullanılabilir. Hping doğrudan hedef sistemin ürettiği sıra numaralarının rastgeleliğini ölçmek için parametre barındırmaktadır (–seqnum)

Rastgele (random) ISN Değerleri Üreten İşletim Sistemi

Sol taraftaki sütun hedef sistemin ürettiği ISN(sıra numarası) değeridir. Sağ taraftaki sütun ise üretilen iki ISN arasındaki farktır. Eğer iki ISN arasındaki fark tahmin edilebilir bir değer ise hedef sisteme yönelik ip spoofing gerçekleştirilebilir demektir.
# hping –seqnum -S -p 80 www.microsoft.com -c 10
HPING www.microsoft.com (eth0 65.55.12.249): S set, 40 headers + 0 data bytes
1306812782 +1306812782
933497350 +3921651863
3318944478 +2385447128
300763979 +1276786796
496111299 +195347320
2835844375 +2339733076
630198047 +2089320967
1348279774 +718081727
3985307544 +2637027770
3677817908 +3987477659
Rastgele (random) ISN Değerleri Üretmeyen İşletim Sistemi
root@bt:~# hping3 –seqnum -p 80 -S 192.168.1.1 -c 50
HPING 192.168.1.1 (eth2 192.168.1.1): S set, 40 headers + 0 data bytes
4243283968 +4243283968
4247379968 +4096000
4251475968 +4096000
4255571968 +4096000
3988881408 +4028276735
4259667968 +270786560
4263682048 +4014080
4267778048 +4096000
4271915008 +4136960
4276011008 +4096000
4280066048 +4055040
3988881408 +4003782655
4284162048 +295280640
4288258048 +4096000
4292354048 +4096000
1482752 +4095999
5578752 +4096000
9633792 +4055040
3988881408 +3979247616
13729792 +319815679
17825792 +4096000
21921792 +4096000
26017792 +4096000
30113792 +4096000
34168832 +4055040
3988881408 +3954712576
38264832 +344350719
42360832 +4096000
46456832 +4096000
50470912 +4014080
54566912 +4096000
58662912 +4096000
3988881408 +3930218496
62758912 +368844799
66854912 +4096000
70950912 +4096000
75046912 +4096000
79101952 +4055040
83197952 +4096000
3988881408 +3905683456
87334912 +393420799
3988881408 +3901546496
3988881408 +0
91348992 +397434879
3988881408 +3897532416
95444992 +401530879
99540992 +4096000
103636992 +4096000
107732992 +4096000
111828992 +4096000
— 192.168.1.1 hping statistic —
41 packets tramitted, 50 packets received, -21% packet loss
round-trip min/avg/max = 1.3/2.7/6.9 ms
 

ISN değerlerini yeteri kadar rastgele üretmeyen ip adresinin hangi işletim sistemi üzerinde koştuğu bilgisi.
root@bt:~# nmap -O 192.168.1.1
Starting Nmap 5.51 ( http://nmap.org ) at 2011-11-02 08:00 EDT
Nmap scan report for 192.168.1.1
Host is up (0.037s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
21/tcp open ftp
23/tcp open telnet
80/tcp open http
8080/tcp filtered http-proxy
MAC Address: 00:23:F8:A:C:F (ZyXEL Communications)
Device type: firewall
Running: ZyXEL ZyNOS 3.X
OS details: ZyXEL ZyWALL 2 fire