Scapy ile Arp Poisoning

Posted by Umut on

Arp Poisoning(Arp Zehirlenmesi), Man in The Middle(mitm) gibi saldırılarda sıklıkla kullanılan bir tekniktir. Nasıl işlediğinden bahsetmeden önce Arp Protokolü‘nün ne olduğunu ve ne işe yaradığından bahsedelim biraz.

Arp Protokolü

TCP/IP protokolü 32 bit uzunluğundaki IP adreslerini kullanır. Veri alışverişinde bulunabilmek için verinin gönderildiği makinenin IP adresi bilinmelidir. Fakat makinenin sadece IP adresini bilmek yeterli değildir. Bunun yanı sıra MAC adresininde bilinmesi gerekir. OSI katmanı göz önünde bulundurulursa veri alışverişi yapılabilmesi için ilk önce hedefin IP bilgisi daha sonra hedefin MAC adresi, gönderilecek paketin içine yazılması gerekir. Daha sonra ise bu paket elektronik sinyallere çevrilip kablo aracılığı ile hedefe iletilir.

Peki yerel ağdaki bir bilgisayar, IP adresini bildiği aynı ağdaki biri ile nasıl iletişim kurabilir?

İletişim kurabilmesi için ağdaki bilgisayarın MAC adresini bilmesi gerekiyor. İşte ARP protokolü bu işe yarıyor. Diyelimki A bilgisayarı(192.168.1.3), B bilgisayarına(192.168.1.4) veri göndermek istiyor. Fakat B bilgisayarının MAC adresini bilmiyor, bu yüzden veriyi gönderemiyor. Böyle bir durumda A bilgisayarı bütün ağa şöyle bir Arp Request(Arp isteği) gönderiyor: 192.168.1.4 IP adresi kime ait? A bilgisayarına söyle.

Dikkat edilmesi gereken yer bu istek bütün ağa gönderiliyor. Fakat sadece istenilen IP adresine sahip kişi dönüş yapıyor. Bu sayede A bilgisayarı B bilgisayarının MAC adresini öğrenmiş oluyor ve veriyi başarılı bir şekilde gönderebiliyor. Peki A bilgisayarı B bilgisayarına başka bir veri göndermek isterse? Tekrardan bütün bir ağa request göndermek hem zaman kaybı hemde ağda boşu boşuna trafik yaratmak demek. Bu yüzden Arp Requestten dönen cevabı bilgisayarlar Arp tablosunda belli bir süre boyunca tutuyor. Arp poisoning tekniği ise bu tabloları istenilen değerlerle değiştirip trafiğin arasına girebilmemize olanak sağlıyor. Yani C bilgisayarı(saldırgan), A bilgisayarına kendisini B bilgisayarı olarak gösteriyor. Dolayısıyla A bilgisayarı verileri B bilgisayarı yerine C bilgisayarına gönderiyor. Şimdi saldırıya geçersek:

Scripti bu sitede buldum ve sürekli çalışması için ufak bir değişiklik yaptım. Scripti “python ArpPoisoning.py kurban_IP taklit_edilecek_IP” şeklinde kullanabilirsiniz.

Scriptin değiştirilmiş haline github depomdan ulaşabilirsiniz.

Aşağıdaki fotoğrafta kurban bilgisayarın script çalıştırılmadan önceki ve çalıştırıldıktan sonraki  arp tablosundaki değişimini görüyorsunuz.

192.168.1.1(yani gateway) in fiziksel adresi değişmiş. Bu yüzden kurban, gateway e veri gönderirken aslında saldırganın bilgisayarına verileri gönderiyor. Tabiki saldırgan çift yönlü bir trafiğin arasına girmek isterse aynı saldırıyı gateway e de yapmak zorunda. Böylece saldırgan iletişimin arasına geçmiş oldu ve trafiği inceleme şansı yakaladı. Bu da bize encryption ın önemini bir kere daha anlatıyor.


Umut

http://www.umuttosun.com

Siber güvenlik alanında çalışan ve araştırmayı seven bir vatandaş ;)