8 Haziran 2012 Cuma

IP Spoofing Nedir?

Internet veya ağa bağlı sisteminizle başka bir sisteme bağlanacaksınız, ama bu bağlantın sizin tarafınızdan yapıldığını gizlemek istiyorsunuz. Bunun için bağlantı sırasında kimliğinizi (ki TCP/IP protokollerinde kimliğiniz IP adresinizdir), yanlış gösteriyorsunuz. İşte bu yaptığınız işleme IP Spoofing denir .Yani yaptığınız bağlantıda IP adresinizi karşıdaki bilgisayara farklı gösterme işlemine IP Spoofing denir.

IP SPOOFING YÖNTEMLERİ
IP Spoofing iki şekilde yapılır. Proxy/Socks sunucularını kullanarak, veya IP paketlerini editleyerek. Proxy/Socks sunucusu kullanmak basit bir yöntemdir. Daha çok web/IRC bağlantılarında IPyi gizlemek için kullanılır. IP paketlerini editleyerek yapılan IP Spoofing çok etkilidir ve genel olarak D.o.S saldırılarında veya session-hijacking yönteminde kullanılır.

PROXY/SOCKS KULLANIMI
Internetde gezdiğiniz sitelerin sizin IP adresinizi loglarında tutmaması için, kullandığınız browserın bağlantı ayarlarına girerek bir proxy sunucusu üzerinden bağlantı yapmasını sağlayabilirsiniz. Bu şekilde siz aslında proxy sunucusuna bağlanmış olurken, proxy sunucusu sizin yerinize hedef bilgisayara bağlanmış olacaktır. 

Örnek:
MySystem:1059 -> MyProxy:8080
MyProxy:1039 -> MyTarget:80

Önce sistemimiz (MySystem) kullanmak istediğimiz proxy`ye (MyProxy), proxynin portundan bağlanıyor. Proxy portları 80, 3128, 8080 gibi değişik portlar olabilir. Bu bağlantı sağlanınca, sistemimiz daha üst bir protokol ile (HTTP, HTTPS), bağlanmak istediği hedef (MyTarget) bilgisayarla ilgili bilgiyi proxy`ye yolluyor. Proxy`de hedef bilgisayara bağlanıp bizim gönderdiklerimizi ona, ondan gelen bilgileri, bizim sistemimize aktarıyor. Böylece hedef bilgisayarın bağlantı loglarına bizim değil Proxy`nin IPsi geçmiş oluyor. Yalnız bazı proxy yazılımları bu konuda tam olarak IP saklama özelliğine sahip değil. Bizim isteğimizi karşı tarafa yollarken, bizim IPmizide 

HTTP başlığına ekleyenler var. Logların incelenmesi durumunda bağlantının gerçekten kim adına istenmiş olduğu ortaya çıkıyor. Proxy kullanımının da IP adresinizin gizlenmesiyle ilgili bir de şu tehlike var. Sizin IP adresiniz, hedef bilgisayara iletilmese de proxy loglarında tutuluyor. Bu yüzden hedef bilgisayarın admini, proxy sunucusunun loglarına başvurup sizin IPnizi bulabilir.

Eğer IP adresimizi webde surf yaparken değil de, başka bir TCP bağlantısında spoof etmek istiyorsak socks sunucusu kullanabiliriz. Socks sunucuları genelde 1080. porttan bağlantı kabul ederler ve kullanıcıya Proxy sunucusundan çok daha fazla seçenek sunar. Socks sunucusu kullanarak telnet, ftp, IRC gibi TCP bağlantısı kabul eden her sunucuya bağlanabilirsiniz. Socks sunucusu ile sistemimiz haberleşmek için TCP bağlantısını yaptıktan sonra socks protokolünü kullanır. Örnek:

MySystem:1075 -> MySocks:1080
MySocks:1043 -> MyTarget:ftp

Proxy bağlantısında olduğu gibi yine sistemimiz önce socks sunucusuna bağlanır. Sistemimiz yapmak istediği bağlantıyı socks sunucusuna socks protokolü yardımıyla bildirir. Socks sunucusu da bizim sistemimiz yerimize hedef bilgisayara bağlanır. Bu sayede yine IP adresimiz hedef bilgisayara ulaşmamış olur.

IP Spoofing yöntemini durdurmak için hedef sunucuda socks sunucusu kontrolü olabilir. Yani bağlantı isteğini kabul etmeden önce bağlantının bir socks sunucusundan gelip gelmediğini kontrol eder. Eğer bağlantı bir socks sunucusundan geliyor ise bağlantıyı kabul etmez. Özellikle socks sunucusu ile IP Spoof yapılmasının önlenmesi için IRC sunucularında bu kontrolün olduğunu görebilirsiniz.

