NTLM
NTLM
Informazioni di Base
Negli ambienti in cui sono in uso Windows XP e Server 2003, vengono utilizzati gli hash LM (Lan Manager), anche se è ampiamente riconosciuto che questi possono essere facilmente compromessi. Un particolare hash LM, AAD3B435B51404EEAAD3B435B51404EE
, indica uno scenario in cui LM non è utilizzato, rappresentando l'hash per una stringa vuota.
Per impostazione predefinita, il protocollo di autenticazione Kerberos è il metodo principale utilizzato. NTLM (NT LAN Manager) interviene in circostanze specifiche: assenza di Active Directory, non esistenza del dominio, malfunzionamento di Kerberos a causa di una configurazione non corretta, o quando le connessioni vengono tentate utilizzando un indirizzo IP anziché un hostname valido.
La presenza dell'intestazione "NTLMSSP" nei pacchetti di rete segnala un processo di autenticazione NTLM.
Il supporto per i protocolli di autenticazione - LM, NTLMv1 e NTLMv2 - è facilitato da una specifica DLL situata in %windir%\Windows\System32\msv1\_0.dll
.
Punti Chiave:
Gli hash LM sono vulnerabili e un hash LM vuoto (
AAD3B435B51404EEAAD3B435B51404EE
) indica la sua non utilizzazione.Kerberos è il metodo di autenticazione predefinito, con NTLM utilizzato solo in determinate condizioni.
I pacchetti di autenticazione NTLM sono identificabili dall'intestazione "NTLMSSP".
I protocolli LM, NTLMv1 e NTLMv2 sono supportati dal file di sistema
msv1\_0.dll
.
LM, NTLMv1 e NTLMv2
È possibile controllare e configurare quale protocollo verrà utilizzato:
GUI
Eseguire secpol.msc -> Directiva locale -> Opzioni di sicurezza -> Sicurezza di rete: Livello di autenticazione LAN Manager. Ci sono 6 livelli (da 0 a 5).
Registro
Questo imposterà il livello 5:
Valori possibili:
Schema di autenticazione di base del dominio NTLM
L'utente inserisce le sue credenziali
La macchina client invia una richiesta di autenticazione inviando il nome del dominio e lo username
Il server invia la sfida
Il client cifra la sfida utilizzando l'hash della password come chiave e la invia come risposta
Il server invia al Domain Controller il nome del dominio, lo username, la sfida e la risposta. Se non è configurato un Active Directory o il nome del dominio è il nome del server, le credenziali vengono controllate localmente.
Il Domain Controller controlla se tutto è corretto e invia le informazioni al server
Il server e il Domain Controller sono in grado di creare un Canale Sicuro tramite il server Netlogon poiché il Domain Controller conosce la password del server (è all'interno del database NTDS.DIT).
Schema di autenticazione NTLM locale
L'autenticazione è come quella menzionata prima ma il server conosce l'hash dell'utente che cerca di autenticarsi all'interno del file SAM. Quindi, anziché chiedere al Domain Controller, il server controllerà da solo se l'utente può autenticarsi.
Sfida NTLMv1
La lunghezza della sfida è di 8 byte e la risposta è lunga 24 byte.
L'hash NT (16 byte) è diviso in 3 parti di 7 byte ciascuna (7B + 7B + (2B+0x00*5)): l'ultima parte è riempita con zeri. Quindi, la sfida è cifrata separatamente con ciascuna parte e i byte cifrati risultanti sono uniti. Totale: 8B + 8B + 8B = 24 byte.
Problemi:
Mancanza di casualità
Le 3 parti possono essere attaccate separatamente per trovare l'hash NT
DES è violabile
Il 3º chiave è composta sempre da 5 zeri.
Dato lo stesso sfida la risposta sarà uguale. Quindi, puoi dare come sfida alla vittima la stringa "1122334455667788" e attaccare la risposta utilizzando tabelle arcobaleno precalcolate.
Attacco NTLMv1
Oggi è sempre meno comune trovare ambienti con la Delega non vincolata configurata, ma ciò non significa che non puoi abusare di un servizio di Print Spooler configurato.
Potresti abusare di alcune credenziali/sessioni che hai già nell'AD per chiedere alla stampante di autenticarsi contro un host sotto il tuo controllo. Quindi, utilizzando metasploit auxiliary/server/capture/smb
o responder
puoi impostare la sfida di autenticazione su 1122334455667788, catturare il tentativo di autenticazione e se è stato fatto utilizzando NTLMv1 sarai in grado di violare la sicurezza.
Se stai utilizzando responder
potresti provare a **usare il flag --lm
** per cercare di declassare l'autenticazione.
Nota che per questa tecnica l'autenticazione deve essere eseguita utilizzando NTLMv1 (NTLMv2 non è valido).
Ricorda che la stampante utilizzerà l'account del computer durante l'autenticazione e gli account del computer utilizzano password lunghe e casuali che probabilmente non sarai in grado di violare utilizzando dizionari comuni. Ma l'autenticazione NTLMv1 utilizza DES (più informazioni qui), quindi utilizzando alcuni servizi appositamente dedicati alla violazione di DES sarai in grado di violarla (potresti utilizzare https://crack.sh/ ad esempio).
Attacco NTLMv1 con hashcat
NTLMv1 può anche essere violato con lo strumento NTLMv1 Multi Tool https://github.com/evilmog/ntlmv1-multi che formatta i messaggi NTLMv1 in un metodo che può essere violato con hashcat.
Il comando
NTLM Relay Attack
Overview
NTLM Relay Attack is a type of attack where an attacker captures the NTLM authentication request sent by a victim and relays it to a target server to authenticate as the victim. This attack can be used to gain unauthorized access to systems and resources on a network.
Mitigation
To mitigate NTLM Relay Attacks, it is recommended to implement the following security measures:
Enforce SMB Signing: Enabling SMB signing can help prevent NTLM Relay Attacks by ensuring the integrity of SMB packets.
Disable NTLMv1: NTLMv1 is vulnerable to various attacks, including relay attacks. Disabling NTLMv1 can help reduce the risk of NTLM Relay Attacks.
Use LDAP Signing and Channel Binding: Enabling LDAP signing and channel binding can help protect against NTLM Relay Attacks targeting LDAP authentication.
Implement Extended Protection for Authentication: Extended Protection for Authentication (EPA) can help prevent NTLM Relay Attacks by adding an extra layer of security to the authentication process.
By implementing these security measures, organizations can reduce the risk of NTLM Relay Attacks and enhance the overall security of their network.
Protezione NTLM di Windows
Il protocollo NTLM (NT LAN Manager) è un protocollo di autenticazione utilizzato su reti Windows. Tuttavia, è noto per essere vulnerabile a varie tecniche di attacco, come l'hash dumping e il pass-the-hash. Per proteggere un sistema Windows dall'utilizzo non autorizzato di credenziali NTLM, è possibile adottare le seguenti misure:
Disabilitare l'archiviazione delle credenziali NTLM in clear text: Impostare la policy di gruppo per impedire a Windows di archiviare le credenziali NTLM in chiaro.
Abilitare la firma digitale per la sicurezza NTLM: Configurare le impostazioni di sicurezza per richiedere la firma digitale per tutte le comunicazioni NTLM.
Impostare la protezione NTLMv2: Assicurarsi che l'autenticazione NTLMv2 sia abilitata su tutti i sistemi Windows per migliorare la sicurezza.
Monitorare e rivedere i log di autenticazione NTLM: Monitorare regolarmente i log di autenticazione NTLM per individuare attività sospette o tentativi di accesso non autorizzati.
Implementando queste misure, è possibile migliorare la sicurezza del sistema Windows proteggendo le credenziali NTLM da potenziali attacchi.
Esegui hashcat (la distribuzione è migliore tramite uno strumento come hashtopolis) poiché altrimenti ci vorranno diversi giorni.
In questo caso conosciamo la password che è password quindi stiamo per barare per scopi dimostrativi:
Dobbiamo ora utilizzare le utility di hashcat per convertire le chiavi des violate in parti dell'hash NTLM:
Infine l'ultima parte:
NTLM Relay Attack
Overview
In an NTLM relay attack, the attacker forwards an authentication request from a victim's machine to a target machine, tricking the target into thinking the request is coming from a legitimate user. This allows the attacker to gain unauthorized access to the target machine using the victim's credentials.
Steps to Perform NTLM Relay Attack
Capture NTLM Authentication Request: Use tools like Responder or Impacket to capture NTLM authentication requests sent over the network.
Relay the Authentication Request: Relay the captured authentication request to the target machine using tools like ntlmrelayx.
Gain Access: If successful, the attacker can gain access to the target machine using the victim's credentials.
Mitigation
To prevent NTLM relay attacks, consider implementing the following measures:
Enforce SMB Signing: Require SMB signing to prevent attackers from relaying authentication requests.
Use Extended Protection for Authentication: Enable Extended Protection for Authentication to protect against NTLM relay attacks.
Disable NTLM: Consider disabling NTLM authentication in favor of more secure protocols like Kerberos.
By following these mitigation techniques, you can reduce the risk of falling victim to NTLM relay attacks.
Sfida NTLMv2
La lunghezza della sfida è di 8 byte e vengono inviate 2 risposte: Una è lunga 24 byte e la lunghezza dell'altra è variabile.
La prima risposta è creata cifrando utilizzando HMAC_MD5 la stringa composta dal client e dal dominio e utilizzando come chiave l'hash MD4 dell'hash NT. Successivamente, il risultato verrà utilizzato come chiave per cifrare utilizzando HMAC_MD5 la sfida. A questo, verrà aggiunto una sfida del client di 8 byte. Totale: 24 B.
La seconda risposta è creata utilizzando diversi valori (una nuova sfida del client, un timestamp per evitare attacchi di ripetizione...)
Se hai un pcap che ha catturato un processo di autenticazione riuscito, puoi seguire questa guida per ottenere il dominio, il nome utente, la sfida e la risposta e provare a violare la password: https://research.801labs.org/cracking-an-ntlmv2-hash/
Pass-the-Hash
Una volta che hai l'hash della vittima, puoi usarlo per impersonarla. Devi utilizzare uno strumento che eseguirà l'autenticazione NTLM utilizzando quell'hash, oppure potresti creare un nuovo sessionlogon e iniettare quell'hash all'interno del LSASS, in modo che quando viene eseguita qualsiasi autenticazione NTLM, quell'hash verrà utilizzato. L'ultima opzione è ciò che fa mimikatz.
Per favore, ricorda che puoi eseguire attacchi Pass-the-Hash anche utilizzando gli account Computer.
Mimikatz
Deve essere eseguito come amministratore
Questo avvierà un processo che apparterrà agli utenti che hanno avviato mimikatz ma internamente in LSASS le credenziali salvate sono quelle all'interno dei parametri di mimikatz. Quindi, è possibile accedere alle risorse di rete come se si fosse quell'utente (simile al trucco runas /netonly
ma non è necessario conoscere la password in testo normale).
Pass-the-Hash da Linux
È possibile ottenere l'esecuzione del codice nelle macchine Windows utilizzando Pass-the-Hash da Linux. Accedi qui per imparare come farlo.
Strumenti Impacket Windows compilati
È possibile scaricare binari Impacket per Windows qui.
psexec_windows.exe
C:\AD\MyTools\psexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.my.domain.local
wmiexec.exe
wmiexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local
atexec.exe (In questo caso è necessario specificare un comando, cmd.exe e powershell.exe non sono validi per ottenere una shell interattiva)
C:\AD\MyTools\atexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local 'whoami'
Ci sono diversi altri binari Impacket...
Invoke-TheHash
È possibile ottenere gli script PowerShell da qui: https://github.com/Kevin-Robertson/Invoke-TheHash
Invoke-SMBExec
Invoke-WMIExec
Invoke-SMBClient
Invoke-SMBEnum
Invoke-SMBEnum
Invoke-TheHash
Questa funzione è un mix di tutte le altre. Puoi passare diversi host, escludere alcuni e selezionare l'opzione che desideri utilizzare (SMBExec, WMIExec, SMBClient, SMBEnum). Se selezioni qualunque di SMBExec e WMIExec ma non fornisci alcun parametro Command, verrà semplicemente verificato se hai permessi sufficienti.
Windows Credentials Editor (WCE)
Deve essere eseguito come amministratore
Questo strumento farà la stessa cosa di mimikatz (modificare la memoria LSASS).
Esecuzione remota manuale di Windows con nome utente e password
pageLateral MovementEstrazione delle credenziali da un host Windows
Per ulteriori informazioni su come ottenere le credenziali da un host Windows dovresti leggere questa pagina.
NTLM Relay e Responder
Leggi una guida più dettagliata su come eseguire questi attacchi qui:
pageSpoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay AttacksAnalisi delle sfide NTLM da una cattura di rete
Puoi utilizzare https://github.com/mlgualtieri/NTLMRawUnHide
Last updated