Responder

1 Responder Nedir?

Responder, Python ile yazılmış, açık kaynak kodlu, GPL 3 lisanslı bir araçtır. Aracın en temel amacı LLMNR Poisoning, NBT-NS Poisoning ve mDNS Poisoning atak vektörlerinde kullanılmaktır. Aracımızın kullanımı son derece basit olmakla birlikte bu tarz ataklarda hayat kurtarmaktadır. Aracımız Trustware firmasının Spyder Labs ekibindeki Laurent Gaffie tarafından geliştirilmiştir. Aracımız her ne kadar LLMNR, NBT-NS ve MDNS Poisoning atak vektörlerinde kullanılsa da daha farklı senaryolarda da kullanılabilir. Bunun sebebi aracımızı DNS Server, FTP Auth. Server, IMAP Auth. Server, LDAP Auth. Server vs. olarak kullanabiliyor olmamız. Örneğin aracımızı bir DNS Server şeklinde inşa ettiğimiz takdirde ARP Spoofing atak vektöründen de konuşabiliyor olacağız. Aracımızın detaylı kullanımından bahsetmeden önce nasıl kurulduğuna ve LLMNR Poisoning, NBT-NS Poisoning atak vektörlerinden kısaca bahsedelim.

2 Bağımlılıklar ve Kurulum

Aracımızın kurulumu bir hayli kolay. Python ile yazıldığından Python haricinde hiçbir bağımlılığa ihtiyaç duymamaktadır. Aracımızı Resmi GitHub Repo’sundan git clone ile çekerek kullanmaya doğrudan başlayabiliriz. Bunun için aşağıdaki komutu çalıştırıyoruz.

git clone https://github.com/SpiderLabs/Responder

Ardından aracımızın bulunduğu dizine gidiyoruz. Bundan sonrasında python Responder.py komutu ile aracımızı çalıştırabiliriz. Aracımızın sıkıntısız bir şekilde yüklenip yüklenmediğini anlamak adına hemen help komutunu çalıştıralım. Bunun için aşağıdaki komutu yazıyoruz.

python Responder.py –h

Responder

Ekran aşağıya doğru uzayıp gidiyor. Aracımızın çalıştığını görmüş olduk. Bu ekrana daha sonra tekrar döneceğiz.

3 LLMNR / NBT-NS / mDNS Poisoning Nedir?

LLMNR ile NBT-NS genellikle bir arada anılan terimlerdir. LLMNR yani Link Local Multicast Name Resolution istemcilerin komşu bilgisayarlarının adını tanımlamaları için geliştirilmiş bir protokoldür. Her ne kadar ilk bakışta DNS’e benzer bir protokol olsa da DNS’e bir alternatif olarak üretilmemiştir. Genellikle DNS çözümlemesinin mümkün olmadığı yerlerde kullanılmaktadır ancak DNS ile beraber de kullanılabilmektedir.

NBT-NS yani namı diğer NetBIOS Name Service ise yerel ağdaki sistemleri NetBIOS adlarıyla tanımlar.

mDNS yani name diğer Multicast DNS ise DNS sunucusunun olmadığı noktalarda yine isim çözümlemesi görevi üstlenmektedir.

Kafanızda LLMNR Poisoning hakkında bir takım senaryolar gelmiş olmalı. Eğer DNS’in nasıl çalıştığını biliyorsanız bunu tahmin etmesi çok zor olmayacaktır. LLMNR isim çözümlemesi yapan bir protokol olduğuna göre LLMNR Poisoning atak vektörü hakkında konuşabilmemiz için hedef sistem ile aynı ağda olmamız gerekmektedir. LLMNR Poisoning atak vektörünü MITM saldırısına benzetebiliriz. Saldırıyı bir görsel üzerinden anlatalım.

Responder

Yukarıda normal bir kullanıcı \\printserver’a bağlanmaya çalışmakta. \\printserver’ın isim çözümlemesini yapmak için DNS’e gitmekte. DNS yerine LLMNR veya mDNS’e de gidebilirdi. DNS \\printserver’ın adını bilmediğini söylüyor. Kullanıcı ise bunun üzerine bulunduğu ağa \\printserver’ı tanıyan var mı diye soruyor. Tam olarak bu noktada saldırganımız devreye giriyor ve \\printserver’ı tanıdığını söylüyor. Bunun üzerine kullanıcı, saldırganımıza kimlik bilgilerini teslim ediyor. Elde ettiğimiz bilgiler çoğunlukla şifelenmiş bilgiler olsa dahi gerçek hayatta bunları kırmak çokta zor olmuyor.

4 Aracın Kullanımı

