STATO MAGGIORE DIFESA Reparto Informazioni e Sicurezza Ufficio Sicurezza Difesa BOLLETTINO DI SICUREZZA INFORMATICA N°4/2003 SISTEMI OPERATIVI : - IL PROGRAMMA “NSLOOKUP” - L’IMPORTANZA DEGLI AGGIORNAMENTI Pag. 1 Pag. 6 FOCUS ON….: - CENNI DI CRITTOGRAFIA Pag. 9 SICUREZZA DELLA RETE: - LE VENTI VULNERABILITA’ PIU’ CRITICHE PER LA SICUREZZA IN INTERNET (OTTAVA PARTE). Pag. 15 PER CONTATTI ED EVENTUALI SUGGERIMENTI : TEL. 06/46917156–FAX 06/36000904 E-MAIL : [email protected] IL PROGRAMMA “NSLOOKUP” NSLOOKUP è un programma, fornito con le distribuzioni non recenti di Linux, (le ultime release usano in sostituzione i programmi “dig” - domain information groper e “host” che svolgono pressochè le stesse funzioni). Nei sistemi operativi della Microsoft, invece il programma trova ampia applicazione. La sua funzione, tra le altre, è quella di effettuare manualmente delle query (domande) al server DNS per la risoluzione dei nomi e dei domini. Detto programma è basato su linee di comando e viene richiamato dalla shell per i sistemi operativi Linux; mentre per quanto riguarda i sistemi Windows il programma deve essere chiesto tramite l’accesso preventivo in ambiente DOS. Esistono molte varianti definite a seconda del sistema operativo su cui viene installato ma le funzioni svolte son di massima sempre le stesse. Nell’esempio che segue, si riporta una semplice sessione (effettuata su una macchina Windows 2000 Professional con collegamento ADSL): si suppone di operare in modalità DOS (START>PROGRAMMI>ACCESSORI>PROMPT DEI COMANDI) nel caso, invece di macchine Linux si opera dalla shell al prompt dell’host locale. (I numeri delle righe sono stati aggiunti per avere un riferimento e non fanno parte del dialogo). 1.C:\>nslookup 18. dominio= 2.Server predefinito : dns.interbusiness.it 19. MSxfr 3.Address: 151.99.125.2 20. IXFRversion=1 4. > set all 21. srchlist= 5. Imposta opzioni 6. debug N.B. (i caratteri battuti dall’utente sono in grassetto) 7. defname 8. search 9. nod2 10. novc 11. noignoretc 12. porta=53 13. tipo=A 14. classe=IN 15. timeout=2 16. riprova=1 17. radice=A.ROOT-SERVERS.NET. Figura 1 Pagina 1 La sessione riportata si svolge come segue (figura 1): • digitando il comando “nslookup” si richiama il programma (riga1); nslookup dichiara il nome del name server (server DNS di default) (riga 2) e il relativo indirizzo IP (riga 3). Pertanto dns.interbusiness.it è il name server del dominio e ha come indirizzo 151.99.125.2. Quindi, tutte le query saranno inviate a questo indirizzo per essere successivamente instradate, se la risposta non risiede nella cache. A questo punto il programma si arresta, “stampa” il suo prompt che è “>” e resta in attesa di istruzioni (riga 4); • si digita il comando “set all” (riga 4). Il comando set serve in genere a modificare i parametri del dialogo, con l’opzione all vengono visualizzati tutti i parametri attuali, che saranno quelli di default dato che siamo all’inizio del dialogo; • dalla riga 6 alla riga 21 sono listate tutte le opzioni attuali; infine il programma si arresta in attesa di nuove istruzioni. Di seguito sono esplicitate le righe relative ai parametri : -nodebug = non si vogliono visualizzare tutti i particolari del dialogo; in alternativa si può indicare debug per avere ulteriori informazioni; - defname = si usa il nome del dominio che è : dns.interbusiness.it; - search = a ogni nome viene fatto seguire il nome del dominio di default; - recurse = si permette al name server di interrogare ricorsivamente altri server se non ha la risposta (comportamento usuale); - d2 = si attiva il modo di debugging esaustivo (tutti i campi sono visualizzati), di default è disabilitato (per disabilitare impostare “no” davanti al comando); - vc = si usa un circuito virtuale (vc – ossia TCP) per interrogare il server. Di default è disabilitato e si usa UDP; - ignoretc =ignora i “packet truncation error” (sono delle segnalazioni di errore dovuti all’errata dimensione dei paccheti in entrata ed in uscita), di default sono visualizzati; - porta=53 = questa è la porta di default su cui è attivo il server; - tipo=A = si richiede un record di tipo “Address”; - classe=IN = si usa indirizzamento Internet; - timeout=2 se non si riceve risposta dopo 2 secondi si ripete la query; - riprova=1 = si ripete la query per un massimo di 1 volta; - radice=A.ROOT-SERVERS.NET. = indica la radice del sistema DNS; - dominio= = indica il dominio di appartenenza; - MSxfr= indica il tipo di programma per il trasferimento rapido delle query ad altre zone; - IXFRversion=1 = indica la versione del contatore di trasferimento di zona incrementale; - srchlist= = indica la ricerca in una lista indicata. Pagina 2 Inoltre il programma può agire in due modalità: Interactive – Non-interactive. Interactive: permette di effettuare più query e visualizza i singoli risultati. Viene abilitato in modo automatico quando il comando non è seguito da argomenti, oppure se il primo argomento è un trattino (-) seguito dal secondo argomento che corrisponde all’host name o all’IP del name server. Non-interactive: permette di effettuare una sola query e ovviamente visualizza il risultato della singola query. Abilitato ogni qualvolta si specifica l’host-to-find. Il DNS configurato di default nei sistemi operativi Linux a cui si effettuano le query si trova nel percorso : /etc/resolv.conf. Comandi principali del programma ? = richiama l’help; host [server] = lookup dell’host eseguendo una query al DNS di default oppure al server specificato; server nomeserver = modifica il DNS di default per la sessione corrente class= valore – modifica la query class Valori consentiti : IN = Internet class; CHAOS = chaos class; HESIOD = MIT Athena Hesiod class; ANY = wildcard, cioè tutte le classi. Passiamo ora ad analizzare le impostazioni definibili con il comando “set” il quale modifica il tipo di informazioni da richiedere al DNS. Il comando set type corrisponde a set querytype. set q[uerytype]= valore Impostazione predefinita = A (address) PARAMETRI (TYPE): = A - Indirizzo IP del computer; = ANY - Tutti i tipi di dati; = CNAME - (Canonical Name) Nome canonico di un alias (Un host può avere più di un nome. In tal caso uno di questi nomi è quello ufficiale ed è detto Canonical Name (CNAME), mentre gli altri sono detti “alias”. Gli alias sono riconosciuti come tali dal DNS. Pagina 3 =GID – Identificatore di un nome di gruppo; =HINFO – Tipo di CPU e di sistema operativo del computer; =MB – Nome della cassetta postale del dominio; =MG – Membro del gruppo posta; =MINFO – Informazioni relative alla cassetta postale o all’elenco di posta; =MR – Nome di dominio per rinominare una cassetta postale esistente; =MX – Mail exchanger; =NS – Server dei nomi DNS relativo alla zona specificata; =PTR – Nome del computer se la richiesta è un indirizzo IP. In caso contrario verranno fornite altre informazioni; =SOA – Record di origine di autorità del dominio DNS; =TXT – Informazioni di testo; =UID – Identificatore utente; =UINFO – Informazioni sull’utente; =WKS – Descrizione di servizi conosciuti. figura 2 In ambiente DOS è possibile consultare tramite il comando “help” (figura 2) tutte le potenzialità di tale programma; in ambiente Linux potrebbe succedere che digitando “man nslookup” il sistema operativo risponda con un segnale di errore (No manual entry for lookup) che indica che il programma non è presente. Si suggerisce quindi, di consultare il “man dig” per vedere come funziona il programma che sostituisce nslookup nelle ultime versioni delle distribuzioni Linux. Pagina 4 Generalmente il programa viene usato da : System Administrator : • per configurare e controllare il funzionamento di un server DNS; • per individuare e risolvere i problemi relativi alla risoluzione dei nomi degli host; • per l’ottimizzazione e configurazione dei firewall. Hackers : Per quanto riguarda invece, il mondo hacker, bisogna sottolineare l’importanza del comando “nslookup”, che viene usato in fase preparatoria prima dell’attacco vero e proprio. Questo per venire a conoscenza di quante più informazioni possibili riguardanti la “vittima”; inoltre detto comando risulta basilare per l’invio di Fake Mail via Telnet. Come Antispam : Nella lotta antispam viene usato, in quanto l’uso di questo comando consente una attenta lettura degli headers delle e-mail che, nella maggior parte dei casi, porta all’identità dello “spammer”. Pagina 5 L’IMPORTANZA DEGLI AGGIORNAMENTI Nel campo della Sicurezza Informatica e per la tutela dei propri dati personali, l’uso di antivirus e personal firewall riveste un ruolo fondamentale nella lotta contro coloro che cercano continuamente di scoprire nuovi modi per poter entrare nei computer. Questi individui conosciuti come “hacker” cercano di catturare più informazioni sui PC, sfruttando vulnerabilità conosciute o non ancora diffuse. Generalmente, si è portati a pensare che una volta installati i software dedicati alla sicurezza dei sistemi non sia necessario aggiornargli, determinando cos’ la perdita di efficacia. Il CERT.Difesa ha sperimentato questo, effettuando un test per dimostrare come dei programmi di sicurezza, non aggiornati, possano essere facilmente “aggirabili”, utilizzando un programma denominato Firewar, un exploit di sicurezza che permette di disabilitare la protezione del firewall attivo sui computer senza essere riconosciuto dagli antivirus. Il programma Firewar è disponibile in due versioni : - la prima si può scaricare e installare localmente (nostro caso); - la seconda versione è inglobata in un controllo Active X, che incluso in una pagina Web disabilita da remoto il personal firewall appena viene aperta la pagina del sito. Questa seconda versione è la più pericolosa, in quanto un sito Web costruito appositamente permetterebbe ad un hacker di utilizzare questa debolezza per far si, che una volta connessi al sito, il firewall venga disabilitato e questo possa agire indisturbato nella ricerca di informazioni sul computer vittima. Il test è stato svolto su una macchina con Windows 98 come sistema operativo. I programmi usati sono stati i seguenti : - Firewar 1.0; - Zone Alarm (ver. 2.6.362 – ver. 3.0.081 – ver. 3.5.169.002) Personal Firewall; - Norton Antivirus ed. 2002 – Norton Antivirus 2003. 1° Fase Sulla macchina sono stati installati: - Personal firewall : Zone Alarm ver. 2.6.362 (non aggiornato); - Antivirus : Norton Antivirus 2002 (aggiornato al 14.11.2001) con il live update disabilitato. Una volta installati questi programmi è stato mandato in esecuzione il programma firewar.exe. Questo disabilitava totalmente il personal firewall, abbassando tutti i settaggi su “off”; inoltre l’esecuzione di Firewar non veniva rilevata dal programma antivirus; Pagina 6 2° Fase Sono stati installati: - Personal firewall : Zone Alarm ver. 2.6.362 (non aggiornato); -Antivirus : Norton Antivirus 2003 (aggiornato al 19.08.2002) con il live update disabilitato. Nonostante la versione 2003 del programma antivirus , i risultati sono stati i medesimi. 3° Fase Sono stati installati: - Personal firewall : Zone Alarm ver. 3.1.395 (non aggiornato) - Antivirus : Norton Antivirus 2003 (aggiornato al 19.08.2002) con il live update disabilitato. Anche in questa occasione, in presenza di un personal firewall abbastanza recente (agosto 2002), il programma firewar è stato capace di bloccare il funzionamento di Zone Alarm, senza essere riconosciuto da Norton Antivirus. 4° Fase Sono stati installati : - Personal firewall : Zone Alarm ver. 3.5.169.002 - Antivirus : Norton Antivirus 2003 (con l’ultimo aggiornamento disponibile) In quest’ultima fase la prova è stata divisa in due parti lasciando in un primo momento il programma antivirus disattivato. L’esecuzione del programma firewar è risultato “trasparente” al personal firewall, infatti i settaggi sono rimasti quelli impostati dall’utente continuando così a funzionare come previsto. In un secondo momento, dopo la riattivazione del programma antivirus, l’esecuzione del programma firewar è stato riconosciuto dal Norton Antivirus 2003 come un “trojan” bloccando il suo “threat”, è consigliando di metterlo in quarantena. Pagina 7 E’, quindi, necessario aggiornare costantemente il software antivirus mediante l’update automatico o in manuale, ogni qualvolta la casa produttrice del programma antivirus ne offre la possibilità. Considerato che, in sistemi basati su reti locali o su geografiche aumenta il pericolo di diffusione dei virus, ove possibile, il sistema antivirus deve essere centralizzato (server). E’ altresì corretto considerare cha anche gli altri programmi, che in paticolare qualli relativi alla sicurezza informatica, devono essere constantemente aggiornati: questo processo garantisce da eventuali vulnerabilità man mano verificate nelle versioni obsolete, disponibili in commercio. Pagina 8 Il procedimento di crittografia consiste nel rendere illeggibile un testo in chiaro mediante l’uso di un determinato algoritmo e di una lista chiave con cui il testo è stato cifrato. E’ opportuno sottolineare il fatto che questi algoritmi sono tranquillamente resi pubblici in quanto non viene trattato il Segreto di Stato, perché la confidenzialità del messaggio è legata sopratutto alla lista chiave (key). La figura 1 mostra come il messaggio in chiaro (plaintext) originato dal mittente si trasforma in un testo cifrato (ciphertext) mediante la cifratura; il messaggio raggiunto il destinatario viene decifrato per ritornare testo in chiaro. Destinatario Plaintext Mittente Plaintext Cifratura Ciphertext Decifratura Figura 1 Ad esempio, nel Codice di Cesare, l’algoritmo consisteva nel translare le lettere del plaintext di un numero di posizioni pari a n (chiave di cifratura). In un famoso film di Kubrik, veniva denominato un super-computer “HAL”, che altro non era che l’utilizzo del codice di Cesare alla parola “IBM” con n=1. Da questo esempio risulta : - che la conoscenza delll’algoritmo di cifratura, non abilita la decifra del messaggio, se non in possesso della chiave di cifratura; - che la chiave deve essere scelta tra un vastissimo numero di combinazioni, per risultare efficace. Esistono due tipologie di algoritmi per crittografare: - algoritmi a chiave segreta (o simmetrici), in cui la chiave per cifrare è la stessa utilizzata per decifrare; - algoritmi a chiave pubblica (o asimmetrici), in cui ogni utente interessato alla comunicazione possiede 2 chiavi : una chiave privata, che conosce solo il possessore, e una chiave pubblica, che viene resa nota. Pagina 9 La crittografia a chiave segreta (CCS) La crittografia a chiave segreta (CCS) è una tecnica che modifica l'informazione in chiaro, in una cifrata, basandosi su un parametro, appunto chiamato chiave di cifratura, utilizzando la stessa sia per la cifratura che per decifratura (figura 2),(chiave simmetrica). Essendo la funzione invertibile, il destinatario dovrà soltanto elaborare nuovamente il crittogramma richiamando l'inversa della funzione di cifratura avente come parametro la stessa chiave utilizzata dal mittente. STESSA CHIAVE ALFA File cifrato OMEGA Sdsdfsdfsdaiwe nlsdluionsdinsù +à+à+eàd+èe dèeèe VANTAGGI: Figura 2 - dal punto di vista tecnico le fasi di codifica e di decodifica possono essere svolte anche da un computer non particolarmente potenti, in tempi decisamente brevi; SVANTAGGI: 1. Il limite di questa tecnica consiste nel fatto che costringe gli interessati a scambiarsi in qualche modo la chiave, con il pericolo che questa possa venire cadere nelle mani sbagliate; questo svantaggio è molto più evidente nel momento in cui la distribuzione è rivolta a più utenti. Possibile soluzione : - scambio della lista chiave attraverso un corriere abilitato; - scambio della lista chiave via e-mail cifrandola con un sistema a chiave pubblica. 2. Altro svantaggio consiste nel fatto che, considerata la difficoltà di scambiare le chiavi, queste hanno una durata abbastanza lunga, che potrebbe facilitare il lavoro di un esperto crittografo nella scoperta della lista chiave. Possibile soluzione : Per evitare questa vulnerabilità, si consiglia di aggiornare la lista chiave con frequenze più ravvicinate, variando continuamente i periodi di aggiornamento della stessa. Pagina 10 Alcuni degli algoritimi più utilizzati nella crittografia simmetrica includono: RC4, DES, Triple-DES. Questi si differenziano per lunghezza, espressa in bit, elemento base per garantire la robustezza dell’algoritmo. Infatti la robustezza dell’algoritmo deriva dalla lunghezza della chiave, in quanto più è lunga , più tempo è necessario per violare il sistema. Crittografia a chiave pubblica (CCP) Al fine di superare i problemi derivanti dalla cifratura simmetrica relativi allo scambio in sicurezza della lista chiave, vennero condotti studi approfonditi e nel Maggio del 1976, negli Stati Uniti un articolo scritto da Whitfield Diffie e Martin Hellman, pubblicato sulle "IEEE Transactions on Information Theory" del Novembre '76, annunciava un nuovo sistema che prevedeva l‘utilizzo di chiavi pubbliche. “Siamo all'inizio di una rivoluzione nella crittografia“, titolava il "New Directions in Cryptography“, prevedendo l’inizio di una nuova era per la crittografia moderna. Questo tipo di sistema crittografico consiste in due chiavi messe in relazione matematicamente, in cui quella privata viene tenuta segreta dal proprietario e quella pubblica viene distribuita oppure “allocata” su server, predisposti alla loro conservazione, consultabili da tutti gli utenti on-line. Le due chiavi vengono costruite con un meccanismo “esponenziale” di numeri primi, con modulo molto elevato, che le rende praticamente impossibili da ricostruire a partire dalla conoscenza di una sola delle due. Inoltre dato che la chiave pubblica, è resa disponibile al pubblico, la creazione e lo scambio iniziale della chiave di cifratura condivisa è più semplice rispetto a quella simmetrica. L’applicazione del metodo di cifratura a chiave pubblica trova il suo impiego ogni volta sia necessario garantire confidenzialità, autenticazione, integrità e non ripudio. La confidenzialità si ottiene tramite l’invio di messaggi cifrati; gli algoritimi a chiave pubblica prevedono che il mittente cifri con la chiave pubblica del destinatario e quest’ultimo decifri con la propria chiave privata (figura 3). ALFA File cifrato OMEGA Sdsdfsdfsdaiwe nlsdluionsdinsù +à+à+eàd+èe dèeèe File in chiaro, cifrato con la chiave pubblica di Omega Figura 3 File decifrato con la chiave privata di Omega Dato che le due chiavi, sono legate matematicamente, il testo cifrato con la chiave pubblica potrà essere decifrato solo da chi è in possesso della rispettiva chiave privata. Pagina 11 Il bisogno dell’autenticazione parte dal presupposto che le “chiavi pubbliche” non sono segrete ma note e comunque distribuibili in rete. Potrebbe succedere che con un “attacco” del tipo “man in the middle” un terza persona potrebbe inviare messaggi cifrati facendosi passare per “alfa”. Risulta, quindi, indispensabile utilizzare meccanismi che garantiscano l’identità del mittente. Per garantire che il messaggio provenga proprio da “alfa”, questo potrà firmare il documento con la propria chiave privata (firma digitale) il documento, utilizzando degli algoritmi denominati : Algoritmi di Hash. Algoritimi di Hash: Gli algoritmi di Hash sono funzioni che ricavano una stringa di lunghezza fissa (128 o 160 bit) (impronta digitale), detta “digest” o “hash”, dal messaggio in chiaro, indipendentemente dalla sua lunghezza (figura 4). TESTO IN CHIARO HASHING 101101110111101101100 DIGEST Figura 4 Si tratta di funzioni molto usate e non invertibili, cioè non è possibile risalire al testo a partire dalla conoscenza del digest. L’utilità di queste funzioni si manifesta quando queste vengono usate congiuntamente ad algoritimi simmetrici e soprattutto asimmetrici per realizzare i servizi di autenticazione, integrità e non ripudio. I più noti algoritmi di Hash sono : MD4, MD5, SHA-1 e CBC-DES-MAC che variano in base alla lunghezza del valore del digest generato. Queste funzioni dette one-way hash svolgono due funzioni molto importanti nella crittografia: - verifica dell'integrità: se il valore di hash di un certo messaggio è uguale prima e dopo la trasmissione, allora vi è una “discreta certezza” che il messaggio ricevuto sia rimasto invariato; - Concisione: nei calcoli matematici risulta più facile usare un'impronta a 128 bit che un testo normale a lunghezza variabile. Le funzioni di hash possono essere usate per la creazione di firme digitali. Molti crittosistemi richiedono calcoli molto lunghi e complessi per apporre la propria firma digitale su un file di grosse dimensioni mentre, grazie a queste funzioni, si può semplicemente calcolare e firmare il valore di hash del file, sicuramente di dimensioni molto ridotte. Pagina 12 FIRMA DIGITALE: La prima applicazione pratica della firma digitale, basata sulle tecniche di crittografia a doppia chiave fu sviluppata nel 1978 da tre professori americani: Ronald Rivest, Adi Shamir e Leonard Adleman, l’algoritmo “RSA" (dalle iniziali dei suoi inventori) e la sua implementazione. Tale processo si sviluppa nelle seguenti fasi (figura 5): Messaggio in chiaro Messaggio in chiaro HASHING DIGEST in chiaro DIGEST Cifrato Se risultano uguali il msg risulta autenticato Messaggio in chiaro Se non risultano uguali il msg non risulta autenticato HASHING DIGEST in chiaro Chiave privata di Alfa DIGEST Cifrato Figura 5 DIGEST in chiaro Chiave pubblica di Alfa 1. il messaggio da “firmare” viene sottoposto alla funzione di hash (“hashing”) che, in base ad una formula matematica, genera una stringa di caratteri detta “digest” di lunghezza fissa. Anche cambiando un solo carattere del messaggio la stringa risulterà diversa; 2. il digest viene cifrato con la chiave privata del PC Alfa; 3. il messaggio ed il digest, vengono trasmessi al PC Omega. Il destinatario PC Omega, procederà ad effettuare un controllo con le seguenti operazioni: 1. sottopone nuovamente alla funzione di hash (“hashing”), il messaggio, generando un nuovo digest; 2. decifra il digest cifrato ricevuto utilizzando la chiave pubblica del PC Alfa; 3. confronta i due digest. Pagina 13 Se i due digest sono uguali la firma risulta autentica. Differentemente possono essere accadute due cose : - chi ha mandato (autenticazione); il messaggio non è il possessore della chiave privata - il messaggio è stato modificato durante la trasmissione (integrità); - infine questo meccanismo non consente al trasmittente di “ripudiare” tutto quello scritto nel messaggio. Nell’uso comune però, anche se l’utilizzo della cifratura a chiave pubblica risulta più sicura, la sua elaborazione è molto più “pesante”, mentre gli algoritmi a cifratura simmetrica risultano molto più veloci. Per ovviare a tutto ciò in pratica si usa cifrare il messaggio con la chiave simmetrica (processo elaborato in tempi brevi), quest’ ultima invece, viene spedita al destinatario cifrata con la sua chiave pubblica (figura 6). OMEGA ALFA Chiave simmetrica Messaggio in chiaro Cifratura con chiave simmetrica Chiave simmetrica cifrata con la chiave pubblica di OMEGA Chiave simmetrica cifrata Messaggio cifrato Figura 6 In ricezione Omega decifrerà la chiave simmetrica, con la sua chiave privata, in un secondo momento ottenuta la chiave simmetrica potrà in tempi brevi decifrare il messaggio. In rete è possibile trovare programmi per la cifra e decifra con chiavi asimmetriche e simmetriche. Il più famoso è PGP (Pretty Good Privacy) (www.pgp.com) il quale funziona sia su sistemi operativi Microsoft che Unix like. La GNU interessata a PGP ha sviluppato un sistema analogo ``The GNU Privacy Guard'', cioè GPG, che opera solo su piattaforme Unix like. Informazioni e codice sono disponibili all'URL: http://www.d.shuttle.de/isil/crypt/gnupg.html Pagina 14 LE VENTI VULNERABILITA’ PIU’ CRITICHE PER LA SICUREZZA IN INTERNET (OTTAVA PARTE) W6 Autenticazione LAN Manager -- Hashing LM debole W6.1 Descrizione: Per quanto la maggior parte degli ambienti Windows attuali non necessitino del supporto LAN Manager (LM), Microsoft memorizza per default in locale gli hash delle password legati al LM (noti anche come hash LANMAN) nei sistemi Windows NT, 2000 e XP. Siccome LAN Manager usa uno schema di codifica molto più debole di quelli, più aggiornati, attualmente utilizzati da Microsoft (NTLM and NTLMv2), le password del LAN Manager possono essere violate in brevissimo tempo. Anche le password che in un altro ambiente sarebbero considerate "forti" possono essere violate con sistemi "brute-force" in meno di una settimana. La debolezza degli hash del Lan Manager deriva dal fatto che: • le password sono troncate a 14 caratteri; • le password utilizzano lo spazio come carattere di riempimento per raggiungere i 14 caratteri; • i caratteri usati nelle password vengono convertiti tutti in caratteri maiuscoli; • le password vengono divise in due blocchi di sette caratteri. Questo processo di hashing comporta che, per ottenere un accesso autenticato al sistema, un eventuale aggressore ha bisogno solo di determinare due semplici password da sette caratteri, che per di più contengono solo caratteri maiuscoli. Siccome la difficoltà nel violare gli hash aumenta con progressione geometrica in proporzione alla lunghezza dell’hash, ciascuna stringa di sette caratteri è almeno di un ordine di grandezza più semplice da attaccare con sistemi "brute-force" rispetto a una stringa di quattordici caratteri. Dal momento che le stringhe sono tutte esattamente di sette caratteri (spazi inclusi) e tutte in caratteri maiuscoli, anche un attacco da dizionario risulta molto semplificato. Il metodo di hashing del Lan Manager rende quindi inefficace qualsiasi buona policy sull’uso delle password. In aggiunta al rischio dettato dal fatto di avere gli hash collegati a LM memorizzati nel SAM, il processo di autenticazione del LAN Manager è spesso abilitato per default sui client e accettato dai server. La conseguenza è che macchine Windows, in grado di utilizzare hash più robusti, inviano hash LM deboli attraverso la rete, rendendo l’autenticazione di Windows vulnerabile all’intercettazione attraverso packet sniffing e facilitando il compito degli aggressori di recuperare e violare le password degli utenti Pagina 15 W6.2 Sistemi operativi interessati Tutti i sistemi operativi Microsoft Windows. W6.3 Riferimenti CVE Non disponibili. W6.4 Come determinare se siete vulnerabili Se utilizzate un'installazione predefinita di NT, 2000 o XP, siete vulnerabili, perché l’impostazione predefinita prevede il salvataggio in locale degli hash del LAN Manager. Se nel vostro ambiente avete sistemi operativi che richiedono l’autenticazione LM per comunicare con in server, allora siete vulnerabili perché tali macchine inviano gli hash del Lan Manager attraverso la rete, e questi corrono il rischio di essere intercettati. I più sofisticati strumenti per la determinazione delle password in ambiente Windows come LC4 (l0phtcrack versione 4, disponibile all’indirizzo http://www.atstake.com/research/lc/download.html) vi mostreranno tutti gli hash trovati nel database SAM (LM, NTLM o NTLMv2), e metteranno in evidenza la possibilità di violare ciascun hash. ATTENZIONE: Non utilizzate mai un password scanner, neanche sui sistemi per i quali avete un accesso da amministratore. W6.5 Come proteggersi 1. Disabilitare l’autenticazione LM attraverso la rete. Il modo migliore per sostituire l’autenticazione LAN Manager in Windows è quello di utilizzare NT Lan Manager versione 2 (NTLMv2). I metodi di verifica/risposta di NTLMv2 eliminano la maggior parte dei difetti del Lan Manager utilizzando crittografia più avanzata e meccanismi di autenticazione e per la sicurezza delle sessioni decisamente migliori. La chiave del registro che controlla questa proprietà per Windows NT e 2000 è: Hive: HKEY_LOCAL_MACHINE Key: System\CurrentControlSet\Control\LSA Value: LMCompatibilityLevel Value Type: REG_DWORD - Number Valid Range: 0-5 Default: 0 Pagina 16 Descrizione: questi parametri specificano il tipo di autenticazione che sarà utilizzato. 0 - Spedisce le risposte LM e le risposte NTLM; non usa mai il meccanismo di sicurezza delle sessioni NTLMv2 1 - Usa meccanismo di sicurezza delle sessioni NTLMv2 se richiesto 2 - Invia solo l'autenticazione NTLM 3 - Invia solo l'autenticazione NTLMv2 4 - DC rifiuta l'autenticazione LM 5 - DC rifiuta l'autenticazione LM e NTLM (accetta solo NTLMv2) Se tutti i vostri sistemi sono Windows NT SP4 o successivi, potete impostare il valore a 3 su tutti i client e a 5 su tutti i controller di dominio, in modo da evitare qualsiasi trasmissione di hash LM in rete. I sistemi di vecchio tipo (come Windows 95/98) non usano NTLMv2 con il Client di rete Microsoft predefinito. Per implementare le funzionalità NTLMv2, installate il Directory Services Client. Una volta installato, la chiave del registro corrispondente è "LMCompatibility," e i valori consentiti sono 0 o 3. Se non potete obbligare i vostri client più vecchi ad usare NTLMv2, potete ottenere comunque un certo miglioramento nel sistema di hashing LM forzando NTLM (NT Lan Manager, versione 1) sul controller di dominio (impostate "LMCompatibilityLevel" a 4). Ma l’opzione più sicura riguardo a questi sistemi è quella di passare a sistemi più recenti, dal momento che i sistemi operativi più vecchi non permettono neanche questo minimo livello di sicurezza . 2. Evitare la memorizzazione degli Hash LM. Un altro problema che si presenta anche qualora si eviti che gli hash LM vengano inviati attraverso la rete è che gli hash vengono comunque creati e memorizzati nella SAM o Active Directory. Microsoft rende disponibile un meccanismo per evitare la creazione degli hash LM, ma solo in Windows 2000 e XP. Sui sistemi Windows 2000, la funzione è controllata da questa chiave del registro: Hive: HKEY_LOCAL_MACHINE Key: System\CurentControlSet\Control\LSA\NoLMHash Se questa chiave viene creata in un Controller di Dominio di Windows 2000, gli hash LanMan non saranno più creati e memorizzati nella Active Directory. Su Windows XP, la stessa funzionalità può essere implementata impostando questo valore del registro: Hive: HKEY_LOCAL_MACHINE Key: System\CurrentControlSet\Control\Lsa Value: NoLMHash Type: REG_DWORD - Number Data: 1 Pagina 17 Dopo aver effettuato queste modifiche al registro, è necessario riavviare il sistema in modo che le nuove impostazioni abbiano effetto. NOTA IMPORTANTE: Questa operazione evita solo che vengano generati nuovi hash LM. Gli hash LM esistenti vengono rimossi singolarmente solo quando l’utente modifica la propria password. I seguenti articoli di Microsoft forniscono alcune utili indicazioni: •How to Disable LM Authentication on Windows NT [Q147706] specifica le modifiche al registro richieste per Windows 9x e Windows NT/2000. •LMCompatibilityLevel and Its Effects [Q175641] interoperabilità relativi a questo parametro. spiega i problemi di •How to Enable NTLMv2 Authentication for Windows 95/98/2000/NT [Q239869] illustra come utilizzare il Directory Services Client di Windows 2000 in Windows 95/98 per superare i limiti di compatibilità con NTLMv2. •New Registry Key to Remove LM Hashes from Active Directory and Security Account Manager Pagina 18