18 Ocak 2016

ARP Poisoning Nedir, Nasıl Yapılır, Nasıl Önlenir?

Bu makalemizde LAN güvenliği için en önemli tehditlerden birisi olan ARP poisoning yöntemini detaylı olarak açıklayacağız. Ayrıca Linux ve Windows platformlarında bu saldırılar için kullanılan araç ve yöntemleri açıklayacağız. Son olarak bu etkili saldırıya karşı alınabilecek önlemleri sıralayacağız.

Adress Resolution Protocol (ARP) : Bir ağda bilgisayarların düzgün haberleşebilmesi için IP adresi, MAC adresi ve Default gateway adresine ihtiyaç vardır. IP adresi paketin gideceği ağın tespitinde önemlidir,paket hedef ağa ulaştığında ise LAN içerisinde iletim fiziksel katman üzerinden yapılır. Bu iletimde artık MAC adresine göre hedef belirlenir ve paket bu doğrultuda yönlendirilir. Bir LAN içerisinde cihazların birbiriyle haberleşmesi ARP protokolü sayesinde MAC adreslerine göre yapılır. Arp protokolü:

  • network katmanı adreslerinin link katmanı adreslerine çözümlenmesi
  • bu eşleşmelerin tabloda saklanması için kullanılır.

Yani IP adreslerinin fiziksel makine adresiyle (MAC addresi) eşleştirilmesini sağlar ve ARP Cache isimli tabloda bütün MAC adresleri ve o adresle eşleşmiş IP adresleri saklanır. Her cihaz kendi ARP Cache tablosunu bulundurur ve ağ içerisinde meydana gelen değişiklikleri tabloyu güncelleyerek saklar. Mesela ağa yeni bir cihaz bağlandığında diğer cihazlar ARP tablosuna yeni gelen cihazın MAC-IP bilgilerini ekler.

Çalışma yapısı : Bir paket router veya switch'e yönlendirilmek üzere geldiği zaman ilk olarak hedef IP adresi için MAC adres tablosunda kayıt olup olmadığı kontrol edilir. Eğer hedef MAC adresi tablodan öğrenilebildiyse paket o MAC adresinin bulunduğu interface tarafına gönderilir. Mac adresi tabloda yoksa ARP Broadcast paketi gönderilerek “Bu IP adresi kime ait ve Mac adresi nedir ?” şeklinde her bilgisayara sorulur (ARP Request). İlgili IP adresinin sahibi Mac adresini cevap olarak gönderir ancak bu sefer broadcast yayın değil sadece ARP Requesti gönderen kişiye unicast yayın yapar (ARP Replay).


Artık hedef Mac adresi biliniyor olduğu için paket yönledirilir ayrıca Mac Cache tablosuna bu yeni öğrenilen IP-Mac bilgisi girilir.


Arp tablosu bilgileri 'arp -a' komutu ile görülebilir.


Arp mesajları yalnızca iç network sınırlarında dolaşır. Bir networkten başka bir uzayda bulunan networke gönderilemez.Farklı networke giderken Destination Mac adresinde router'ın Mac adresi yazar , router'da o başlığı değiştirip bir sonraki varılacak adresi yerleştirir.(Next hop)

Dolayısıyla başka networkte olan herhangi bir cihazın mac adresini öğrenebilme şansımız yoktur.

ARP Packet Yapısı


Hardware Type: Network Protokol tipini belirtir.Örneğin ethernet 1
Protocol Type: Internetwork protokol tipini belirtir. Arp protokolü için 0x0806 'dır
Hardware Address Length: fiziksel adres uzunluğunu belirtir,6 değerini alır.
Protocol Address Length: Bir üst katman protokolü için (yani Ipv4) uzunluk belirtir
Operation : Göndericinin gerçekleştirmekte olduğu işlemi belirtir. 1 -> request , 0->reply
Sender Hardware adress , IP address : Gönderenin fiziksel adresi ve IP adresini belirtir.
Target Hardware adress , IP address : Hedef fiziksel adresi ve IP adresini belirtir.
* Arp request broadcast yayını olarak yapıldığı için target mac adresi FF:FF:FF:FF:FF:FF 'dir ancak reply mesajı gönderen kişiye geri döner ve onun mac adresi yazılı olur.


