Llmnr zehirlenmesi zafiyetinde saldırgan kullanıcı adı ve şifrelerin yerel ağda basit bir şekilde kendisine vermesini bekler. Llmnr ve nbt-ns görünüşte zararsız bir bileşen olarak görünür ancak aynı sub-netteki makinelerin dns zarar gördüğünde hostu tanımak için birbirlerine yarım etmesini sağlar. Bir makine özel bir hostu çözümlemeye çalışırken DNS çözümü başarısız olduğunda, makine yerel ağdaki diğer makinelere doğru adresi sormak için llmnr veya ntb-ns protokolleri üzerinden istekte bulunur. Bu zararsız bir teori gibi görünür ancak büyük bir güvenlik açığı ile saldırganlar bir sistemde tam erişim sağlamak için kullanabilirler.
Güvenlik Açığının Gerçekleşmesi
Bir saldırgan LLMNR protokolünün UDP/5355 portu veya NBT-NS UDP/137 portu üzerinden yapılan broadcast yayının ve cevabını dinleyebilir. Bu şekilde saldırgan talep edilen hostun adresini öğrenmiş olur.
Örnek bir saldırıyı ifade alacak olursak:
Örnek bir saldırıyı ifade alacak olursak:
- Kurbanın makinesi \\printserver a bağlanmak isterken yanlışlıkla \\pintserver yazar.
- DNS sunucusu cevap olarak kurbana böyle bir hostu bulamadığı yanıtını verir.
- Kurban yerel ağındaki diğer makinelere \\pintserver in adresini bilen varmı diye sorar.
- Saldırgan yanıt olarak kurbana \\pintserver in adresini verir.
- Kurban saldırgana inanır ve saldırgana kendi kullanıcı adını ve NTMLv2 ‘sinin hashini verir.
- Saldırgan hashi kırarak şifreyi öğrenir.
Nasıl Exploit Edilir?
Bu açığı exploit etmek için responder isimli yazılımdan faydalanabiliriz. (GitHub - SpiderLabs/Responder: Responder is a LLMNR, NBT-NS and MDNS poisoner, with built-in HTTP/SMB/MSSQL/FTP/LDAP rogue authentication server supporting NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP and Basic HTTP authentication.)
Exploit için yapılması gerekenler
- Responder isimli yazılım indirilir. git clone
GitHub - SpiderLabs/Responder: Responder is a LLMNR, NBT-NS and MDNS poisoner, with built-in HTTP/SMB/MSSQL/FTP/LDAP rogue authentication server supporting NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP and Basic HTTP authentication.
Responder is a LLMNR, NBT-NS and MDNS poisoner, with built-in HTTP/SMB/MSSQL/FTP/LDAP rogue authentication server supporting NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP and Basic HTTP authenticat...github.com - Responder’in yardım menüsü çalıştırılır. Python Responder.py -hUygulama için birkaç zorunlu seçenek.-i [IP] : saldırganın ip adresi
-b [0/1]: Basit HTTP kimlik doğrulaması için 1 veya NTLM kimlik doğrulaması için 0 ayarlanmalıdır.Bunlara ek olarak, zehirleme için birçok araç mevcuttur. http, https, smb, sql, ftp, ldap, dns, vb …
Şimdi yukarıdaki örnek saldırıyı gerçekleyelim.
- İlk olarak, 192.168.1.77 ip’li saldırgan responder’i “python Responder.py -i 192.168.1.77 -b 0” komutu ile başlatacaktır. #python Responder.py -i 192.168.1.77 -b 0
NBT Name Service/LLMNR Answerer 1.0.
To kill this script hit CRTL-C[+]NBT-NS & LLMNR responder started
Global Parameters set
Challenge set is: 1122334455667788
WPAD Proxy Server is:On
HTTP Server is:ON
SMB Server is:ON
SQL Server is:ON
FTP Server is:ON
DNS Server is:ON
LDAP Server is:ON
FingerPrint Module is:OFF - Kurban 192.168.1.74 ip’si ile mevcut olmayan \\pintserver’a bağlanmayı deneyecektir.
- Kurban yerel ağındaki diğer makinelere \\pintserver in adresini bilen varmı diye soracaktır.
- Saldırgan bildiğini söyleyerek yanıtlar.
- Kurban da kendi kimlik bilgilerini saldırgana yollar.
- LLMNR poisoned answer sent to this IP: 192.168.1.74. The requested name was : pintserver.
[+]SMB-NTLMv2 hash captured from : 192.168.1.74
Domain is : WORKGROUP
User is : meminoglu
[+]SMB complete hash is : testuser::WORKGROUP: - Responder programı kimlik bilgilerini yerel dizindeki SMB-NTLMv2-Client-192.168.1.74.txt adlı dosyada depolar.
- Saldırgan John The Ripper programını şifreyi kırmak için “john SMB-NTLMv2-Client-192.168.1.74.txt” komutu ile çalıştırır.
- John The Ripper ile şifre bulunmuş olunur.#john SMB-NTLMv2-Client-192.168.1.74.txt
Loaded 1 password hash (NTLMv2 C/R MD4 HMAC-MD5 [32/64])
ŞİFRE (testuser)
guesses: 1 time: 0:00:00:00 DONE (Tue Nov 12 15:56:46 2013) c/s: 114620 trying: 123456 – crawford
NOT: john The Ripper bir şifre kırma programıdır. Hash’li şifreyi kırmak için yerine alternatif programlar kullanılabilir.
Nasıl Önüne Geçilir?
- Zafiyeti engellemek için llmnr ve nbt-ns protokollerini aynı anda devre dışı bırakmak gerekmektedir. Sadece llmnr’yi devre dışı bırakırsak nbt-ns otomatik olarak devreye girer.
- Ortak vlan iletişimini önlemek gerekir. Aynı ağdaki makinelerin birbirleri ile iletişimini sınırlamak büyük ölçüde yerel ağ saldırılarının başarısını azaltır.
- Sınırlı sayıda kullanıcı hesabı kullanmak gerekir. Bunu yapmak saldırıyı engellemek anlamına gelmez, ancak başarılı bir saldırının vereceği zararı sınırlar ve en azından saldırganın daha çok uğraşmasını sağlar.
Windowsta LLMNR servisini devre dışı bırakmak için:
- Gpedit.msc’yi çalıştırılır.
- Sırasıyla Local Computer Policy -> Computer Configuration -> Administrative Templates -> Network -> DNS Client klasörlerine girilir.
- DNS client klasörünün içinden “Turn Off Multicast Name Resolution” seçeneğine çift tıklanır ve “Enabled” seçeneği seçilir.
NetBIOS Name Servisini devre dışı bırakmak için:
- Denetim masası açılır.
- “Network and Internet” seçeneğinin ardından “View network status and tasks” seçeneğine girilir.
- “Change adapter settings” seçeneğine tıklanır
- “Local area connection” seçeneğine sağ tıklanıp properties seçilir.
- “Internet Protocol Version 4 (TCP/IPv4)” seçeneğine çift tıklandıktan sonra “Advanced” seçeneğine ardından da “WINS” etiketine tıklanır.
- “Disable NetBIOS over TCP/IP” seçeneğine tıklanarak NBT-NS devre dışı bırakılmış olur.
ya da
- regedit.exe çalıştırılır.
- Ardından sırası ile HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces\ sekmelerine girilir.
- ‘0’ olan DWORD değerinin ‘2’ ile değiştirilmesi gerekir.
Eğer değer 0 olur ise default ayalar kalır ve bu sırada DHCP serveri üzerinden NetBIOS kullanılır. DWORD değeri ‘1’ olur ise TCP/IP üzerinden NetBIOS sağlanılmış olur.
KAYNAKLAR
KAYNAKLAR
GitHub - SpiderLabs/Responder: Responder is a LLMNR, NBT-NS and MDNS poisoner, with built-in HTTP/SMB/MSSQL/FTP/LDAP rogue authentication server supporting NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP and Basic HTTP authentication.
Responder is a LLMNR, NBT-NS and MDNS poisoner, with built-in HTTP/SMB/MSSQL/FTP/LDAP rogue authentication server supporting NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP and Basic HTTP authenticat...
github.com
Local Network Vulnerabilities - LLMNR and NBT-NS Poisoning - SureCloud
www.surecloud.com
The Cable Guy - November 2006
technet.microsoft.com
Leading Managed Detection and Response | Trustwave
Trustwave is a leading cybersecurity and managed security services provider focused on managed detection and response.
www.trustwave.com
LLMNR Spoofer
Rapid7's VulnDB is curated repository of vetted computer software exploits and exploitable vulnerabilities.
www.rapid7.com
John the Ripper password cracker
A fast password cracker for Unix, macOS, Windows, DOS, BeOS, and OpenVMS
www.openwall.com
NetBIOS/LLMNR ZEHİRLENMESİ Zafiyeti ve Çözüm Önerileri
“NetBIOS/LLMNR zehirlenmesi nedir?” sorusu sorulmadan önce önce NetBIOS ve LLMNR kavramlarının bilinmesi gerekir.
NetBIOS ve LLMNR Nedir?
LLMNR ve NBT-NS alternatif ana bilgisayar tanımlama yöntemleri olarak çalışan Microsoft Windows bileşenleridir. LLMNR bir yerel ağda DNS zarar gördüğünde makineler için isim çözümlemesini yapan, host tanımalarını sağlayan protokoldür. Aynı zamanda 2014 sonlarına doğru Linux üzerinde de gerekli entegrasyon gerçekleştirilmiştir. Ayrıca hem IPv4 hem de IPv6 adreslerini çözümlemek için kullanılabilir.
NetBIOS ise yerel ağ üzerinden iletişim sağlayan bilgisayarların birbirleri ile iletişim kurmasını sağlar ve isim çözümlemesini gerçekleştirir. Bir protokol değil, API’dır. Bir makineye işletim sistemi kurulduğunda bu makineye ait NetBIOS ismi atanır. “nbtstat” konutu ile cmd ekranında NetBIOS isimlerini ve hizmetlerini görebilirsiniz.
NetBIOS ise yerel ağ üzerinden iletişim sağlayan bilgisayarların birbirleri ile iletişim kurmasını sağlar ve isim çözümlemesini gerçekleştirir. Bir protokol değil, API’dır. Bir makineye işletim sistemi kurulduğunda bu makineye ait NetBIOS ismi atanır. “nbtstat” konutu ile cmd ekranında NetBIOS isimlerini ve hizmetlerini görebilirsiniz.
NetBIOS Hizmetleri
- NetBIOS-NS: İsim kaydı ve isimlerin çözümlenmesi hizmetidir. Sadece IPv4 desteği sunmaktadır.
- NetBIOS-DGM: Bağlantısız iletişim için datagram dağıtım hizmetidir
- NetBIOS-SSN: Bağlantı yönelimli iletişim için oturum hizmetidir
Windows sistemlerde disk üzerindeki yerel, DNS önbelleği, DNS sorguları ve LLMNR protokolü ile bulunamayan alan adlarını çözmek için kullanılır. Broadcast olarak çalışır, bu yüzden IPv6’da çalışmaz sadece IPv4’te çalışır.
NetBIOS/LLMNR Zehirlenmesi Nasıl Yapılır?
Kullanıcı yerel ağdaki komşu makineye bağlanmak için istek attığında öncelikle DNS önbelleğinde sonra hosts dosyasına bakar. Sonuç alamadığında DNS sunucusuna sorgu gönderir. Sorgu olumsuz ise LLMNR sorgusu ve daha sonra NetBios-NS sorgusu yapar. Kurban makine yerel ağda olamayan bir makineye istek yaptığında saldırgan devreye girer. Aslında “Fileserver” sistemine erişmek isteyen kullanıcı yanlışlıkla “Fileeeeserver” sorgusu çalıştırdığı zaman bu yanlış sorgu ağdaki servisleri dinleyen saldırganı harekete geçirir.
Sorgu sonucu dönmeyen sistemde kendini gerçek makineymiş gibi tanıtır. Saldırgan Saldırıyı gerçekleştirmek için farklı araçlar kullanılabilir. Örneğin açık kaynak koda sahip “Responder” uygulamasını kullanarak bu sorgu sırasında kurban makinenin kullanıcı bilgileri ve NTLMv2 Hash değerini yakalamayı hedefler. Ele geçirdiği parola özetini çevrimiçi/çevrimdışı araçlar yardımıyla kırabilir ve parolanın şifrelenmemiş haline ulaşabilir.
Bu zafiyette saldırgan kendi IP adresini ulaşılmak istenen kaynakların adresi olarak göstererek kaynağa ulaşmak isteyen kullanıcıların kullanıcı adı/şifre gibi diğer hassas verilerine erişim sağlar. Yerel admin ya da domain admin oturumunun hash bilgilerini elde ettiğimizi düşünürsek oldukça tehlikelidir.
Sorgu sonucu dönmeyen sistemde kendini gerçek makineymiş gibi tanıtır. Saldırgan Saldırıyı gerçekleştirmek için farklı araçlar kullanılabilir. Örneğin açık kaynak koda sahip “Responder” uygulamasını kullanarak bu sorgu sırasında kurban makinenin kullanıcı bilgileri ve NTLMv2 Hash değerini yakalamayı hedefler. Ele geçirdiği parola özetini çevrimiçi/çevrimdışı araçlar yardımıyla kırabilir ve parolanın şifrelenmemiş haline ulaşabilir.
Bu zafiyette saldırgan kendi IP adresini ulaşılmak istenen kaynakların adresi olarak göstererek kaynağa ulaşmak isteyen kullanıcıların kullanıcı adı/şifre gibi diğer hassas verilerine erişim sağlar. Yerel admin ya da domain admin oturumunun hash bilgilerini elde ettiğimizi düşünürsek oldukça tehlikelidir.
NetBIOS/LLMNR Zehirlenmesi Zafiyeti Nasıl Önlenir?
- Sızma testi ve web uygulama güvenlik testleri sırasında sıkça keşfedilen bu zafiyeti önlemek için LLMNR\NetBIOS’in group policy ve kullanıcı sistemlerinden kapatılması tarafımızdan tavsiye edilir. Yalnız LLMNR devre dışı bırakılması yeterli değildir. Böyle bir durumda NetBIOS-NS sorgusu devreye girer.
- LLMNR protokolü “Gpedit.msc -> Administrative Templates -> Network -> DNS Client -> Turn off Multicast Resolution seçeneğinin değeri “enable” yapılarak” kapatılabilir.
- NetBIOS protokolünde ise istemciler ve sunucular üzerinde TCP/IP konfigürasyonunda WINS tabına gelerek NetBIOS ayarı kapatılabilir. Ya da “regedit.exe” çalıştırılır. Ardından sırası ile HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces\ sekmelerine girilir. ‘0’ olan DWORD değerinin ‘2’ ile değiştirilmesi gerekir.
- LLMNR / NetBIOS trafiğini engellemek için server tabanlı güvenlik yazılımı kullanın. SMB İmzalamanın etkinleştirilmesi, NTLMv2 geçiş saldırılarını durdurabilir. Ağ saldırı algılama ve önleme sistemleri kullanılabilir. Ayrıca tarayıcılardaki “Proxy server’ı otomatik algıla” seçeneğinin işaretlenmemelidir.
Penetrasyon testi sırasında size raporlanan bir NetBIOS/LLMNR zehirlenmesi zafiyeti yukarıdaki adımlar uygulanarak giderilebilmektedir.