Fatti e misfatti dei protocolli di
autenticazione
LM, NTLM e Kerberos
Autenticazione e Autorizzazione
Autenticazione:
Verifica l’identità dei Security Principal
Basata su diversi fattori
Qualcosa che si conosce (password, pin, …)
Qualcosa che si possiede (smartcard, token, …)
Qualcosa che “ci definisce” (biometria)
I fattori possono essere combinati per aumentare la sicurezza
Autorizzazione:
Consente o nega l’accesso alle risorse
Autorizzazione legata a “liste di accesso” (ACL)
I dati di autorizzazione comprendono appartenenza a gruppi di
sicurezza e la definizione di privilegi di sistema
Protocolli di autenticazioni in Windows
In Windows sono disponibili i protocolli di
autenticazione:
LM (Lan Manager)
NTLM v1 e v2
Kerberos
SSL
Certificati digitali
Sono usati in situazioni diverse e hanno un diverso
grado di affidabilità
Autenticazione (AuthN)
Winlogon passa le informazioni di autenticazione a
LSASS
LSASS determina quale stack di AuthN usare:
Login locale o remoto? Se è remoto
Kerberos
MSV1_0
NTLMv2, NTLM, LM
Lo stack scelto genera i dati di AuthN
Autenticazione LM
Usato per autenticare l’accesso a
Server LAN Manager
Windows 9x con password a livello di share
Usato per autenticare l’accesso da
Windows CE/Windows 3.x
Tra server di un cluster
In alcuni casi usato da RTC
Meccanismo basato su challenge-response
Usa hash LM
Autenticazione NTLM
Usata per autenticazioni a
Membri di dominio da non membri di dominio
Membri di dominio quando si usa indirizzo IP
\\server\share

