Fatti e misfatti dei protocolli di autenticazione LM, NTLM e Kerberos
Autenticazione e Autorizzazione 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 Usa hash NT Membri di dominio da non membri di dominio Membri di dominio quando si usa indirizzo IP \\server\share Kerberos \\192.168.1.100\share 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) Authn_Result Client 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) Authn_Result Client Server
LMCompatibilityLevel Impatto lato client Livello Invia Accetta Invii proibiti 0* LM, NTLM, LM, NTLM, NTLMv2 NTLMv2, Session security 1 LM, NTLM, Session security NTLMv2 2* NTLM, Session security LM e NTLMv2 3 LM e NTLM Impatto lato server Livello Invia Accetta Accettazioni proibite 4 NTLMv2, Session security NTLM, NTLMv2 LM 5 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 Chiave DES DES Costante KGS!@#$% Costante KGS!@#$% LM Hash Concatena
Meccanismo challenge/response di LM maiuscola(password[1-7]) Come chiave KGS!@#$% DES LM_hash[1-8] maiuscola(password[8-14]) Come chiave KGS!@#$% DES LM_hash[9-16] 00 00 00 00 00 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 Risposta-LM[9-16] Hash-LM[15-21] 00 00 00 00 00 Come chiave Codice di sfida DES Risposta-LM[17-24]
Password con meno di 8 caratteri… maiuscola(password[8-14]) 00 00 00 00 00 00 00 Come chiave Hash-LM[9-16] KGS!@#$% DES AA D3 B4 35 B5 14 04 EE Hash-LM[8-14] B5 14 35 AA D3 B4 Come chiave Codice di sfida DES Risposta-LM[9-16] Hash-LM[15-21] EE 04 00 00 00 00 00 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
MD4 Generazione di hash NT Esecuzione dell’hash della password Salvataggio dell’hash MD4 Unicode Pwd Seattle1
Autenticazione NTLMv2 unicode(password) MD4 HMAC MD5 HMAC MD5 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 Dominio MD5 Concatena Credenziali in cache
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 Active Directory 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 Dati di Autenticazione Locali o Remoti impostati via file di testo UNIX-Linux Server
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 KDC User Autenticazione con Messaggi Criptati Database di Security Principal Chiave utente generata dalla password di logon Server Chiave host generata durante il join al dominio 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 KDC TGT SR 3 – Viene richiesto un Service Ticket per accedere alla macchina Linux1. Nella richiesta è passato anche il TGT che identifica l’utente User ST ST 4 – Il KDC rilascia un Service Ticket per l’accesso al server Linux1 Server
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 KDC Windows AS_REQ User Server
Come funziona Kerberos Logon Iniziale Client principal name Timestamp Krbtgt principal name Requested lifetime AS_REQ KDC User 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 Client principal name Timestamp Krbtgt principal name Requested lifetime AS_REQ KDC User 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 KDC Windows AS_REP TGT User Server
Come funziona Kerberos Risposta dell’AS User KDC AS_REP TGT USER-TGS key Krbtgt principal name Ticket lifetime Criptato con la chiave utente USER-TGS Key generata dall’AS TGT viene salvato in locale e viene usato per le successive transazioni tra utente e TGS TGT USER-TGS key Client principal name Ticket lifetime KDC Timestamp Client IP address Criptato con la chiave del TGS
Come funziona Kerberos KDC Windows TGS_REQ TGT TGT User Server
Come funziona Kerberos Il TGS – accesso ai servizi TGS_REQ Service principal name Requested lifetime User KDC TGT USER-TGS key Client principal name Ticket lifetime KDC Timestamp Client IP address Criptato con la chiave del TGS Criptato con la USER-TGS key Client timestamp Autenticator L’Autenticator garantisce che la richiesta arrivi dal client e impedisce gli attacchi di tipo reply
Come funziona Kerberos Il TGT USER-TGS key Client principal name Ticket lifetime KDC Timestamp Client IP address Inviato con TGS_REQ User Dialogo criptato con la USER-TGS key Criptato con la chiave del TGS KDC Il KDC non mantiene la USER-TGS key La copia della USER-TGS key viene inviata con il TGT
Come funziona Kerberos KDC Windows TGS_REP TS TGT User Server
Come funziona Kerberos Risposta del TGS User KDC TGS_REP TGT USER-TGS key Ticket lifetime USER-SERVICE key Criptato con la USER-TGS key ST USER-TGS Key generata dall’AS Service Ticket USER-SERVICE key Client principal name Ticket lifetime KDC Timestamp Client IP address Criptato con la chiave SERVICE-TGS
Come funziona Kerberos KDC Windows TGT TS User SERVICE_REQ TS Server
Come funziona Kerberos Il TGT Service Ticket USER-SERVICE key Client principal name Ticket lifetime KDC Timestamp Client IP address Service Request User Dialogo criptato con la USER-SERVICE key Criptato con la chiave SERVICE-TGS Server Criptato con la USER-SERVICE key Client timestamp Autenticator 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 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.