Man In The Middle Attack ve ARP Spoofing, ICMP Redirect Saldırıları

Man In The Mıddle Attack Nedir?

Man In The Mıddle Attack, Türkçe karşılığı olarak Ortadaki Adam Saldırısı veya Aradaki Adam Saldırısı, bir ağ içerisinde hedef ile ağ unsurları (sunucu, switch, router ya da modem) arasında geçen trafiği dinlemek, değiştirmek olarak tanımlanan saldırı türüdür. MITM Saldırıları OSI Modeli içerisinde 2. Katman (Layer 2 – Data Link) içerisinde gerçekleştirildiği için, saldırgan başarılı olduktan sonra tüm trafiğe hakim olabilmektedir. Bu hakimiyet şifreli olan “https” trafiğinden şifresiz trafiğe kadar sınırsızdır. Başarılı bir MITM Saldırısı devamında saldırganın yapabileceği işlemler tamamen bilgi, beceri ve hayal gücüne kalmıştır. Ağ Güvenliği konusunda oldukça bilinen bir saldırı türü olmasıyla beraber koruma önlemi en az alınan saldırı türü özelliğine de sahiptir.
Ortadaki Adam Saldırısı hakkındaki ayırımları aşağıda listelenmiştir.
Yerel Ağ Üzerinde Yapılabilecek Saldırılar
  • ARP Poisoning (ARP Zehirlenmesi)
  • DNS Spoofing (DNS Önbellek Zehirlenmesi, Aldatma)
  • Port Stealing
  • STP Mangling
Yerel Ağdan Uzak Ağa Gateway Aracılığıyla Yapılabilecek Saldırılar
  • ARP Poisoning (ARP Zehirlenmesi)
  • DNS Spoofing (DNS Önbellek Zehirlenmesi, Aldatma)
  • DHCP Spoofing (DHCP Aldatma)
  • ICMP Redirection
  • IRDP Spoofing
  • Route Mangling
Uzak Ağ Üzerinde Yapılabilecek Saldırılar
  • DNS Poisoning (DNS Zehirlenmesi)
  • Traffiec Tunneling
  • Route Mangling

ARP Nedir?

Bilgisayar ağları içerisinde bilgisayarların haberleşebilmesi için iki adet adres bilgisine sahip olmaları gerekmektedir. Birinci adres bilgisi, Fiziksel MAC Adresidir. İkinci adres bilgisi ise Mantıksal IP Adresidir.
LAN yapısı içerisinde kullanılan Anahtarlama (Switch) Cihazları üzerinden geçen trafiği yönlendirmek için ağa bağlı bilgisayarların Fiziksel MAC Adresi bilgisini kullanır ve bu adres bilgisine göre trafiği yönlendirir.
Bilgisayarlar ağ içerisinde ARP Protokolü (Adres Çözümleme Protokolü – Address Resolution Protocol) çözümleme mekanizmasını kullanılarak Mantıksal IP Adresini bildiği bir bilgisayarın Fiziksel MAC Adresini ARP Tablosu üzerinden öğrenir. Bu adres bilgileri ile bilgisayarlar ağ içerisinde birbirleriyle haberleşebilir. Kısacası ARP ağ içerisinde Fiziksel MAC Adresi ile Mantıksal IP Adresi arasındaki bağlantıyı sağlar.

ARP Protokolünün İşleyisi

İşleyişi anlayabilmek için iki temel maddeyi bilinmesinde fayda vardır.
  • ARP protokolünde iki farklı paket vardır. Bunlar, ARP Request ve ARP Reply paketleridir.
  • ARP Tablosu (ARP Önbelleği) ağ içerisinde haberleşmek istediği bilgisayarların ve ağ cihazlarının IP Adresi ve MAC Adresi bilgilerinin tutulduğu önbellektir.
