[ Home | Liste | F.A.Q. | Risorse | Cerca... ]


[ Data: precedente | successivo | indice ] [ Argomento: precedente | successivo | indice ]


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