ARP Announcements : Arp gratuitous olarakta bilinir. Arp sadece cihazların iletişimi öncesi adres bulmak için kullanılmaz , ayrıca basit bir anons protokolü gibide çalışabilir.Bu anonslar broadcast olarak yapılır ve amacı diğer cihazların networkü haritalamasına yardımcı olmaktır. Bir çok işletim sistemi başlangıçta gratuitous arp paketi gönderir. Faydaları

  • IP adresi veya Mac adresi değişmiş ise diğer cihazların yeni bilgileri ARP tablolarında güncellemesini sağlar.
  • IP çakışmalarının tespitinde kullanılabilir. Örneğin bir cihaz aldığı paketin source kısmında kendi IP'si ile aynı değeri görürse IP çakışması olduğunu saptar.
  • Bir cihaz yeni başlatıldığında veya interface up duruma getirildiğinde arp anonsu yaptığı yukarıda belirtilmişti. Ancak bu durum arka arkaya gerçekleşiyorsa o cihaz için kötü hardware yada kablolamanın sorun olduğu tespit edilir.

ARP Poisoning

Networke bağlı cihazların dış networkler ile haberleşebilmesi için bir default gateway adresine ihtiyaç duydukları belirtilmişti.


Senaryo incelenecek olursa network 172.16.1.0/24 IP bloğuna sahiptir. İnternete çıkış kapısı olan gateway 172.16.1.1 IP adresini almış ve örneğin kullanıcılar www.example.com web adresine ulaşmak istese, sitenin IP adresi olan 200.X.X.X gibi bir adrese istek gönderilmesi gerekerir bu IP iç networkte bulunmadığı için paketler default gateway'e gönderilir ve paketin rotasını artık gateway yani router belirler. Mac adresi – IP adresi eşleşmesi Mac cache tablosunda tutulduğu ve bir paket yönlendirmesi için ilk önce bu tablo kontrol edildiğinden yukarıda bahsedilmişti. Ayrıca Mac cache tablosu doldurulmasında ARP Anonsları ile yapılmakta olduğuda anlatılmıştır.

Networke bağlı bir saldırgan gateway'in IP adresini ve kendi mac adresini içeren ARP anonsları yaparsa diğer cihazlar mac adres tablosunu güncelleyerek artık default gateway'e ulaşmak istediğinde gitmesi gereken cihaz olarak saldırganın IP adresini görürler. Saldırgan internete çıkmak için kendisine gelen bu paketleri dinleyip okuyabilir , gerçek default gateway adresine yönlendirir ve internet sayfasından gelen cevap router tarafından tekrar saldırgana gönderilir. Çünkü router'a bu istek paketlerini gönderen cihaz saldırganın cihazıydı. Saldırgan yine bu cevap paketlerini de inceleyerek gerçek sahibine yönlendirir. Bu işlem sırasında gidip gelen tüm paketler kendi üzerinden geçtiği için şifreleme kullanılmadı ise tüm paketlerin içeriğine erişebilir. Kullanıcı bir internet sayfası açmak istemiş ve sonuçta safya açılmıştır , bağlantıda kopma olmadığı için şüphelenmez ama paketleri aslında saldırgan kişi üzerinden kendisine gelmektedir.

Örnek Saldırı: Gns3 network similasyon programı ile sanal cihazlar birbiriyle bağlanarak eğitim ve test amaçlı ağlar kurulabilir. Örnek saldırıyı gerçekleştirmek için gns3 programı üzerinde aşağıdaki gibi bir network oluşturulmuş ve cihazlar arasında bağlantı sağlanmıştır.


Saldırı adımları :
1) Kurban cihaz (debian-user) üzerindeki mevcut arp tablosunun görüntülenmesi


2) Saldırgan cihaz (Kali-linux) üzerindeki mevcut arp tablosunun görüntülenmesi


3) Saldırgan cihaz üzerinde ettercap uygulamasının başlatılması. Uygulama üzerinde menüden Sniff -> Unified Sniffing seçeneği işaretlenerek ilgili interface işaretlenir (Bizim örneğimiz için eth0)

4) Ettercap üzerinde menüden [ Hosts -> Scan for hosts ] seçeneği ile networke bağlı cihazlar taranır ve [ Hosts-> Host Lists ] seçeneği ile bulunan cihazlar görüntülenir.


5) 172.16.10.10 IP adresine sahip olan ve zehirleme yapılacak cihaz Add to Target 1 seçeneğine tıklanarak ekleme yapılır. Ulaşmak istediği 172.16.10.100 adresli web sayfası zaten yerel ağda bulunduğu için router'ı zehirlememize gerek yoktur. Yerel ağ dışına çıkacak olsaydı 2. hedef olarak router eklenirdi. Ancak şuan direk client ve server arası ileşim kurulduğu için 2.hedef olarak 100 IP adresli web sunucusu eklenir.

