Table of Contents

Protocollo NTLM

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.

AUTENTICAZIONE

La fase di autenticazione prevede lo scambio di tre messaggi tra il client ed il server.

Messaggio tipo 1 Negoziazione

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.

Messaggio tipo 2 Challenge

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’.

Messaggio di tipo 3 Autenticazione

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.

Metodi di autenticazione e determinazione delle chiavi comuni

Esistono diversi metodi di risposta al challenge e determinazione delle chiavi.

LM

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.

NTLM

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.

NTLMv2

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

Autenticazione anonima

Per l’ autenticazione anomima i campi LM ed NTLM non vengono riempiti. La chiave e’ composta da 16 byte pari a zero.

LMv2

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

NTLM2 risposta di sessione

Supportato da:

Viene utilizzato per aumentare la sicurezza presso i sistemi che non supportano l’ autenticazione NTLMv2.

Calcolo risposta

Chiave di sessione utente

Scambio chiavi

Quando viene attivato il flag “Negoziate Key Exchange” client e server si accordano per una seconda chiave comune. Si procede nel seguente modo:

Semplificazione Chiavi

La semplificazione viene effettuata quando e’ attivo il flag “Negoziate 56” e “Negoziate 128”. Per default si utilizzano chiavi a 40 bit.

Sessione di sicurezza

NTLM 1

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.

Chiave di sessione Lan Manager

E’ un alternativa alla chiave di sessione utente e si determini come segue:

Firma

Crittografia

Inizializzazione RC4 con la chiave master e crittografia del messaggio.

NTLM 2

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.

Firma

Crittografia

Si inizializza RC4 con la chiave specifica e si cifra il messaggio.

Livelli di sicurezza

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

Riferimenti: http://davenport.sourceforge.net/ntlm.html