LLMNR ile NTLMv1/v2 Aktarımı (Relaying)

LLMNR saldırıları oldukça bilinen bir araç olan Responder.py ile yapılabilir. Bu saldırılar, tüm ağı zehirler ve cevap olarak bu zafiyete yakalanan sunucu ve istemcilerin kullanıcı Hash değerini (şifrenin kripto edilmiş halini) yakalar.

Penetrasyon testi yapan ve yaptıran firmaların sistem yöneticileri bilirler ki aşağıdaki gibi bir hash değeri yakalandığında ciddi bir bulgu olarak sayılır. Ancak bu bulgu biraz daha ciddi hale getirilip kritik seviyeye çekilebilir.

Şekil 1: NTLMv2 / NetNTLMv2 Hash Değeri
(Tüm hash değerleri https://hashcat.net/wiki/doku.php?id=example_hashes adresinden alınmıştır.)

Ancak şöyle bir problem var! Elde edilen hash değeri yalnızca şifre kırma araçları (John the Ripper, Hashcat) ile kelime listesi (Wordlist) kullanarak kırılabilir ki kullanılan Wordlist’te, sunucuya ait şifre yoksa doğal olarak kırma işlemi başarısız olur. Fakat NTLM Aktarım (Relaying) tekniği ile daha farklı bir durum ortaya çıkar. NTLM Relaying, hedef ile etkileşimde olunan bir saldırı tekniği olduğu için bu saldırının gerçek zamanlı yapılması oldukça önemlidir. Responder.py aracından gelen hash değeri kırılmaya çalışmadan, direkt olarak hedefe NTLM Relaying yöntemiyle aktarılması yerel ağ yöneticisi (local admin) olunması için yeterlidir.

Başlamadan önce bilinmesi gerekenler:

  • Net-NTLMv2 ile NTLMv2 aynı anlamda olup, yalnızca bir terim karmaşası bulunmaktadır.
  • NTLM hash (a.k.a NTHash) değerleri ile Pass The Hash yapılmaktadır.
  • NTLMv1 ve NTLMv2 (a.k.a Net-NTLMv1/v2) ile Pass The Hash yapılamamaktadır!
  • NTLM Relaying saldırısı için SMB Signing’in kapalı olması gerekmektedir. (Bu madde ile bir bulgu daha birleşmektedir.)
SMB Signing Özelliği Kapalı
  • Responder.py için geliştirme ve desteğin durduğu için SpiderLab’s Github adresinin kullanılmaması, onun yerine lgandx’s fork Github repository adresinin kullanılması önerilmektedir.

Hazırlık Aşaması

Responder aracını kurduktan sonra aynı klasörde bulunan Responder.conf dosyasını düzenleyerek amaca uygun çalışması sağlanır. Ardından, SMB ve HTTP kısımlarını Off olarak belirlenir. Buradaki iki özelliğin kapalı (Off) olarak belirlenmesinin sebebi, SMB ve HTTP üzerinden gelen Hash değerlerini Responder’da göstermek yerine direkt olarak gelen Hash değerlerini Ntlmrelayx.py aracına gönderip Hash değerleriyle, hedefte giriş denemeleri yapılmasını sağlamaktır.

Responder aracı için NTLM Relaying ayarları

LLMNR saldırısı tercihen Responder veya Inveigh araçları ile yapılabilir. Ayrıca gelen Hash değerini, yer değiştirme yapılabilmesi için Relaying aracı kullanılır. NTLM Relaying için ise oldukça bilinen Ntlmrelayx.py ve MultiRelay.py gibi araçlar bulunmaktadır. MultiRelay.py aracı Responder toolkit ile birlikte tools klasöründe gelmektedir. Ntlmrelayx.py ise aracı Impacket library ile birlikte gelmektedir.

Ardından hedefler belirlenir. SMB Signing özelliği kapalı olan tüm hedefler, bu saldırı yöntemine uyar. Tüm hedefler bir liste olarak elde edilir.

Nmap ile “smb-security-mode” Script’ini kullanarak elde edilebileceği gibi ayrıca CrackMapExec ile daha temiz bir sonuç elde edilebilir.

Saldırı Aşaması

Hazırlıklar yapıldıktan sonra SMB Signing özelliği kapalı olan hedeflerin listesi elde edilir. Ancak bazen kriterlere uyan o kadar fazla hedef çıkar ki hepsiyle tek tek ilgilenmek çok fazla vakit kaybına neden olabilir. Diğer yandan hedef seçmek de aynı zamanda Post-exploit sırasında beklentileri karşılamayabilir. Örneğin: Enterprise Admin ya da Domain Admin hesaplarının şifrelerinin hedefte bulunmaması gibi.

Bu yüzden işlem otomatize edilerek elde edilen hedeflerin hepsine eş zamanlı saldırı düzenlenip hepsinden aynı anda Shell alınmasını sağlayan bir yöntem uygulanır. Bu konuda da Empire kullanılır.

  • Sırasıyla önce Empire çalıştırıp powershell http payload oluşturulur.

Oluşturulan payload’u “powershell” kelimesi dahil baştan sona doğru kopyalanır. Eksik kopyalamamaya özen gösterilerek aşağıda belirtildiği gibi tek tırnak işaretleri arasına eklenir.

  • Ntlmrelay.py ile hedeflere yönelik Payload kodu ile birlikte Aktarım (Relaying) başlatılır.
  • Son olarak da Responder ile LLMNR saldırısını başlatılır.
Şekil 2: Resim Empire resmi sitesinden alınmıştır.

Her şey yolunda gittiği takdirde [+] Initial agent bildirimi alınır.

Bitirme Aşaması

Daha önce bahsedildiği üzere, tüm bunları yaptıktan sonra tek tek yakalanan Host’larla uğraşabilir ya da Deathstar.py aracını kullanarak size Yerel Ağ Yöneticisi (Domain Admin) olana kadar hizmet etmesini sağlayabilirsiniz. Tek yapılması gereken Empire ile birlikte dağıtılan bu aracı yetki yükseltme (Privilege Escalation) yöntemi olarak atanması. Gerisini araç kendisi halledecektir.

Şekil 3: Deathstar.py tanıtım görüntülerinden alınmıştır.

Çözüm Önerisi

Her iki zayıf nokta için çözüm önerileri aşağıda belirtilmektedir.

LLMNR

LLMNR ve NetBIOS protokolleri group policy ve kullanıcı sistemlerinden kapatılarak bu saldırıdan korunulabilir.

LLMNR prokolünü group policy üzerinden kapatmak için:

  • Gpedit.msc -> Administrative Templates -> Network -> DNS Client -> Turn off Multicast Resolution seçeneğinin değeri “enable” yapılması önerilir.

NetBIOS protokolü group policy üzerinden kapatılamamaktadır. Bu protokolü kapatmak için:

  • İstemciler ve sunucular üzerinde TCP/IP konfigürasyonunda WINS sekmesine gelerek NetBIOS ayarı kapatılması önerilir.

Saldırı senaryolarından biri olan, sahte Proxy server kurularak etkilenen kullanıcıların karşılarına Basic Authentication çıkarılması ve bunun sonucunda domain kullanıcı adı ve parolasının düz metin olarak elde edilmesi işlemini önlemek için tarayıcılardaki “Proxy server’ı otomatik algıla” seçeneği işaretlenmemesi önerilir.

SMB Signing

Sunucularda ve istemcilerde Active Directory üzerinden SMB Signing özelliğinin açılması (Policy yaratılması) önerilmektedir.