Socks bağlantı desteği olan telnet ve ftp programlarını internetden ücretsiz indirebilirsiniz. Zaten IRC istemcilerinin hemen hepsinde socks desteği vardır. Socks ve Proxy sunucuların listelerini CyberArmy sitesinden alıyordum. Siteyi uzun zamandır ziyaret etmediğimden hala açık mı, açıksa listeler hala yayınlanıyor mu bilmiyorum.

IP PAKETLERİNİ EDİTLEMEK
Bu basit proxy/socks yöntemi bir çoklarının işini görse de en etkili IP Spoofing yöntemi paketleri editlemektir. Eğer ileri düzeyde TCP/IP bilginiz varsa, IP paketlerin editlenmesi fikri size yabancı değildir. Eğer IP paketlerindeki kaynak adreslerini editlerseniz, IP spoof yapılmış paketler elde edersiniz. UDP/TCP/ICMP/IGMP paket yapıları, 3way handshaking ve Seq# ile Ack# karşılaştırmalarını anlatmak çok detaya kaçtığı için ben sadece IP paketlerini editleyerek nelerin, nasıl yapılabileceğinden bahsedeceğim:

TCP BAĞLANTISI GEREKMEYEN DURUMLARDA IP SPOOF
Genelde TCP bağlantı gerekmediği durumlarda IP spoof yapmak, yapılan D.o.S saldırılarının kaynağının tespitini önlemek içindir. KOD, jolt, papasmurf gibi bir çok D.o.S saldırısında gönderilen paketlerin kaynak adresleri değiştirilerek, kaynağın gizliliği sağlanır. Bu işe yarayan programların Linux için yazılan kaynak kodlarını packetstorm.securify.com adresinden bulabilirsiniz.

TCP SESSION HIJACKING
Hacking için bazı durumlarda kendi IP adresimizden farklı bir adresle hedef sunucuya bağlanmamız gerekebilir. Örneğin elimizde bir web sunucusu olsun. Sunucuya dosya güncellemek için sysadmin şirketin local ağına ve lease line sattığı x.x.x.x static IP adresi olan müşterisine izin vermiş olsun. Yani web sunucusunun önündeki firewall, sunucunun ftp portuna gelen isteklerden sadece x.x.x.x adresinden gelenlere izin veriyor. Bu tip bir durumda bir hackerın ftp root/admin şifresini bilmesine rağmen sisteme girebilmesi için bu x.x.x.x IP adresine sahip olması gereklidir. Bunu sağlamak için hacker sistemde tanımlı olan x.x.x.x IP adresinden sahte bir bağlantı oluşturmalıdır. 

Karşımıza şu sorun ortaya çıkar: Biz gönderdiğimiz paketleri editleyerek kaynak adreslerini değiştirebiliyoruz ama sunucu aldığı paketlere vereceği cevapları nereye yollayacak? Tabi ki sunucu cevapları bizim verdiğimiz sahte IP adresine yollayacak. TCP protokolündeki bağlantı kontrolünü bildiğinizi varsayarak böyle bir durumda sunucunun gönderdiği ve bizim alamadığımız paketlere karşılık gelen doğru cevapların (ve Seq# Ack#lerin) yollanmasının ne kadar zor olduğunu tahmin edebileceğinizi sanıyorum.

MySystem
(Spoofed packet x.x.x.x:1027) -> MyTarget:80
MyTarget:1405 -> x.x.x.x:1027


Eğer bu gelen (kaybolan) paketlere doğru cevapları verirsek sahte bir oturum oluştururuz. Buna da session hijacking denir. Hijacking de yapılan spoof ikiye ayrılıyor blind ve active spoof. Örnekte belirtilen x.x.x.x adresinin sizin local ağınızda bir makinaya ait olduğunu düşünelim. Böyle bir durumda x.x.x.x adresine gönderilen paketleri sniff yöntemiyle alıp, gereken seq#, ack#leri öğrendikten sonra hedef makinaya yeniden spoofed paketler yollarsanız sahte oturumunuz hatasız çalışır. Gelen paketler sniff yöntemiyle görülebildiğinden buna active spoof denir. Ama eğer x.x.x.x adresine gönderilen paketlerin sniff yöntemiyle alınamayacağı bir durumdaysanız, yani bu paketler sizinle aynı local ağda değil veya ağda hub yerine switch kullanılıyorsa, o zaman blind spoof yapmanız gerekir. Blind spoofde deneme yanılma ve tahmin yoluyla sunucunun gönderdiği paketlerdeki seq# numarasını bulmak gerekir.

Hiç yorum yok:

Yorum Gönder