LLMNR Poisoning

LLMNR Poisoning nedir? LLMNR Poisoning Saldırısı Nasıl Gerçekleştirilir? LLMNR Poisoning Saldırısından Etkilenmemek İçin Alınması Gereken Önlemler.

LLMNR Poisoning

Merhaba arkadaşlar bu yazımda sizlere LLMNR Poisoning saldırısının nasıl gerçekleştiğini ve saldırıdan korunurken nasıl önlemler alınması gerektiğinden kısaca bahsedeceğim.

LLMNR VE NBT-NS nedir?

LLMNR(Link-Local Multicast Name Resolution) ve NBT-NS(NetBIOS Name Server), Microsoft Windows'un alternatif ana bilgisayar tanımlama yöntemleridir.

LLMNR, IPv4 ve IPv6 ana makinelerinin, bir DNS sunucusu ya da bir DNS yapılandırmasına ihtiyaç duymadan yerel ağda isim çözümlemesi yapmaya yarayan protokoldür. LLMNR, NetBIOS ile ortak çalışır.

Bir ana makinenin DNS sorgusu başarısız olduğunda, ana makine başka bir ana makinenin yanıt verip veremeyeceğini görmesi için yerel ağda bir LLMNR isteği yayınlar.

NetBIOS, yerel ağ üzerinden bilgisayarların birbirleriyle iletişim kurmasını sağlayan ve isim çözümlemesi yapabilen bir API'dir. Bir bilgisayara işletim sistemi yüklendiğinde, o makineye özgü bir NetBIOS adı atanır.

LLMNR Poisoning

Saldırgan, ağdaki sunuculara erişim isteklerini dinlemeye ve brodcast olarak ağa paketler göndermeye başlar. Cihaz, ağda olmayan sunucuya istek attığında DNS, böyle bir sunucunun olmadığını cihaza iletir. Cihaz DNS’ten olumsuz yanıt aldıktan sonra ağdaki tüm cihazlara bu sunucunun adresini bilen var mı diye bir yayın yapar. Tam o sırada saldırgan, cihazın bu isteğine yanıt verir. Kurban bu durumda saldırgana kullanıcı bilgilerini ve NTLMv2 hash değerini iletir. Bu sayede saldırgan kurbanın parola hash’ini almış olur. Bu duruma da LLMNR Poisoning denir.

Şema üzerinde belirtmek gerekirse:

LLMNR Poisoning teorik olarak bu şekilde gerçekleşiyor. Şimdi ise bu adımların pratikte nasıl gerçekleştiğini inceleyelim. İlk olarak “responder” aracına ihtiyacımız var.

Responder, ağ trafiğini dinler ve belirli ağ hizmetlerine yapılan isteklere yanıt veren bir araçtır.

Adım 1: responder aracını kurmak.

Apt update

Apt upgrade

Apt install responder

Bu komutları girdikten sonra aracımız kullanıma hazır olacaktır.

Adım 2: responder ile ağı dinlemek.

Responder ile ağa bağlı olduğumuz kartı dinlemeye alıyoruz.

responder –I eth0 komutu dinleme işlemini başlatır.

Dinleme başladığı andan itibaren ağ içerisinde bir bağlantı isteği geldiğinde responder araya girip isteğin geldiği makinenin kimlik bilgilerini elde edecektir.

Adım 3: Kurban makinenin bir istekte bulunması

Senaryo gereği kurban makinede \\kurum adında bir istek oluşturuyorum.

Ardından ağ kimlik bilgilerini isteyen bir kullanıcı adı şifre formu yanıtı dönüyor. Yine senaryo gereği bu bilgileri dolduruyorum.

Adım 4: Kurban cihazın kimlik bilgilerini ve NTLMv2 hash’ini almak.

Kurban cihazda \\kurum adındaki sunucuya atılan isteğin ardından responder, brodcast yayını ile ağa gönderdiği paketleri kurban makine alır ve kurbanın girdiği kimlik bilgilerini saldırgan makineye iletir.

Adım 5: Kurban makineden alınan kimlik bilgilerini okumak

Default olarak responder kimlik bilgilerini “/usr/share/responder/logs” dizininde barındırır. Bu bilgiler kurban makinenin ip adresiyle biten bir txt dosyasına kaydedilir.

Kullanıcı adı ve NTLMv2 hash’ini SMB ile başlayan dosya içerisinde görebiliriz.

Buraya kadar olan işlemin ağda nasıl göründüğünü inceleyelim.

