ARP(Address Resolution Protocol) Nedir? ARP Tablosu Nedir? ARP Poisoning Saldırısı Nasıl Yapılır?

Bu yazıda TCP/IP katmanlarından 2. katman olan Link Layer(Bağ Katmanı)’daki bir protokol olan Address Resolution Protocol(ARP) ‘den ve bu protokole yapılan bir saldırı olan ARP Poisoning(ARP Zehirlemesi) saldırısından bahsedeceğim.

Saldırıyı anlamak açısından, öncelikle protokolü inceleyelim.

ARP, yani Adres Çözümleme Protokolü, kısaca IP adreslerini MAC adreslerine çeviren protokoldür. Ağ haberleşmesi için önce “rotayı belirlemek” gereklidir. Haberleşmek isteyen iki sistem birbirlerine veri paketleri gönderirken, ağda mevcut olan router ve switch gibi yapılar bu verilerin iletilmesini sağlarlar.

Örnek görsel:

Bu durumu kendimiz de gözlemleyebiliriz. ‘traceroute’ adlı bir program, bize başlangıç sistem ile hedef sistem arasındaki bütün yönlendirme noktalarını verir. Kullandığım bilgisayardan sibertalimhane.com’a giden yolda, verilerim arada başka hangi cihazlardan geçiyor diye bir sorgu yazdık ve aşağıdaki cevap ile karşılaştık. (Konu dışı ek bilgi: traceroute default olarak ICMP paketi ile işlem yapar, -T flag’i ile TCP paketi göndererek işlem yapıyoruz. Fakat konumuz bu değil, kafa karışıklığı yapmadan, kısaca bilgiyi vererek devam edelim.)

Artık, verilerin ağda aracısız değil, belirli aletler yardımıyla iletildiğini biliyoruz. Bu nedenle, sadece hedef sistemin IP adresini bilmek yetmez, aradaki yönlendirmeyi sağlayan cihazlara dair ek bir bilgi de gerekli olacaktır. Ağdaki bir sonraki yönlendirme cihazının MAC(Medium Access Control) adresi ile yönlendirme işlemi gerçekleşecektir.

Kendi cihazımızın MAC adresine bakmak istersek ‘ifconfig’ komutunu çalıştırabiliriz.

‘ether’ kısımındaki hexadecimal sayılardan oluşan 48 bitlik veri, bizim MAC adresimizdir.

Paketimizi oluşturduk, iletsin diye bir sonraki router’a vermek istiyoruz. Bunun için IP adresini bildiğimiz router’ın MAC adresine ihtiyacımız var. Peki bu dönüşüm nasıl yapılıyor? Tabi ki ARP ile. Her sistemde, komşu cihazlara ait IP adreslerinin, o cihazların MAC adresine dönüşüm tabloları bulunmaktadır. Bu tablolara ARP Tablosu adı verilmektedir. Bilgisayarlar internete bağlandıktan sonra, çevresindeki cihazlardan ona “şu IP adresi şu MAC adresine sahip” şeklinde yayınlar gelmektedir. Bilgisayar da bu yayınları bir tabloya kaydeder. İşte bu tablolar ARP tablolarıdır.

Kendi cihazımızdaki ARP tablosunu görüntülemek istersek:

2 adet IP adresine ait MAC adresleri, ARP tablosunda yukarıdaki gibi depolanmaktadır.

Yukarıda bir şey dikkatinizi çekti mi? Gateway adlı bir cihazın IP adresi ve MAC adresi ilk sırada duruyor. Peki nedir bu gateway? Gateway, bilgisayarımızın internete ulaşmak için kullandığı çıkış kapısıdır. Yerel ağımızda bulunmayan bir cihaza erişmek ve veri iletişimi sağlamak istersek, verileri gateway’e göndeririz, o da bizim için hedef sisteme iletir.

Buraya kadar olan kısım, saldırıyı anlamak için bilmemiz gereken ön bilgilerdi. Artık saldırı senaryosuna geçebiliriz.

ARP protokolü, kendisine gelen yayınları aynen tablosuna kaydetmektedir. Bu kayıt işlemi sırasında herhangi bir kimlik doğrulama vb güvenlik işlemi yapmamaktadır. Yani, gelen yayına inanıp, onun doğru ya da yanlış olduğunu kontrol etmeksizin onu kaydetmektedir. Kötü amaçlı biri, ağda sürekli olarak ‘Ben Gateway’im, benim IP ve MAC adreslerim bunlar, eğer internete çıkmak isterseniz paketlerinizi bana gönderin’ şeklinde yayın yaparsa, herhangi bir doğrulama protokolü çalıştırmadan bu bilgileri ARP tablosuna kaydeden cihazlar bu yanlış yayın tarafından ‘zehirlenecek’ ve ARP tabloları yanlış veri ile dolacaktır. ARP Poisoning olarak bahsettiğimiz saldırı ise budur.

Örnek bir senaryo üzerinden bu saldırının nasıl olacağını görelim:

