In questo articolo illustrerò come portare a compimento semplici attività di controllo di una rete Microsoft in merito alla presenza di password blank (in bianco) o guessable (indovinabili) assegnate ad utenti del sistema o dei principali servizi presenti nella rete. Secondo me è importantissimo effettuare con costanza questo tipo di controlli e consiglio vivamente a tutti gli amministratori di rete di affrontare l'argomento, potreste rimanere particolarmente sorpresi dai risultati.
Premessa
Se siete gli amministratori di una rete Microsoft, grande o piccola che sia, considerato l'enorme incremento subito negli ultimi anni dal numero delle vulnerabilità scoperte e rese pubbliche, dovreste iniziare a preoccuparvi seriamente delle problematiche legate alla sicurezza dei computer (client e server) che ne fanno parte. Le possibili vulnerabilità del software al giorno d'oggi sono tantissime e di diversa natura, la loro classificazione viene costantemente aggiornata dagli esperti del settore e, per chi esperto non lo è, diventa sempre più difficile riuscire a capire quanto una rete sia sensibile ad attacchi di vario genere, siano essi portati a compimento da utenti interni alla rete oppure da malware di ogni sorta (worms, spyware, rootkits, ecc...). A mio avviso è importante non dimenticare mai che esistono però alcune vulnerabilità ben conosciute (well-known-vulnerabilities) che normalmente vengono testate e sfruttate da sempre in qualsiasi tipo di attacco, questo anche grazie alla loro sorprendente semplicità. Basta seguire un po' più da vicino il fenomeno malware per rendersi conto che forse le vulnerabilità più utilizzate da essi per replicarsi sui computer di una rete riguardano le "password deboli"; quasi tutti i malware infatti sono in grado di propagare l'infezione sfruttado molteplici tipologie di vulnerabilità e, tra queste, il controllo delle password assegnate agli account amministrativi non manca praticamente mai. Se i malware, al fine di portare a compimento attacchi "di massa", prestano parte della loro attenzione alle password deboli, significa che questo tipo di vulnerabilità può essere sicuramente sfruttata anche da utenti maleintenzionati al fine di portare a compimento attacchi mirati verso una rete aziendale, meglio ancora: ai dati che transitano in essa.
Password "classiche" di una rete Microsoft
Vediamo di elencare brevemente quali sono le password che normalmente ci troviamo a configurare in una classica rete composta da servizi Microsoft:
- Password di utenti che possiedono diritti amministrativi nell'intero dominio, come per esempio gli utenti che fanno parte dei gruppi Domain Admins ed Enterprise Admis di Active Directory.
- Password assegnate all'utente Administrator presente in locale su macchine client o server iscritte al dominio (quelle non iscritte al dominio rappresentano un pericolo inferiore)
- Password assegnate ad altri utenti che possiedono diritti amministrativi locali su macchine client o server (come gli utenti locali e di dominio che per qualche motivo vengono aggiunti come membri dei gruppi Administrators e Power Users locali)
- Password assegnate agli utenti amministrativi dei SQL Server presenti nella rete, siano questi versioni gratuite (MSDE o SQL 2005 Express) o versioni commerciali (SQL Server 2000, SQL Server 2005). Forse non tutti lo sanno ma il classico utente "SA", l'utente amministrativo predefinito di SQL Server, possiede pieni diritti amministrativi sul sistema nel quale quest'ultimo è installato; vi presenterò più avanti un programma in grado di sfruttare gli utenti SQL al fine di controllare il sistema operativo.
"La" vulnerabilità password per eccellenza
Vi ho appena elencato le tipologie di password che normalmente si configurano quando si amministra una rete Microsoft, è chiaro che ognuna di esse, se sottovalutata, può costituire una possibile vulnerabilità. Esiste però un punto debole che nella mia esperienza ho riscontrato maggiormente rispetto agli altri, ovvero l'esistenza di password blank (in bianco) assegnate a quegli account amministrativi definiti "locali" ai computer client della rete.
Non vi capita mai di acquistare forniture di pc preinstallati direttamente dal produttore? Normalmente, quando acquistiamo un pc preinstallato, veniamo costretti dal produttore a terminare una procedura post-installazione nella quale ci vengono richieste una serie di informazioni necessarie alla personalizzazione della macchina (come il nome computer e la descrizione computer) ed altre che riguardano strettamente gli utenti che la utilizzeranno. Se avete presente di cosa stia parlando saprete sicuramente che nessuno degli utenti creati durante la post-installazione viene dotato automaticamente di una password e che ognuno di essi possiede inoltre diritti amministrativi sul computer in questione. Va fatto notare anche che le procedure post-installazione più datate non permettevano nemmeno di specificare una password per l'account amministrativo locale "Administrator", la cui esistenza passa nettamente in secondo piano, basti pensare al fatto che non viene nemmeno elencato nella schermata di login su Windows XP.
Il problema vero e proprio è questo: questa "imbarazzante" e caotica procedura di installazione spesso aiuta soltanto a lasciarsi alle spalle qualche computer dotato di utenti con password in bianco e, all'interno di una struttura di dominio windows, l'esistenza degli account locali va normalmente a finire nel dimenticatoio.
Strumenti per la scansione
- Microsoft Baseline Security Analyzer (MBSA), http://www.microsoft.com/technet/security/tools/mbsahome.mspx [1]
Si tratta di un prodotto gratuito e facile da utilizzare, permette di scansionare l'intera rete alla ricerca delle vulnerabilità più comuni, tra queste anche l'esistenza di password deboli (weak passwords). Nonostante la scansione risulti piuttosto pesante e lenta mi sento comunque in dovere di consigliarne l'utilizzo poiché è ovviamente lo strumento che raggiunge la migliore integrazione con i sistemi operativi Microsoft e questo porta a migliori risultati.
MBSA 2.0.1
MBSA 2.1
Qui sopra potete vedere le opzioni che vi consiglio di utilizzare per una rapida scansione della rete, ovviamente lo strumento fornisce risultati migliori se viene utilizzato per mezzo di un account utente che possiede privilegi amministrativi sulle macchine da scansionare, potreste utilizzare un account di servizio amministrativo del dominio. Al termine della scansione verrà generato un report che potrete ordinare per criterio (vi consiglio di ordinarlo per "rischio" - worst first - in modo da poter visualizzare per primi i computer che possiedono il livello di sicurezza più critico). Come dicevo lo strumento è di facile utilizzo e non credo ci sia molto da aggiungere, vi consiglio comunque di provarne la versione stabile 2.0.1 e lasciar perdere per il momento la 2.1 (a meno che non dobbiate scansionare macchine Windows Vista).
- XFocus X-Scan 3.3, http://www.xfocus.org/programs/200507/18.html [4]
Questo è invece uno strumento un po' più difficile da utilizzare rispetto ad MSBA, non tanto perché sia più complesso ma quanto per l'esistenza di tante funzionalità inserite in una grafica piuttosto spartana e poco intuitiva. Il pregio maggiore di X-Scan è costituito dal fatto che è molto veloce nell'eseguire le scansioni dei computer.
Non va installato ma soltanto estratto ed eseguito (lo si scarica in formato rar), ecco come si presenta:
La pressione del primo pulsante da sinistra o del menu Config -> Scan parameter causa l'apertura di una seconda finestra nella quale si trovano tutte le impostazioni assegnabili ad uno scan job (un lavoro di scansione).
Nella sezione "Scan Range" è possibile settare un IP Address Range, un intervallo di indirizzi IP da scansionare (es. 192.168.0.1-192.168.0.254) oppure caricare una lista di host da un file di testo. Nella sezione "Global Options->Modules" invece è possibile selezionare quali tipi di attacchi utilizzare. Nella figura di esempio io ho selezionato soltanto le due opzioni che ci permettono di lavorare su ciò che abbiamo analizzato fin'ora, ovvero: NT-Server-Password (Password degli account utente di Windows) e SQL-Server-Password (Password di SQL Server). E' interessante anche la possibilità di scansionare le password FTP e Telnet in quanto spesso ci permettono di individuare stampanti multifunzione o apparati di rete ai quali non sono state assegnate password. L'opzione NetBios-Info invece si occupa di ricavare informazioni su servizi, utenti e condivisioni della macchina mediante l'utilizzo del protocolo NetBios.
La sezione "Global Options->Parallel scanning" ci permette invece di ridimensionare l'impatto che la scansione avrà sulle risorse del sistema e della rete, con i valori "Max parallel host" e "Max paraller thread" possiamo impostare quanti host e quanti tentativi per host vogliamo effettuare contemporaneamente (in parallelo). I valori 10 e 100 che vengono proposti in maniera predefinita sono sufficienti ad avere una scansione leggera ma comunque abbastanza veloce, per aumentare la velocità della scansione potete provare ad aumentare il valore di "Max parallel host".
Altra sezione degna di nota è la "Global Options->Others" nella quale possiamo impostare X-Scan in modo che cerchi di eseguire i test anche sui sistemi protetti da firewall o che semplicemente non rispondono al ping. Inoltre, grazie all'opzione "Display verbose information" possiamo aumentare il livello di dettaglio dell'output fornito dal programma.
Nella sezione "Plug-in Options->Port" possiamo impostare singolarmente le porte da scansionare oppure definire un range di porte di cui effettuare la scansione. X-Scan cercherà di identificare automaticamente i servizi scoperti per mezzo dell'attività di scansione delle porte al fine di stabilirne il grado di vulnerabilità. Se la stringa "Scan Port" risultasse vuota X-Scan non eseguirà la scansione dell'host e procederà con il solo test delle vulnerabilità utilizzando le porte predefinite dei servizi da analizzare (Default Port).
Le altre sezioni "Plugin Options->SNMP, NetBios, NASL ed HTTP" riguardano invece impostazioni specifiche dei corrispettivi moduli; in particolare quella relativa al modulo NetBios permette di scegliere quali informazioni cercare di recuperare dalla macchina "vittima" della scansione.
Di maggiore interesse è invece la parte Dictionary, nella quale possiamo vedere tutti i dizionari (nome utente-password) sulla base di quali verranno effettuati i tentativi di login per i vari protocolli; per mezzo di un doppio click è possibile cambiare ciascuno di questi dizionari.Vi faccio notare che i dizionari non sono altro che files di testo con estensione .dic contenuti nella cartella DAT del programma.
Per tutti i protocolli viene utilizzato lo stesso file di password "weak_pass.dic" nel quale sono definite le password da testare; come variabili di password è possibile definire anche %username% e %null% che indicano rispettivamente "il nome utente utilizzato" e la password "nulla" (bianca).
Questi dizionari potrebbero quindi essere ampliati al fine di indovinare le password più semplici assegnate agli account utente di una macchina. A questo scopo vi segnalo due pagine nelle quali potrete reperire tantissime wordlist da utilizzare nei vostri test di penetrazione:
Nei siti appena segnalati sono reperibili liste di parole di ogni genere: nomi personali, cognomi, vocabolari, nomi e date importanti, città, films, cantanti... ecc. Sono in formato testuale e quindi utilizzabili con qualsiasi programma di password scanning/cracking.
Un'altro interessante strumento è WoRd_LiSt_MaNiPuLaTeR [16] (mirror locale v6 per linux [17], mirror locale v6 per windows [18]) che vi permette di rielaborare le vostre wordlist per renderle ancora più efficaci.
Una volta terminata l'impostazione dei parametri di scansione sarà sufficiente premere OK per chiudere ed avviarla tramite il pulsante START di colore verde. Alternativamente, per mezzo del pulsante "Save As" presente nella finestra dei parametri di configurazione, è possibile salvare le impostazioni creando così diversi profili di scansione da caricare all'occorrenza.
X-Scan resta un ottima scelta per effettuare rapide scansioni ma dovete però ricordare che se lo fate utilizzando un utente che possiede diritti amministrativi sui computer da esaminare rischiate di ottenere come risultato falsi avvisi inerenti alla possibilità di estrapolare numerose informazioni dalle macchine prese in esame; la causa di questo comportamento è il fatto che essendone amministratori siete in grado di controllare da remoto i computer senza inserire nessuna password (per effetto dell'autenticazione windows integrata).
Strumenti per lo sfruttamento delle vulnerabilità
Per poter dimostrare quanto possa essere pericolosa la presenza di password deboli all'interno della nostra rete credo sia necessario dare uno sguardo anche agli strumenti che permettono di sfruttarle.
- SQL Exec 2.0 Helper Tool
Si tratta di uno strumento in grado di sfruttare Microsoft SQL Server al fine di eseguire comandi in qualità di amministratore della macchina su cui esso è installato.
L'utilizzo è semplicissimo: necessita di un account SQL Server valido e permette di eseguire manualmente comandi attraverso il campo di inserimento testo "Command" (nell'esempio sopra riportato ho eseguito un dir c:\), oppure permette di fruire di un ottima selezione dei principali comandi comuni a tutti i prompt dei sistemi Windows.
Nell'esempio sottostante si nota la possibilità di aggiungere o cancellare utenti, cercare i nomi degli altri computer connessi alla rete, fermare/avviare servizi e condividere cartelle.
Cosa succederebbe se un utente oppure un malware sfruttassero questo prompt dei comandi al fine di copiare ed eseguire sulla vittima i programmi più disparati?
- Dameware NT Utilities, http://www.dameware.com/products/dntu/ [23]
Questo è forse uno dei più storici programmi di amministrazione remota di sistemi NT, semplicemente mediante l'inserimento di credenziali amministrative valide è in grado di gestire totalmente una o più macchine. Le possibilità offerte vanno dall'esecuzione di comandi attraverso un prompt fino alla possibilità di fare l'upload e l'avvio di servizi ed eseguibili arbitrari; tra questi va incluso anche il performante Dameware Mini Remote Control, si tratta di un servizio che permette di assumere il controllo del desktop delle macchine remote. Dall'immagine che vi riporto qui sotto si denota chiaramente che lo strumento in questione risulta piuttosto semplice ed intuitivo da utilizzare.
Vi faccio notare che Dameware NT Utilities possiede funzionalità che gli permettono di dialogare anche con Active Directory.
Non è assolutamente mia intenzione rendere questo articolo un tutorial passo-passo su come compromettere macchine Windows dotate di password deboli, questo è il motivo per il quale ho deciso di presentarvi soltanto due degli strumenti più conosciuti ed utilizzati in questo campo. Credo che in ogni caso non sia difficile immaginare cosa si possa fare all'interno di una rete informatica possedendo anche soltanto un nome utente ed una password validi, con questo voglio soltanto ribadire l'enorme importanza che ha prestare particolare attenzione a questo tipo di vulnerabilità.
Altri strumenti
Per completezza riporto qui sotto una breve descrizione di altri due famosissimi strumenti direttamente collegati all'argomento che stiamo affrontando.
- THC [25] Hydra
Questo strumento esiste sia per windows [26] che per linux [27]. Nel mondo linux è considerato forse uno dei migliori strumenti per il bruteforcing [28] di password ed è dotato di un ottima interfaccia grafica. In Windows invece non viene utilizzato molto, forse per il semplice motivo che ne è disponibile soltanto una versione da "prompt dei comandi". THC Hydra è purtroppo un progetto che è stato abbandonato ma l'ultima versione disponibile è ancora molto attuale ed è in grado di effettuare attacchi a diverse tipologie di account, inclusi gli account di Dominio Microsoft.
In merito al bruteforcing di account di dominio windows mi sento in dovere di avvisarvi che se effettuate scansioni di account utente soggetti a politica di blocco dell'account, dopo un certo numero di tentativi errati di immissione password, rischiate di causare il blocco di tutti gli account utente della directory; fate percui molta attenzione se decidete di attaccare tramite wordlist più di un account utente alla volta.
- Brutus, http://www.hoobie.net/brutus/ [32]
Brutus è uno degli strumenti più veloci e flessibili per effettuare il bruterforcing delle password in windows, è gratuito ed al momento è disponibile soltanto per windows. [33]
Contromisure
Combattere questo tipo di attacchi non è molto difficile ed ha un costo amministrativo piuttosto basso. Inanzitutto si dovrebbero a mio avviso stabilire e formalizzare alcune politiche aziendali in merito alle password che devono essere rispettate da chiunque installi i nuovi computer.
La seconda importante attività riguarda mettere in pratica quanto imparato in questo articolo non dimenticando che esistono alcuni script WSH che possono facilitare enormemente questo tipo di controlli quando vi trovate ad aver a che fare con un gran numero di computer client, leggete le conclusioni per trovarne i collegamenti.
Eventualmente potreste scegliere di attivare delle politiche di blocco degli account [34], Active Directory vi permette di farlo a livello di dominio ma con lo strumento gpedit.msc potete scegliere di attivarle anche sui clients Windows XP.
Conclusioni
Avere una profonda conoscenza della propria rete e dei sistemi che operano in essa è importantissimo ai fini della sicurezza, quanto mostrato in questo articolo costituisce a mio avviso un ottimo punto di partenza.
Una volta identificate le vulnerabilità all'interno della rete vorrete sicuramente tracciarne l'entità e sapere come sistemarle senza dover agire manualmente su ciascun computer, per questo motivo vi consiglio la lettura di questi due tutorial:
- Come elencare gli amministratori locali di un dominio Windows - How to list local administrators in a Windows Domain [35]
- Come cambiare/resettare la password degli amministratori locali di un dominio Windows - How to reset local administrator passwords in a Windows Domain [36]
Autore
Mirko Iodice
mirko -at- notageek (.dot) it