Kurban makine \\kurum adresine gitme isteğinde bulunuyor daha sonra böyle bir adresin olmadığı kurban makineye iletiliyor. Responder bu sırada \\kurum adresinin adresi bu diye bir kimlik doğrulama formu gönderiyor. Bu şekilde NTLMv2 hash’ini elde ediyor.

NTLMv2 hash’ini manuel olarak wireshark paketleri içerisinden okuyabiliriz. Bir NTLM hash içerisinde bulunması gereken 5 başlık vardır bunlar; user, domain, challenge, HMAC-MD5 ve NTLMv2Response değerleridir.

Bu değerleri daha net görmek için wireshark arama kısmına ntlmssp yazıyorum.

Chalenge değerini öğrenmek için 22 numaralı paketi açıyorum

NTLM Server Challenge değerini alıyorum ve 23 numaralı pakete geçiyorum.

Bu paket içerisinde NTLMv2 response ve HMAC-MD5(NTProofStr) değerleri bulunmaktadır. Response değerinin ilk 16 biti yani ilk 32 karakteri alınmaz çünkü response’un ilk 16 biti HMAC-MD5’in değerleridir.

Bu değerleri de alıyorum ve yine 23. Paket içerisinde biraz daha aşağılarda user ve domain bilgilerini alıyorum.

Tüm bilgileri toplayıp bir txt dosyasına kaydediyorum.

Şimdi bu değerleri NTLMv2 formatına getirmemiz gerekiyor. NTLMv2’nin dizilişi user::domain:challenge:HMAC-MD5:NTLMv2Response şeklinde olmalıdır.

Bu bilgileri bir txt dosyasına kaydederek NTLMv2 hash’ini kırabiliriz.

Adım 6: Kurban makineden alınan NTLMv2 hash’inin kırılması.

John the ripper aracı ile bu işlem kolayca gerçekleştirilebilir.

John DosyaAdi

hashcat aracı ile NTLMv2 hash’ini kırma

hashcat -m 5600 DosyaAdi /usr/share/wordlists/rockyou.txt --force --show

LLMNR Poisoning saldırısı bu şekilde sonlanmaktadır.

LLMNR Poisoning saldırısından etkilenmemek için alınması gereken bazı önlemler

  • Windows ortamlarında LLMNR’ı devre dışı bırakmak.

Ağ bağdaştırıcı ayarlarından bağlı olduğunuz ağın özelliklerini açın ve ağa bağlanmanızı sağlayan protokollerden(IPv4 ya da IPv6) öğesini bulun. Kullanılan öğeyi seçip özellikler kısmına tıklayın. Açılan pencerede “Genel” sekmesini seçin burada, genellikle "Link-layer Topoloji Keşfi (LLTD) Responder" ve "Çok İstemli Ad Çözme" seçeneklerini göreceksiniz. Bu seçeneği kaldırarak LLMNR’ı devre dışı bırakabilirsiniz. Bu işlem aynı ağda bulunan saldırganların LLMNR Poisoning saldırısı yapmalarını önleyecektir.

  • LLMNR yerine DNS kullanmak

LLMNR Poisoning saldırılarını önlemenin bir yolu da DNS kullanmaktır. DNS, MITM saldırılarına karşı daha güvenlidir. DNS kullanılarak tüm isim çözümleme istekleri güvenli DNS sunucuları üzerinden yönlendirilebilir, böylece LLMNR zehirlenme saldırılarından kaynaklanan risk azaltılabilir.

  • Ağ segmentasyonu kullanmak

Ağ segmentasyonu LLMNR Poisoning saldırsının etkilerini azaltmada önemli rol oynar. Ağı misafir ve iç ağ diye 2 farklı segmente ayrıldığını varsayarsak saldırgan bir segmentte LLMNR zehirlenme saldırısı gerçekleştirirse, bu diğer ağ segmentlerinde kalıcı bir olumsuz etki bırakmayacaktır.

  • Host Tablosunu Güncel Tutmak

Özellikle kritik sunucularda doğrudan IP adreslerini kullanarak isim çözümlemesi yapması için host dosyalarını düzenleyin.

Muhammed Enes, Fırat üniversitesi Adli bilişim Mühendisliği öğrencisidir. Siber güvenlikte önemli bir yere sahip olan offensive tarafta çalışmalarını yürütüyor. Farklı sınıf aralıklarında oluşan 25 kişilik ekibin takım kaptanlığını yapıyor. Onlara çeşitli eğitimler veriyor. Kariyer hedeflerini belirleyip yol haritası çizmelerine yardımcı oluyor.