Senaryomuzda bir adet saldırgan makinemiz var, bir adet de hedef makinemiz mevcut. Bu makineye(hedef makineye) yanlış ARP anonsları yaparak, tablosunu yanlış veriler ile doldurmasına neden olacağız. Kendimizi internete çıkış kapısı olan Gateway olarak göstererek, hedef makinenin ağ trafiğinin ve paketlerinin kendi üzerimizden geçmesini sağlayacağız. Bu yöntem ile, hedef makinenin trafiğini inceleme şansımız olacak. Eğer hedef makine güvenli veri iletişim protokolü olan HTTPS yerine güvensiz olanını yani HTTP’yi kullanıyorsa, paketlerin içeriğini de görme şansı elde edeceğiz.

Bu senaryoda saldırgan olarak ‘Kali Linux’ kullanacağız. Hedef makine olarak ise bir Windows 7 makinesi kullanacağız.

İlk olarak, henüz zehirlenmemiş, henüz saldırı almamış Win7’nin ARP tablosunu inceleyelim.

Hedef makinemiz 192.168.244.129 IP adresine sahip ve ARP tablosu yukarıdaki gibi.

Şimdi ise yanlış ARP anonsları yapan bir otomatize tool kullanacağız. İsmi ‘ettercap’. Kali makinemizden bu tool’u çalıştıralım.

Açılan programda, ‘Sniff’ kısmından ‘Unified sniffing…’ seçeneğini seçiyoruz.

Bize hangi ağ arayüzünü kullanmak istediğimizi soruyor. Varsayılan seçenek olan ‘eth0’ seçeneğini seçerek devam ediyoruz.

Şimdi ise hedefimizi ettercap’e tanıtmamız lazım. Hosts kısmından ‘Scan for hosts’ seçeneğini seçerek ağdaki aktif cihazları buluyoruz.

ettercap 5 adet host tespit etti.

Şimdi ise bunların arasından hangisi bizim hedefimiz onu bulalım. Yine Hosts kısmından ‘Hosts list’e basıyoruz.

Biz, hedefimizin 192.168.244.129 IP adresine sahip olduğunu biliyorduk. Buradaki listede de gözüküyor. Şimdi o IP adresine right-click yaparak ‘Add to Target 1’ seçeneğini seçelim.

Sıradaki adım ise hedefi görüntülemek. Targets kısmından ‘Current Targets’ seçeneğini seçip hedefimizi görüntülüyoruz.

Hedefimiz ‘Target 1’ olarak çıkıyor.

İşlerimizi kolaylaştırması için birkaç plugin kullanacağız. Yine yukarıdaki menüden Plugins seçeneğine basarak ‘Manage the plugins’i seçelim

Burada önümüze birçok plugin çıktı. Biz bunlardan 2 tanesini kullanacağız. Listeden ilk olarak ‘chk_poison’ plugin’ini, ikinci olarak ise ‘remote_browser’ pluginini çift tık ile seçerek yükleyelim.

Saldırı için bütün gerekli işlemleri yaptık. Şimdi ise zehirleme işlemini yapalım. Mitm(Man in the Middle) kısmından ‘ARP Poisoning’ seçeneğini seçelim.

Çıkan pop-up’ta sadece ‘Sniff remote connections’ seçeneğini işaretleyelim.

Aşağıdaki bilgi panelinde görüldüğü gibi, kurbanımız zehirleniyor.

Şimdi, kurbanın ARP tablosuna tekrar bakalım, bakalım herhangi bir değişiklik var mı?

Daha önceden 00-50-56-f0-ae-8f MAC adresine sahip olan Gateway artık 00-0c-29-c5-c8-67 MAC adresine sahip gözüküyor. Acaba bu MAC adresi kime ait? Hemen Kali Linux’un MAC adresini öğrenelim. ‘ifconfig’ komutunu çalıştırıyoruz:

Görünen o ki, bu MAC adresi saldırgan makinemize ait. Yani zehirleme işlemi başarıyla gerçekleştirilmiş. Şimdi ise hedef makinemizin trafiğini dinleyebilecek miyiz ona bakalım. Daha önce yüklemiş olduğumuz ‘remote_browser’ plugin’i bize bu konuda yardımcı olacak.

Hedef makinemizden güvenli bağlantı(HTTPS bağlantısı) bulundurmayan login ekranına sahip bir siteye girip olanları görelim.

Girdiğimiz site görüldüğü gibi HTTP bağlantısına sahip. Bu da demek oluyor ki, veriler ağ üzerinde şifrelenmeden iletiliyor.

Kurban hiçbir şeyden habersiz, günlük rutinini devam ettiriyor. Sürekli girmiş olduğu sitelere girerek internette surf yapıyor ama birazdan olacaklardan habersiz.

Kullanıcı, siteye admin:password bilgileri ile giriş yaptı.

Kali Linux’a gelip ettercap programında alt tarafta bulunan bilgi panelini incelediğimizde, kurbanın tarayıcısında yaptığı istekleri görüyoruz. Ayrıca veriler şifreli trafik üzerinden iletilmediği için, kullanıcı adı ve parola bilgisini de görüntüleyebiliyoruz.

Ahmet Selim Kaya

Ofansif Güvenlik Araştırmacısı, TOBB ETU Siber Güvenlik Yüksek Lisans öğrencisi. Bilmediklerinin öğrencisi, bildiklerinin öğretmeni.