Bilgisayarların ağ içerisinde birbirleri ile haberleşebilmesi için Fiziksel MAC Adresi bilgisine sahip olması gerektiği yukarıda belirtilmişti. Bir bilgisayar ağa bağlandığında haberleşmek istediği bilgisayarın IP Adresini biliyor ancak MAC Adresini bilmiyorsa öncelikle ARP Tablosuna bakar. Eğer haberleşmek istenen bilgisayarın MAC Adresi ARP Tablosunda yok ise, bilgisayar tüm ağ içerisine ARP Request paketi gönderir. Bu paket “broadcast” türünde bir pakettir ve Paketin tüm ağa ulaşabilmesi için Hedef MAC Adresi kısmı FF:FF:FF:FF:FF şeklindedir.
C:UserskullaniciDesktopARP.png
ARP Request paketini alan bilgisayarlar Hedef IP Adresi ile kendi IP Adresini karşılaştırır. Eğer uyuşmuyorsa pakete cevap vermez. Ancak söz konusu ARP İsteği paketi gönderen bilgisayarın IP Adresi ve MAC Adresi bilgilerini kendi ARP Tablolarına “Dinamik Kayıt” olarak eklerler.
Yukarıdaki şekilde BGAPC-1 bilgisayarı BGANET isimli ağ cihazı ile haberleşmek istemektedir. Bu noktadan sonra BGAPC-2 ve BGAPC3 isimli bilgisayarlar BGAPC-1 bilgisayarının gönderdiği ARP İsteği paketindeki bilgileri (BGAPC1 Mantıksal IP Adresi ve Fiziksel MAC Adresi) kendi ARP Tablolarına sonradan kullanmak üzere eklerler.
BGANET kendisine gelen paketteki IP Adresi ile kendi IP Adresinin aynı olduğunu gördükten sonra, BGAPC-1 isimli bilgisayara ARP Cevap paketi gönderir. Gönderilen ARP Cevap Paketi  “unicast” türünde bir pakettir. BGANET gönderdiği ARP Cevap Paketi içerisine kendi MAC Adresini (BGAPC-1 bilgisayarının öğrenmek istediği) ekler.
C:UserskullaniciDesktopARP2.png
BGAPC-1 kendisine gelen unicast paket olan ARP Cevap paketini alır ve içerisinde bulunan BGANET’a ait MAC Adresini kendi ARP Tablosuna ekler.
Artık her iki cihaz birbiri ile ağ içerisinde haberleşebilmektedir. Haberleşmek için unicast paketler kullanıldığı için ağ içerisinde bulunan diğer cihazlar haberleşmeyi dinleyemez, göremez ve değiştiremez.
ARP SPOOFING
ARP Spoofing, bir diğer adıyla ARP Zehirlenmesi. Saldırganlar ağ içerisinde IP ve MAC Adresleri eşleştirmelerine müdahale ederek ağ cihazı ile bilgisayarların arasına girmesi olarak tanımlanabilir. Yukarıda ağ içerisinde bilgisayarın haberleşebilmesi için öncelikli olarak ARP protokolünü kullandığından bahsedilmişti. Eğer saldırgan ağ içerisinde hedefin ve ağ cihazının ARP tablolarını zehirleyebilirse, yani kendi MAC Adresini hedef bilgisayarın tablosuna “Ağ Cihazı MAC Adresi” olarak, ağ cihazı ARP tablosuna ise “Hedef Bilgisayar MAC Adresi” olarak yazdırırsa, araya girmiş olur. Bu durumda hedef bilgisayar ile ağ cihazı arasında bulunana trafik saldırganın üzerinden geçer. Saldırgan bu trafiği dinleyebilir ve değiştirebilir.
Bir ağ içerisine ARP Spoofing’in nasıl yapıldığına ilerleyen başlıklarda değinilmiştir
IP Forwarding
Test için kullanacağımız işletim sistemi Kali Linux, yapısı gereği ağdaki başka bilgisayarlar için gelen paketleri düşürür. Bu durumda MITM testi gerçekleştirilemez, burada devreye IP Forwarding (IP Yönlendirme) girer.
IP Yönlendirme ağ içerisinde IP paketlerinin bir ağ ara yüzünden bir diğerine yönlendirme işlemidir ve MITM testi için öncelikle IP Yönlendirmenin aktif edilmesi gerekmektedir. Linux çekirdeği IP Yönlendirme işlemi için tüm altyapı içerisinde barındırır ve aktif hale getirilmesi çok kolaydır.
IP Yönlendirme durumunu öğrenebilmek için terminalde aşağıdaki komut çalıştırılır.
cat /proc/sys/net/ipv4/ip_forward
Eğer dönen değer 0 (sıfır) ise IP Yönlendirme aktif değildir. Aktif etmek için aşağıdaki komutu çalıştırılır.
echo 1 > /proc/sys/net/ipv4/ip_forward
Artık IP yönlendirme sistem üzerinde açıktır ve çalışmaya başlamıştır.

