
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
Archivio: Novembre 2002 ml@sikurezza.org Soggetto: Re: password di windows 2000 Mittente: Enrico Branca Data: 15 Nov 2002 12:48:03 -0000
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Ciao andrea visto che non mi sembra carino rimandare a link o altre cose che si possono trovare "tranquillamente" in rete, vedo di dare un contributo tangibile e testabile, per cui provo a dirti quello che sò io a proposito del tuo dubbio. se ci sono dubbi o parti poco chiare, siete tutti invitati a commentare, e ancora meglio se trovate che qualcosa di quello che dico è sbagliato. **** inizio risposta **** Ricordiamo che ci sono tool che permettono di attaccare il database che contiene l'hash delle password, come ad esempio l0phtcrack, @stake LC4, john the ripper. In windows 2000 la cosa è complicata dal fatto che tutto il database è cifrato da una chiave random a 128 bit, che è a sua volta protetta con un'altra chiava chiamata system key. Quest'ultima chiave è mantenuta sul disco locale protetta da un non ben precisato algoritmo di oscurazione. Normalmente il Sam della macchina è criptato usando una chiave di avvio che è mantenuta in locale. Questa chiave contiene un codice di hash che è stato processato durante l'avvio, e permette al database degli account di essere decriptato e conservato in memoria dove poi diventa accessibile per il sistema. Questo comportamento del sistema può essere cambiato usando una utility da linea di comando che si chiama SYSKEY ed è syskey.exe. Questa utility consente all'amministratore di cambiare il punto in cui viene conservato l'hash, permettendo di spostare il codice su un altro punto del disco o su di un dischetto. Se viene fatto uno spostamento del file di hash su dischetto, ci si deve ricordare di conservarlo in un posto sicuro, perchè senza questo dischetto il sistema non può fare boot e non può decifrare il database degli account e delle password. Un modo per proteggere meglio i dati è implementare i requisiti minimi di complessità delle password. Con questa implementazione si hanno a disposizione diverse librerie che possono essere usate per forzare gli utenti a stabilire vari livelli di complessità della password. Microsoft ha una libreria chiama PASSFILT.DLL che fornisce dei riquisiti di complessità basilari. È possibile anche creare librerie di controllo password adattate alle esigenze di sicurezza. Basta aggiungere il nome della DLL all'interno del registro. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA NotificationPackages Per maggiori info guardare: HOWTO: Password Change Filtering & Notification in Windows NT http://support.microsoft.com/default.aspx?scid=KB;en-us;q151082 Per impostare l'uso di questa libreria in NT4 si deve creare una chiave di registro: HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Notification Packages\ REG_MULTI_SZ passfilt Questa DLL è inclusa di default all'interno di Windows 2000 e viene attivata attraverso la MMC ed i "security templates". Ci sono regole che impongono un livello di complessità delle password. Le regole sono basate sull'importanza dei dati, sul rischio di esposizione e su molti altri parametri molto meno generici. Generalmente una password FORTE ha almeno 7 caratteri ed è costituita da lettere maiuscole, minuscole, numeri e caratteri speciali. Molto meglio sarebbe implementare password di lunghezza variabile solo fra password di 7 caratteri e password di 14 caratteri. Per gli account che hanno diritti amministrativi è buona norma inserire nella password caratteri spaciali ad esempio: *, %, &, ! *** SAM (security account manager) *** Le password vengono mantenute all'interno di un database criptato. Questo database è parte del registro di windows e normalmente non è accessibile. Il SAM lo si trova in due locazioni del sistema: \\WINNT\\SYSTEM32\CONFIG\SAM \\WINNT\\REPAIR La seconda locazione è creata solo nel caso in cui si faccia almeno una volta il "dischetto di ripristino" del sistema, che in win2k si crea dal programma di backup. Questa copia sel SAM contiene le password degli account GUEST e ADMINISTRATOR *** LanManager (LM) *** windows salva due tipi di password, WindowsNt e LanMan. Questi due tipi di password vengono generate in modi differenti. ** LanMan password: viene generata prendendo i primi 14 bytes della WindowsNT password. Se la password di NT è piu corta di 14 bytes, allora i bytes rimanenti vengo sostituiti con caratteri nulli. I caratteri vengono convertiti in caratteri maiuscoli. I 14 bytes vengono poi spezzati in due parti. Le stringhe risultanti allora sono espanse usando "odd parity to 8 byte DES keys". Ogni stringa viene quindi criptata prendendo come riferimento una chiave nota: 0x4b47532140232485 Queste stringhe vengono quindi concatenate ed il risultato è un "one way" LanMan hash. ** WindowsNT password: Dovuto alla natura della GUI, la grandezza massima della password è di 14 caratteri. Questa password viene convertita in UNICODE. Viene quindi calcolato l'MD4 hash. ** debolezze degli hash LanMan ** Se la password in esame è piu corta di 7 caratteri, allora la seconda parte dell'LM è composta da 7 caratteri nulli. Il confronto viene effettuato sui caratteri "0000000" e quello che si ottiene credo che sia chiaro. Per cui la robustezza della password viene testata su di un hash di soli 8 bytes. Secondo problema di LM è che le password vengono testate usando solo caratteri maiuscoli, per cui viene eliminatà la metà delle casistiche di analisi sui caratteri alfabetici. (per avere una spiegazione meno "casalinga" e più accademica consiglio il libro "Hacking Exposed Windows 2000", libro molto ben fatto e a mio parere quasi indispensabile per tenersi al passo coi bug) A causa di questi problemi, windows NT, 2000 ed XP sono vulnerabili ad attacchi di tipo "brute force" dato che usano metodi di protezione che risalgono al 1998. Come detto in precedenza i sistemi Windows NT, 2000 ed XP utilizzano un programma che si chiama SYSKEY. Questo rende impossibile l'utilizzo di alcuni tipi di programmi che fanno l'auditing delle password. Ad esempio conoscendo la password dell'amministratore di sistema è possibile utilizzare "pwdump3e" che permette di fare il dump di tutti gli account presenti all'interno della macchina per poi fare con calma la decifratura delle password su di una seconda macchina. Nel caso in cui la macchina win2k o winXP sia un PDC le password degli utenti sono integrate in Active Directory e si farebbe il dump solo degli account di sistema. Lato server, per ridurre i rischi legati alle password si possono migrare le macchine Windows NT a Windows 2000. Poi migrare i domini da "mixed mode" a "native mode". Sulle macchine client che utilizzano Windows 95/98/ME è possibile utilizzare una utility presente all'interno del CD di installazione dei sistemi server che si chiama "ADclient", che permette di utilizzare NTLMv2 e di fare browsing all'interno di Active Directory. Nel caso in cui non si possa eliminare la compatibilità a sistemi che usano NTLM allora è necessario modificare il livello di compatibilità. Modificando la chiave di registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\ LMCompatibilityLevel si modifica la compatibilità. Valori che si possono assegnare alla chiave: 0 Send LM and NTLM response I client utilizzano LM e NTLM e non NTLMv2 I Domain Controller utilizzano LM, NTLM, e NTLMv2 1 Use NTLM 2 session security if negotiated I client utilizzano LM e NTLM e utilizzano NTLMv2 solo se supportato dal server. I Domain Controller utilizzano LM, NTLM, e NTLMv2 2 Send NTLM response only I client utilizzano solo NTLM; NTLMv2 solo se supportato dal server. I Domain Controller utilizzano LM, NTLM, e NTLMv2 3 Send NTLM 2 response only I client utilizzano solo NTLMv2, ma solo se supportato dal server. I Domain Controller utilizzano LM, NTLM, e NTLMv2 4 Domain controllers refuse LM responses I client utilizzano solo NTLMv2, ma solo se supportato dal server. I Domain Controller rifiutano autenticazioni LM ed accettano NTLM e NTLMv2 5 Domain controllers refuse LM and NTLM responses (accept only NTLM 2) I client utilizzano solo NTLMv2, ma solo se supportato dal server. I Domain Controller rifiutano autenticazioni LM e NTLM; accettano solo NTLMv2 Da ricordare però che window 2000 permette l'utilizzo dell'impostazione " Store password using reversible encryption" e significa che le password, per compatibilità con applicazioni che usano protocolli che richiedono il passaggio di password in chiaro, vengono inserite IN CHIARO all'interno del sistema (o di Active Directory). Importante sapere che se questa opzione viene selezionata anche per un solo utente, la modifica viene fatta all'intero dominio !! Programmi famosi che permettono di attaccare il SAM: L0phtcrack 2.x @stake LC3 @stake LC4 John the Ripper pwdump3 pwdump3e Non considero per adesso tutti i modi in cui si potrebbe reperire la password di una macchina utilizzando le famose NULL SESSION, visto che si andrebbe fuori tema. Direi che la risposta è anche troppo lunga. In caso di dubbi posso rispondere anche in privato. Buona decifratura di password :-) Spero di essere stato utile. Enrico Branca -----BEGIN PGP SIGNATURE----- Version: PGP 6.0.2i iQA/AwUBPdQ4K0VqSmXe/tZ/EQIKuwCgi5gtMTYdMfQ+w2xI0p0PKbxq2zMAnjCw MfuZjvOVHltF/1WbkE+/GMaQ =LRoJ -----END PGP SIGNATURE----- ________________________________________________________ http://www.sikurezza.org - Italian Security Mailing List
[ Home | Liste | F.A.Q. |
Risorse | Cerca... ]
www.sikurezza.org - Italian Security Mailing List
(c) 1999-2005