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.