ARP Spoofing İşlemleri
Kali Linux ile beraber gelen “arpspoof” aracı ile ağ cihazı ve kurban arasına girilebilir. “arpspoof” aracı ağ içerisinde istenilen ARP paketlerini oluşturarak, hedefe gönderir ve hedefin ARP tablosunu zehirlemeye çalışır.
İşlemlere başlamadan önce hedef bilgisayardan alınmış olan ARP Tablosu aşağıdaki ekran görüntüsünde bulunmaktadır.
C:UserskullaniciDesktopmmmmmmarp.png
“arpspoof” aracı aşağıdaki gibi komutlar ile kullanılabilir. Hedef IP adresinin sonuna/24 eklenerek ağa bağlı tüm bilgisayarların ARP Tablosu zehirlenebilir. Yazı içerisinde sadece bir bilgisayar ile ağ cihazı arasına girilmiştir.
Öncelikle hedefin ARP tablosunu zehirlenecektir, bunun için aşağıdaki komut kullanılmıştır.
arpspoof -i [AĞ ARAYÜZÜ] -t [HEDEF IP] [AĞ CİHAZI IP]
Yukarıdaki komut çalıştırıldığında hedef bilgisayarın ARP tablosunu zehirlemek için sürekli olarak ARP REPLY paketleri hedefe gönderilmektedir. Aşağıda ilgili ekran görüntüsü bulunmaktadır.
C:UserskullaniciDesktopmmmmmmarpspoof-1.png
Ardından ağ cihazının ARP tablosunu zehirlenir, bunun için aşağıdaki komut kullanılır.
arpspoof -i [AĞ ARAYÜZÜ] -t [AĞ CİHAZI IP] [HEDEF IP]
C:UserskullaniciDesktopmmmmmmarpspoof-2.png
Yukarıdaki komut çalıştırıldığında ağ cihazının ARP tablosunu zehirlemek için sürekli olarak ARP REPLY paketleri hedefe gönderilmektedir.
ARP REPLY paketleri gönderilerek ağ cihazı ile hedef bilgisayar arasına girilir. Aşağıdaki ekran görüntüsü hedef bilgisayar üzerinden alınmıştır ve saldırgan MAC adresi ARP tablosuna yazılmıştır. Yani, hedef bilgisayarın ARP tablosu zehirlenmiştir.
C:UserskullaniciDesktopmmmmmmspoofed.png
Artık saldırgan hedef bilgisayar ile ağ cihazının arasına girmiş bulunmaktadır. Hedef ile ağ cihazı arasındaki trafik saldırganın üzerinden geçmektedir ve saldırgan bu akan trafiği dinleyebilir, değiştirebilir.
Örnek olarak trafiğin dinlenmesi üzerine aşağıda iki örnek verilmiştir.
Urlsnarf İle Trafik Dinleme
Kali Linux üzerinde kurulum ile beraber gelen “urlsnarf” aracı ile hedefin istekte bulunduğu trafik dinlenebilir. Bunun için kullanılacak olan komut aşağıda bulunmaktadır.
urlsnarf –i [AĞ ARAYÜZÜ]
Aşağıda dinlenen trafiğe örnek ekran görüntüsü bulunmaktadır.
C:UserskullaniciDesktopmmmmmmScreenshot%20from%202014-12-28%2014_48_43.png
Driftnet İle Trafikteki Resimleri Çekme
Kali Linux kurulumu ile beraber gelen “driftnet” aracı, ARP Spoofing ile MITM saldırısı gerçekleştirilmiş ortamlarda kurbanın tarayıcısında istekte bulunduğu sayfalarda bulunan resimleri çeker. Aşağıdaki komut ile çalıştırılır.
driftnet -i [AĞ ARAYÜZÜ]
Aşağıda driftnet ile kurbanın istekte bulunduğu sayfalarda bulunan resimler çekilmiştir.
C:UserskullaniciDesktopmmmmmmdriftner.png
Akan trafik üzerinden okunarak alınan bu resimleri kayıt etmek istenirse, üzerine bir kez tıklamak yeterlidir, araç istenen resimleri “/tmp” klasörü altına kayıt edecektir.
ICMP REDIRECT
ICMP, Internet Kontrol Mesaj İletişim Kuralı, TCP/IP protokolünde hataları raporlamak ve kontrol etmek için kullanılan protokoldür. IP ile ICMP aynı düzeyde olmalarına rağmen IP hatayı raporlama ve düzeltme mekanizmasına sahip değildir. Bu yüzden hata düzeltme ve raporlama durumlarında ICMP kullanılır. ICMP Redirect; ağ içerisinde bulunan bilgisayarların iletişimi sırasında fazladan yol almalarına engel olmak için gönderilen mesajlardır. Örneğin yönlendiriciye gelen ağ paketi geldiği ağ ara yüzü üzerinden geri donuyorsa bu fazladan yol almaktır. Bu paketin yönlendiriciye gelmesine gerek yoktur iste bu durumda ICMP Redirect mesajı ile paketin kaynağına bilgi verilir ve gönderdiği paketi direkt olarak erişmesini istediği bilgisayara göndermesi istenir.
ICMP Redirect Saldırıları
Yukarıda açıklandığı gibi paketlerin ağ içerisinde fazla yol almamaları için yayınlanan ICMP Redirect mesajları saldırı amacıyla saldırganlar tarafından trafiğini üzerlerine almak için kullanılabilir. Test ortamında 3 adet bilgisayar ağ içerisinde konumlandırılmıştır. Senaryoya göre BGA1 ve BGA2 isimli bilgisayarlar NetCat ile mesajlaşmaktadır ve BGA3 isimli bilgisayar trafiği dinleyememektedir. Trafiği dinleyebilmek için BGA3 isimli bilgisayar BGA1 isimli bilgisayara ICMP Redirect mesajları gönderip trafiği okumayı hedeflemektedir. Aşağıda test ortamındaki bilgisayarların bilgileri verilmiştir.
BGA1 (MESAJ GÖNDEREN)
BGA2 (MESAJ ALAN)
BGA3 (SALDIRGAN)
192.168.56.104
192.168.56.108
192.168.56.102

