NTLM e’ un insieme di protocolli di autenticazione che utilizza il meccanismo single sign-on supportato da NTLMSSP di Windows che prevede:
Il client provvede ad inviare un valore cifrato direttamente al server (oppure ad un domain controller) senza specificare la password in chiaro. Il server effettua i calcoli necessari e verifica se l’ hash che possiede in memoria e’ uguale a quello ricevuto dal client. In tal caso avviene l’ autenticazione.Durante questa fase viene anche negoziata la chiave da utilizzare per la firma e la cifratura dei messaggi.
La firma e’ un MAC (Message Authentication Code), generato tramite chiave condivisa e leggibile solo al mittente ed al destinatario.
La fase di autenticazione prevede lo scambio di tre messaggi tra il client ed il server.
Viene inviato dal client al server specificando l’ elenco di tutte le caratteristiche supportate dal client e richieste al server. Queste caratteristiche vengono indicate tramite l’ impostazione di appositi flags.
Viene inviato dal server al client in risposta al messaggio di negoziazione. Il server specifica tramite opportuni flags le caratteristiche supportate ed invia un challenge, ovvero un valore utile a determinare l’identita’.
Il client provvede alla generazione della risposta al challenge e specifica informazioni sul dominio di appartenenza e lo username. Il messaggio di tipo 3 prevede l’impostazione dei campi LM ed NTLM con i valori delle risposte al challenge calcolate secondo lo schema NTLM versione 1 o NTLM versione2.
Esistono diversi metodi di risposta al challenge e determinazione delle chiavi.
Supportato da:
A partire dalle versioni di Windows 9x
Calcolo risposta:
Chiavi di sessione utente:
Si prendono i primi 8 byte di LM hash e si aggiungono zeri fino a 16 byte ottenendo la chiave di sessione LM.
Supportato da:
Windows NT, Windows 2000, Windows XP, Windows 2003 e successivi
Calcolo risposta
Generalmente la risposta NTLM viene inviata insieme alla risposta LM nel messaggio di autenticazione.
Chiavi di sessione utente
NTLM hash viene cifrato con l’ algoritmo MD4. Si ottiene la chiave di sessione utente NTLM a 16 byte.
Supportato da:
Windows Vista, Windows 7, Windows 2008, windows 2008 R2
Calcolo risposta
Questa risposta viene inviata insieme ad LMv2. NTLMv2 prevede l’ utilizzo della sessione di sicurezza NTLM2 che viene negoziata tra client e server tramite l’ impostazione del flag “Negoziate NTLM2 Key”.
Chiavi di sessione utente
Per l’ autenticazione anomima i campi LM ed NTLM non vengono riempiti. La chiave e’ composta da 16 byte pari a zero.
Supportato da:
Windows Vista, Windows 7, Windows 2008, windows 2008 R2
Questo tipo di risposta viene utilizzato per la comunicazione dei client con server su cui sono installate versioni precedenti del sistema operativo che non supportano l’ autenticazione NTLMv2. In questo caso il server demanda la verifica del client ad un controller di dominio passando il valore LMv2.
Calcolo risposta
Chiave di sessione utente
Supportato da:
Viene utilizzato per aumentare la sicurezza presso i sistemi che non supportano l’ autenticazione NTLMv2.
Calcolo risposta
Chiave di sessione utente
Quando viene attivato il flag “Negoziate Key Exchange” client e server si accordano per una seconda chiave comune. Si procede nel seguente modo:
La semplificazione viene effettuata quando e’ attivo il flag “Negoziate 56” e “Negoziate 128”. Per default si utilizzano chiavi a 40 bit.
Prevede l’ impostazione dei seguenti flag:
Negoziate Lan Manager Key
Specifica l’ utilizzo della chiave di sessione LAN Manager invece della chiave di sessione utente
Negoziate 56
Indica che la chiave da utilizzare avra’ lunghezza 56 bit, ovvero vengono presi i primi 56 bit della chiave master. Di default si utilizzano 40 bit.
Negoziate Key Exchange
Indica che client e server si dovranno accordare per una seconda chiave comune che diventera’ la chiave master per la firma e cifratura del messaggio.
E’ un alternativa alla chiave di sessione utente e si determini come segue:
Inizializzazione RC4 con la chiave master e crittografia del messaggio.
Prevede l’ impostazione dei seguenti flag:
Negoziate NTLM2 KEY
Specifica l’ utilizzo della sessione di sicurezza NTLM2
Negoziate 56
Indica l’ utilizzo di chiavi a 56 bit
Negoziate 128
Indica l’ utilizzo di chiavi a 128 bit
Negoziate Key Exchange
Indica che client e server si dovranno accordare per una seconda chiave comune che diventera’ la chiave master.
NOTA: Possono essere create delle sottochiavi per la firma e la crittografia.
Si inizializza RC4 con la chiave specifica e si cifra il messaggio.
0. Il client invia solo risposte LM e NTLM. Il server e’ in grado di accettare LM, NTLM, LMv2,NTLMv2
1. Il client invia solo risposte LM e NTLM. Il server e’ in grado di accettare LM, NTLM, LMv2,NTLMv2
2. Il client invia solo risposte NTLM. Il server e’ in grado di accettare LM, NTLM, LMv2,NTLMv2
3. Il client invia solo risposte LMv2 e NTLMv2. Il server e’ in grado di accettare LM, NTLM, LMv2,NTLMv2
4. Il client invia solo risposte LMv2 e NTLMv2. Il server e’ in grado di accettare NTLM, LMv2,NTLMv2
5. Il client invia solo risposte LMv2 e NTLMv2. Il server e’ in grado di accettare LMv2,NTLMv2