\\192.168.1.100\share 
Kerberos
NTLM
Non-domain members
Macchine Windows 9x con password a livello utente o
autenticazione pass-through verso domain controller
Usa hash NT
Autenticazione NTLM e LM
Authn_Request
Server_Challenge – nonce
Response – DES(LM Hash, nonce)
Response – DES(Unicode pwd, nonce)
Client
Authn_Result
Server
Autenticazione NTLMv2
Considerabilmente più forte di NTLM
Usata per autenticare l’accesso a qualsiasi cosa
Non c’è una configurazione di default
Usata per autenticare l’accesso da
Everyone
Non c’è negoziazione tra NTLM e NTLMv2
Windows 9x richiede Directory Services client
Disegnato per proteggere il traffico di rete meglio di
NTLM
Usa hash NT
Autenticazione NTLMv2
Authn_Request
Server_Challenge – nonce
Challenge_Response
(over secured channel)
Server
Client
Authn_Result
LMCompatibilityLevel
Impatto lato client
Livello
Invia
Accetta
Invii proibiti
0*
LM, NTLM,
LM, NTLM, NTLMv2
NTLMv2, Session security
1
LM, NTLM, Session
security
LM, NTLM, NTLMv2
NTLMv2
2*
NTLM, Session security
LM, NTLM, NTLMv2
LM e NTLMv2
3
NTLMv2, Session security
LM, NTLM, NTLMv2
LM e NTLM
Impatto lato server
Livello
Invia
Accetta
Accettazioni proibite
4
NTLMv2, Session security
NTLM, NTLMv2
LM
5
NTLMv2, Session security
NTLMv2
LM and NTLM
* Default per alcuni OS
Rappresentazione delle password
“Hash” LM
Vecchia tecnologia usata in LAN Manager
Hash NT
A.k.a., password unicode password o hash MD4
Usata per autenticazione nei più recenti sistemi Windows
Credenziali in cache
Derivazioni di hash NT
Nomi utente e password salvate
Le diverse applicazioni decidono come salvare i dati
Generazione di “hash” LM “Hash”
Password convertita in TUTTE MAIUSCOLE
Riempimento con NULL fino a 14 caratteri
Divisa in due blocchi da 7
Seattle1
=
SEATTLE
+
1******
Chiave
Costante
KGS!@#$%
Chiave
DES
DES
Concatena
Costante
KGS!@#$%
LM Hash
Meccanismo challenge/response di LM
maiuscola(password[1-7])
Come chiave
KGS!@#$%
DES
LM_hash[1-8]
maiuscola(password[8-14])
Come chiave
KGS!@#$%
0000000000
DES
LM_hash[9-16]
LM_hash[17-21]
Meccanismo challenge/response di LM
Hash-LM[1-7]
Come chiave
Codice di sfida
DES
Risposta-LM[1-8]
Hash-LM[8-14]
Come chiave
Codice di sfida
DES
Hash-LM[15-21]
Risposta-LM[9-16]
0000000000
Come chiave
Codice di sfida
DES
Risposta-LM[17-24]
Password con meno di 8 caratteri…
maiuscola(password[8-14])
00000000000000
Come chiave
Hash-LM[9-16]
AAD3B435B51404EE
DES
KGS!@#$%
Hash-LM[8-14]
AAD3B435B514
Come chiave
Codice di sfida
DES
Hash-LM[15-21]
Risposta-LM[9-16]
04EE0000000000
Come chiave
Codice di sfida
DES
Risposta-LM[17-24]
Considerazioni su “hash” LM
Non è un hash
Insieme di caratteri limitato
Solo l’insieme comune di caratteri alfanumerici
Non distingue maiuscoe e minuscole (case insensitive)
Variazioni di carattere ≈ 69
Riempimento a esattamente 14 caratteri
In pratica sono due password da sette caratteri
Massima entropia ≈ 7.5*1012 password
Unsalted
Generazione di hash NT
Esecuzione dell’hash della password
Salvataggio dell’hash
Seattle1
MD4
Unicode
Pwd
Autenticazione NTLMv2
unicode(password)
MD4
Come chiave
unicode(maiuscolo(nome-utente)
+dominio-o-host)
HMAC MD5
Come chiave
Sfida del server + sfida del client
HMAC MD5
Risposta NTLMv2
Considerazioni su hash NT
Vengono preservate maiuscole e minuscole
Variazioni di caratteri > 630
Lunghezza massima = 127 caratteri
Entropia per password di 14 caratteri con lo stesso
insieme usato da “hash” LM ≈ 5.6*1025
Entropia per password di 14 caratteri
(insieme di caratteri pieno) ≈ 1.5*1039 password
Entropia per password di 110 caratteri > 8.4*10307
Excel non riesce ad eseguire il calcolo del numero di
password con 127 caratteri
Unsalted
Generazione delle credenziali in cache
Salvate al logon
Gestite da LSA
Hash di un hash
Unicode
Pwd
Nome utente
Concatena
Credenziali in cache
Dominio
MD5
Considerazioni sulle credenziali in cache
Sono salvate localmente
Possono essere compromesse
È veramente diffcile
Servono attacchi offline
Le credenziali in cache non possono essere usate cosi’
come sono per accedere a risorse in rete
Nomi utenti e passwords salvate in locale
Credential Manager
Salva credenziali basate su password
localmente
Le applicazioni possono usarlo per salvare le
password
Usa DPAPI o Protected Storage
Dove sono le password?
Security Accounts Manager
Usato in Windows NT 4.0 e per credenziali locali in
Win2000/WinXP/Win2003
Active Directory
Usata per le credenziali di dominio in Win2000/2003
Credenziali in cache salvate nel registry
Nomi utenti e password salvati localmente
DPAPI o Protected Storage
Autenticazione multipiattaforma
Active
Directory
KERBEROS
Logon
Windows Server
Logon
UNIX-Linux
Server
Dati di Autenticazione
Locali o Remoti
impostati via file di testo
Vantaggi di Kerberos
Standard de facto per l’autenticazione
Disponibile per molte diverse piattaforme
Non definisce standard per i dati di autorizzazione
Consente la mutua autenticazione Client/Server
Riduce i tempi di connessione Client/Server
Consente la delega di identità
Versione attuale Kerberos 5
Come funziona Kerberos
Gli attori
Chiave KDC generata
durante la creazione del ruolo DC
Autenticazione
con
Messaggi Criptati
User
Chiave utente generata
dalla password di logon
KDC
Database di
Security Principal
Chiave host generata
durante il join al dominio
Server
Tutti gli attori sono parte del realm Kerberos
Per comunicare con fiducia devono condividere un segreto
Come funziona Kerberos
Visione d’insieme
1 - Richiesta di autenticazione
TGT
2 – Se l’utente è riconosciuto viene restituito
un Ticket-Granting-Ticket che consente
la richiesta di service ticket
User
TGT
SR
3 – Viene richiesto un Service Ticket per
accedere alla macchina Linux1.
Nella richiesta è passato anche il TGT
che identifica l’utente
ST
4 – Il KDC rilascia un Service Ticket per
l’accesso al server Linux1
ST
Server
KDC
Come funziona Kerberos
Ticket rilasciati
TGT: identifica l’utente presso il KDC durante le
richieste di Service Ticket
Evita il mantenimento dei dati di logon
ST: Valido solamente tra User e Servizio
Consente la mutua autenticazione
Accellera la velocità di connessione perché rende
non necessaria l’autenticazione da parte del
servizio
La criptatura assicura che i ticket siano usati solo
dagli attori appropiati
Cos’è e come funziona Kerberos
Componenti
Il KDC consiste di due componenti
Authentication Service (AS)
Riceve: AS_REQuest
Invia: AS_REPly
Ticket Granting Server (TGS)
Riceve: TGS_REQuest
Invia: TGS_REPly
Come funziona Kerberos
AS_REQ
KDC Windows
User
Server
Come funziona Kerberos
Logon Iniziale
AS_REQ
User
Client principal name
Timestamp
Krbtgt principal name
Requested lifetime
KDC
L’AS verifica l’esistenza dell’account e costruisce un
Reply criptato
Criptatura eseguita con la chiave generata dalla password utente
Solo l’utente vero sarà in grado di leggere la risposta
Come funziona Kerberos
Pre-autenticazione
AS_REQ
User
Client principal name
Timestamp
Krbtgt principal name
Requested lifetime
KDC
AS decripta il timestamp e, se corrisponde all’ora
attuale (con il delta consentito – 5’ per default), la
richiesta è considerata valida
Il KDC può richiedere la pre-autenticazione
Riduce i rischi di riuso dei ticket associati ad attacchi off-line a
dizionario/forza bruta
Abilitata per default inWindows 2000/2003
Come funziona Kerberos
AS_REP
TGT
KDC Windows
User
Server
Come funziona Kerberos
Risposta dell’AS
AS_REP
User TGT
TGT viene salvato
in locale e viene
usato per le
successive
transazioni tra
utente e TGS
USER-TGS key
Krbtgt principal name
Ticket lifetime
TGT
USER-TGS key
Client principal name
Ticket lifetime
KDC Timestamp
Client IP address
KDC
Criptato con la chiave utente
USER-TGS Key
generata dall’AS
Criptato con la chiave del TGS
Come funziona Kerberos
TGS_REQ
TGT
KDC Windows
TGT
User
Server
Come funziona Kerberos
Il TGS – accesso ai servizi
TGS_REQ
Service principal name
Requested lifetime
User
TGT
USER-TGS key
Client principal name
Ticket lifetime
KDC Timestamp
Client IP address
Autenticator
Client timestamp
Criptato con la
chiave del TGS
KDC
Criptato con la USER-TGS
key
L’Autenticator garantisce che la richiesta arrivi dal client
e impedisce gli attacchi di tipo reply
Come funziona Kerberos
Il TGT
Inviato con TGS_REQ
User
TGT
Dialogo
criptato
USER-TGS
key con la USER-TGS key
Client principal name
Criptato con la
chiave del TGS
Ticket lifetime
KDC Timestamp
Client IP address
KDC
Il KDC non mantiene la USER-TGS key
La copia della USER-TGS key viene inviata con il
TGT
Come funziona Kerberos
TGS_REP
TS
KDC Windows
TGT
User
Server
Come funziona Kerberos
Risposta del TGS
TGS_REP
User TGT
ST
USER-TGS key
Ticket lifetime
USER-SERVICE key
Service Ticket
USER-SERVICE key
Client principal name
Ticket lifetime
KDC Timestamp
Client IP address
KDC
Criptato con la USER-TGS key
USER-TGS Key
generata dall’AS
Criptato con la chiave
SERVICE-TGS
Come funziona Kerberos
KDC Windows
TGT
TS
User
TS
SERVICE_REQ
Server
Come funziona Kerberos
Il TGT
Service Request
User
Service Ticket
Dialogo
criptato
con la USER-SERVICE key
USER-SERVICE
key
Client principal name
Criptato con la
chiave
Ticket lifetime
SERVICE-TGS
KDC Timestamp
Client IP address
Autenticator
Client timestamp
Server
Criptato con la
USER-SERVICE key
Kerberos non definisce un protocollo per la richiesta dei
servizi e per l’autorizzazione di accesso
Installazione di Kerberos
In Windows 2000/XP/2003 è supportato in modo
nativo e automaticamente installato
Non si deve fare nulla
È disponibile solo per logon verso domini Active
Directory o altri Realm Kerberos (configurazione
“manuale”)
© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only.
MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.
Scarica

Fatti e misfatti dei protocolli di autenticazione LM, NTLM e