Şimdi tekrar Responder aracımıza dönelim ve LLMNR Poisoning atak vektörünün sömürü aşamalarını uygulamalı olarak anlatalım. Ben Responder aracını Ubuntu üzerinde kullanmaktayım. Doküman boyunca tüm örnekler Ubuntu üzerinden yapılacaktır. Help ekranımıza tekrar dönelim. Aracımız bizim için örnek bir kullanım şekli göstermiş.

Responder

Tam olarak bu noktada LLMNR protokolünün UDP/5355, NBT-NS protokolünün ise UDP/137 portunda çalıştığını belirteyim. Aracımızın gösterdiği örnek kullanımda -I parametresi ile dinlemek istediğimiz Interface’i, -w parametresi ile WPAD Proxy sunucusunu başlatır, -r parametresi ile NetBIOS’un wredir sorgularına cevap verir, -f parametresi ise bilgisayarların parmak izlerini izlememizi sağlar. Bu seçenek sayesinde sistem hakkında biraz daha fazla bilgi toplamış oluyoruz. WPAD Proxy dedik NetBIOS wredir sorgusu dedik. Peki bunlar nedir?

Kısaca bahsetmek gerekirse WPAD Proxy Server, internete erişirken kullanmış olduğumuz Proxy (Vekil) sunucunun adresini ayarlayabilmek amacıyla kullanılır.

Kısaca wredir sorgularından da bahsedelim. Wredir sorguları NetBIOS’un domain’e döndüğü cevaplardır. Konudan fazla sapmamak adına Responder aracımız ile hemen ağı dinlemeye başlayalım. Bunun için aşağıdaki komutu çalıştırmamız yeterli.

python Responder.py -i 192.168.1.108 -I wifi0

Burada ekstradan -i parametresi ile IP adresimizi belirttik. Aşağıdaki gibi bir ekran görüntüsü ile karşılaşmalıyız.

Responder

En aşağıda aracımızın olayları izlediğine dair “Listening for events…” ibaresini görüyoruz. Aracımız sıkıntısız bir şekilde çalışıyor. Üstünde aracımızın nasıl başlatıldığı ile alakalı bir takım bilgiler yer almakta. En üstte Poisoners sekmesine bakıyoruz.

Responder

Aracımız LLMNR, NBT-NS ve mDNS zehirlemelerine hazır durumda ve bulunduğu ağı dinlemekte. Senaryomuza geçmeden önce hemen aracımızın konfigürasyon dosyasından da kısaca bahsetmek istiyorum. Aracımızın kurulu olduğu dizin altında Responder.conf adında bir dosya bulunmaktadır. İçeriği aşağıdaki şekildedir.

Responder

Bu dosya aşağıya doğru uzayıp gitmektedir. Bu dosyada varsayılan olarak başlatılacak sunuculardan tutun da kullanılacak olan HTTP SSL sertifikalarına kadar pek çok farklı ayarı senaryonuza göre kişiselleştirmeniz mümkün. Örnek olarak ben başlangıçta POP sunucusunu başlatmak istemiyorsam aşağıdaki satırı POP = Off şeklinde düzenlemem gerekmekte.

Responder

Bir başka örnek konfigürasyon dosyamızın en altında kullanılacak olan HTTP SSL sertifikalarının yolunu görmekteyim.

Responder

Ayarlarda dilediğim şekilde değişiklik yapabilmekteyim. Bu noktada şöyle bir not düşeyim. Normal şartlarda örneklerimi Ubuntu üzerinden yapacaktım lakin 445 numaralı portumun başka bir servis tarafından kullanıldığını gördüm. Kurcalamak istemediğimden dolayı örneklerime Parrot OS üzerinden devam ediyorum. Parrot OS’ta Responder aracımız ön tanımlı bir şekilde kullanıma hazır olarak geliyor. Test ortamı olarak ise hazırlamış olduğum Windows Server 2016’yı kullanacağım. Konuyu daha fazla dağıtmadan hemen test ortamımda \\deneme-adres ortamına erişmeye çalışıyorum.

Responder

Gördüğünüz üzere Windows bu paylaşıma erişemiyor çünkü böyle bir paylaşım mevcut değil. Tam bu noktada LLMNR’ın çalışma mantığını anlatan şema aklınıza gelsin. Kullanıcı \\deneme-adres’e istekte bulundu. LLMNR / DNS adresi var olmadığından dolayı çözümleyemedi. Bunun üzerine kullanıcı adresi ağdaki diğer kullanıcılara sordu. Tam bu noktada saldırganımız devreye girdi ve Responder aracı ile \\deneme-adres bende mevcut, bağlanabilirsin dedi. Bunun üzerine kullanıcı saldırganımıza kimlik bilgilerini iletti. Hemen Responder aracımıza dönelim.

Responder