6) Menü üzerinden [ Start -> Start Sniffing ] seçeneği ile dinleme başlatılır.

7) Menü üzerinden [ Mitm -> Arp poisoning ] seçeneği ile saldırı türü olarak Arp poisoning seçilir. Sorgu ekranında Sniff remote connection seçeneği seçili olmalıdır.


8) Ettercap avantajlarından birisi de ekstra kullanıbilecek Plugin'lerdir. Menü üzerinde [ Plugins -> Manage plugins ] seçeneği ile plugin'ler incelenebilir.Örneğin Arp poisoning saldırısının başarılı olup olmadığını test etmek için chk_poison eklentisi kullanılabilir.


Debian host ve Web Server arasında ki zehirleme başarıyla gerçekleştiği görülmektedir.


Bu saldırı için aktif ettiğimiz diğer pluginler ; Repoison_arp belirli aralıklarla zehirlemeye devam eder böylece Mac adres tablosunda ki girdi için süre dolup girdi silindiğinde tekrardan tabloyu doldurur. Remote_browser ile saldırı yapılan cihazın browser ile ulaşmaya çalıştığı linkler direkt olarak ettercap ekranında alt bloğa yansıtılır.

9) Kurbanın cihazı (debian) üzerinde tekrardan arp tablosu incelendiğinde saldırının doğru şekilde gerçekleştiği ve gitmek istediği web adresi olarak saldırganın mac adresi yazılı olduğu görülür.


10) Artık client ve server arasındaki tüm trafik saldırgan üzerinden akmaktadır. Menüde [ View -> Connections ] seçeneği ile yapılan tüm bağlantılar ve paket içerikleri görüntülenebilir.


Client üzerinde web sayfasına gidilip bir login ekranından giriş yapıldığında saldırgan cihaz tarafında çalışan ettercap hem gidilen linki hemde paketlerin içeriğini yakalamaktadır.


Kurban bu siteye erişip kullanıcı adı ve şifresini girer ve giriş yapmaya çalışır.Saldırgan ise ettercap aracında Connection listesinden seçtiği bağlantıların içeriğini okuyabilecektir. Ayrıca remote_browser eklentisi sayesinde saldırgan ziyaret edilen her sayfayı anlık olarak yakalayacaktır.


Bu saldırı için atak vektörü olarak Cain&Abel' de kullanılabilir. 172.16.10.50 IP adresli saldırgan bilgisayar bir Windows host ile değiştirilip Cain&Abel Programı windows host üzerinde çalıştırılabilir.

1) Sniffer çalıştırılır. Sniffer menüsü altında uygun IP bloğu (bu senaryo için 172.16.10.0-255)seçilerek canlı cihazlar taratılır.

2) Sol alt tarafta bulunan ARP menüsünde (+) işaretine tıklanır ve zehirlenmek istenen hedef IP adresleri işaretlenir . Bu senaryo için 10 ve 100 IP adresli cihazlar seçilmiştir.


3) Üst menüde bulunan Start/Stop Arp simgesine tıklanarak Arp poisoning başlatılmış olur.


4) Hedef kullanıcı web sayfasına erişip giriş yapmaya çalıştığında bilgileri Cain&Abel tarafından yakalınır ve alt menüde bulunan Passwords bölümünde listelenir.


ARP Poisoning Önleme Yöntemleri
  • Subnetting : Networkü küçük Vlan'lere bölmek ve yetkili kullanıcıları dış ortamdan soyutlamak arp poisoning saldırısının yüzeyini azaltmaktadır.
  • Encryption: Network üzerinde akan trafik şifrelenirse paketler ele geçirilse dahi okunamadığı için işe yaramayacaktır.
  • Static ARP : Arp tablosunun statik olarak doldurulması arp anonslarına ihtiyacı ortadan kaldıracağı için bu saldırı önlenmiş olur ancak büyük networkler için uygulanabilirliği düşüktür.
  • İç networkte IDS(Intrusion Detection System) veya ARP Wathcher kullanarak sistemi gözlemlemek. Örneğin ArpON ve Arpalert gibi açık kaynak kodlu araçlar kullanılarak ARP protokolünün güvenli bir şekilde çalışması sağlanmış olur.
  • Network firmaları tarafından satılan ürünlerde ARP security veya Dynamic ARP Inspection özellikleri aktif hale getirilerek saldırı önlenebilir.

Bu makale İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü öğrencisi stajyerimiz Cemal Türkoğlu tarafından geliştirilmiştir.