Öncelikle saldırgan bilgisayar üzerinde IP yönlendirme açılmalıdır. Eğer açılmazsa paketler saldırgan üzerinden hedefe gönderilemez. IP yönlendirmenin açılması için aşağıdaki komut kullanılabilir.
$ echo 1 > /proc/sys/net/ipv4/ip_forward
Mesaj almak isteyen bilgisayar BGA2 dinleme moduna geçmelidir. Aşağıdaki komut ile 1234 numaralı port üzerinde dinleme moduna geçirilir.
$ nc -lvp 1234
Mesaj göndermek isteyen bilgisayar BGA1 bağlantı isteğini göndermeli ve bağlanmalıdır. Aşağıdaki komut ile mesajın gönderileceği bilgisayarın 1234 numaralı portuna bağlanılır.
$ nc 192.168.56.108 1234
Bağlantı sağlandıktan sonra ilk mesaj olan “BGA TEST MESSAGE 1” mesajı hedef bilgisayar üzerinden gönderilir ve alınır. Bu noktada saldırgan bilgisayar BGA3, herhangi bir mesajı okuyamamaktadır.
F:Screenshot - 25-01-2015 - 19:18:17.png
Mesajların okunabilmesi için bağlantının arasına girilmesi gerekmektedir. Bunun için saldırgan bilgisayar üzerinde “SING” isimli araç kullanılarak ICMP Redirect mesajı aşağıdaki komut kullanılarak gönderilmiştir.
$ sing -red -S [MESAJ ALAN IP] -gw [SALDIRGAN IP] -dest [MESAJ ALAN IP] -x host -prot tcp -psrc 100 -pdst 90 [MESAJ GONDEREN IP]
Aşağıda ICMP Redirect mesajının gönderilmesi ile ilgili Wireshark ekran görüntüsü verilmiştir.
C:UserskullaniciDesktopwireshark.png
ICMP Redirect mesajı gönderildikten sonra saldırgan aradan gecen mesajları okuyabilecektir. Bunun için “tcpdump” isimli araç ile trafik dinlenmiştir ve aşağıda ilgili komut verilmiştir.
$ tcpdump -A -i eth0 -l -n
Aşağıdaki ekran görüntüsünden anlaşılacağı üzere “BGA TEST MESSAGE 3” mesajı okunabilmiştir.
C:UserskullaniciDesktoptcpdump.png