Görmüş olduğumuz üzere kullanıcı bize kimlik bilgilerini teslim etmiş. Kullanıcının IP adresi, kullanıcı adı ve NTLMv2 algoritması ile Hash’lenmiş parola verisi artık elimizde. Takdir edersiniz ki günlük hayatta var olmayan bir dizine erişim isteği yapmamız oldukça muhtemel. Bu çoğunlukla “acaba böyle bir dosya var mı?” merakından değil de yazım hatalarından kaynaklanır.

Responder aracı elde ettiği bilgileri bir log dosyasına yazar. Bu dosya Parrot OS’ta /usr/share/responder/logs dizini altında bulunmaktadır. Diğer işletim sistemleri için ~/Responder/logs dizini altında olacaktır. Hemen az önceki örneğimizde oluşturulan log dosyasının içeriğine bakalım.

Responder

Görmüş olduğunuz gibi log dosyasına elde ettiği Hash değerini olduğu gibi yazdırmış. Log dosyaları (Modül_Adı)-(Hash_Türü)-(İstemci_IP).txt şeklinde bir format ile kaydedilir. NTLMv2’yi kırmanın birden fazla yolu mevcut. En çok bilinen ve şifre kırma konuları söz konusu olunca hemen aklımıza gelen iki araç sayesinde elde ettiğimiz NTLMv2 Hash’i kırmayı deneyelim. Bu araçlar John The Ripper ve HashCat. Bu senaryo için real life’a biraz daha yakın olması açısından çok karmaşık olmayan fakat bir noktada güçlü bir parola kullanılmıştır. Doğal olarak araçlarımız parolamızı kıramayacaktır. Bunun sebebi Hash değerlerinin geri döndürülemez değerler olmasıdır. Zaten araçlarımız da Hash değerini kırmak için Brute Force yöntemine başvurmaktadır. John The Ripper aracının bu senaryodaki kullanımı için komut aşağıdaki şekildedir;

john –format=netntlmv2 dosyaAdi.txt

HashCat aracımızın bu senaryodaki kullanımı için ise komut aşağıdaki şekildedir;

hashcat -m 5600 -a 3 dosyaAdi.txt

Kullandığımız her araçta olduğu gibi bu aracımızda da arka planda ne olup ne bittiğini anlamak amacıyla -v veya –verbose parametreleri kullanılabilir. Aracımızın versiyon numarasını öğrenmek için –version parametresini kullanabiliriz. Alacağımız çıktı aşağıdaki gibi olmalı.

Responder

Responder’ın belli başlı diğer parametrelerinden de biraz bahsedelim. -F veya –ForceWpadAuth parametresi ile wpad.dat dosyası aracılığı ile NTLM kimlik doğrulamasını zorunlu kılabilirsiniz. -b veya –basic parametresi ile istemciye temel bir HTTP kimlik doğrulaması döndürmüş oluruz. -d veya –NBTNSdomain parametresi ile NetBIOS sorgularına cevap döndürmeyi etkinleştirir.

Atak vektörümüzü gerçekleştirirken WireShark aracılığı ile ağı izlediğimiz takdirde her adımı daha net bir şekilde görebiliriz.

Responder

5 Zafiyetin Giderilmesi

Zafiyeti kapatma noktasında LLMNR ve NBT-NS protokollerinin devre dışı bırakılması en iyi çözüm olacaktır. LLMNR’ı devre dışı bırakmak için gpedit.msc’yi açıyoruz. Ardından Computer Configuration sekmesinin altındaki Administrative Templates sekmesinin altındaki Network sekmesinin altındaki DNS Client sekmesini açıyoruz.

Responder

Turn off multicast name resolution” seçeneğini tıklıyoruz ve Policy Setting diyoruz. Ardından Enabled seçeneğini seçmemiz yeterli.

Responder

NBT-NS protokolünü devre dışı bırakmak için ise Ağ ayarlarımıza geliyoruz ve tıpkı DNS adreslerini değiştirirken yaptığımız gibi Internet Protocol Version 4 (TCP/IPv4) sekmesini açıyoruz. Gelişmiş seçeneklere geliyoruz ve NetBIOS’u disabled yapıyoruz.

Dokümanı burada noktalarken aracı daha detaylı öğrenmek isteyenler için resmi GitHub Repo’sunu buraya bırakıyorum.

https://github.com/SpiderLabs/Responder

Blog postu ile ilgili bir sorunuz varsa bizimle iletişime geçebilirsiniz.

Mehmet Ayberk ANNADINÇ

Size nasıl yardımcı olalım?

İhtiyacınız olan her an Prisma danışmanları yanı başınızda. Bizimle 7/24 iletişime geçebilirsiniz.


    Sızma testi hizmetlerimizi incelediniz mi?