mercoledì 17 novembre 2010

Cracking delle password in linux

Nei sistemi linux le password per i vari utenti non sono conservate in chiaro in un file, ovviamente questo sarebbe veramente troppo pericoloso, quindi prima di memorizzarle, si utilizza una funzione hash non invertibile. La più nota e utilizzata si basa sul DES, ed è chiamata dal comando di sistema crypt().Detta funzione ha come input una password in chiaro, ed un valore di salt, e restituisce come output un hash avente come prefisso il valore di salt. Da un punto di vista matematico è impossibile risalire alla password partendo dall' hash, il valore di salt è utilizzato per perturbare l' algoritmo di generazione dell'hash, in tal modo è possibile avere hash differenti per password uguali, ad esempio crypt(prova, ju) risulterà differente da crypt(prova, ki). Quando un utente intende autenticarsi, viene invitato ad inserire la password che insieme al valore di salt(estratto dal file delle password) viene elaborata dalla funzione crypt(), se l'hash ottenuto corrisponde a quello contenuto nel file delle password l' utente sarà autenticato, è da notare che questo sistema funziona senza che la password in chiaro venga memorizzata. Ora se è vero che da un punto di vista matematico è impossibile dall' hash risalire alla password, nulla vieta di procedere per tentativi, cioè si potrebbe provare ad utilizzare un dizionario, ed estraendo dal file delle password il salt di un particolare hash , provare e riprovare finchè una parola del dizionario e il salt ,passando per la funziona crypt(), diano come risultato l'hash memorizzato nel file delle password. Implementando questo procedimento in perl :

#!/usr/bin/perl
$hash=shift;
$salt=substr($hash,0,2);
while(defined($pass =<STDIN>))
{
chomp $pass;
if(crypt($pass,$salt) eq $hash)
{
print "la password è $pass\n";
exit;
}
}
print "non è stata trovata nessuna password\n";

Oppure si può utilizzare un tool come "John the ripper" che potete scaricare a questo indirizzo http://www.openwall.com/john/, con esso è anche possibile implementare attacchi a "forza bruta esaustivi" non utilizzando dizionari ma permutando in tutti i modi possibili un set di caratteri di input. Ovviamente per password relativamente lunghe, questo tipo di attacco diventa impraticabile a causa del troppo tempo necessario. John ha un file dizionario di base nella directory usr/share/john/password.lst , che volendo si può cambiare o modificare, per il resto basta copiare il contenuto dei file /etc/shadow ed /etc/passwd diamo quindi il seguente comando:

./unshadow /etc/passwd /etc/shadow > passwd1

e successivamente lanciare john

./john –single passwd1

martedì 16 novembre 2010

I cookie http e la privacy

I cookie sono delle stringhe di testo inviate da un server web verso un client (il browser), che a sua volta vengono rimandate indietro ogni volta che il client si connette allo stesso server.Potete capire da soli quale nesso ci possa essere tra cookie e privacy, di fatto queste piccole ,e a prima vista insignificanti stringhe di testo, possono essere facilmente utilizzate per catturare informazioni sulla nostra navigazione nel web.Attraverso il loro uso indiscriminato è possibile conoscere abitudini, gusti e anche identità del navigatore del web. Ad esempio prendete google, il motore di ricerca più potente del mondo, spedisce cookie che immagazzinano dati che riguardano le vostre ricerche , le vostre parole chiave e le vostre abitudini,   probabilmente lo fa per migliorare il suo servizio, almeno questa è la giustificazione che utilizza google.E' da notare che i cookie servono anche a renderci la vita più comoda, possono permettere il login ad un sito senza doversi ogni volta autenticare con username e passowrd, oppure ci consentono di personalizzare le pagine di un particolare sito web.Tutti i browser attuali permettono di accettare o no i cookie, per alcuni siti questa è una buona strategia,ma sfortunatamente molti siti se non accettiamo i loro cookie semplicemente saranno inutilizzabili.Un sito che necessita di autentificazione, potrebbe utilizzare i cookie per differenziare le pagine che vi manda quando siete autenticati e quelle che manda quando non lo siete.Detto questo sembra che con i nuovi browser la facoltà di decidere sulla riservatezza sia nelle nostre mani,in realtà non è proprio tutto così semplice, infatti le funzionalità per recuperare informazioni dalle macchine sono presenti in tutti i browser, e questo indipendentemente dalla politica adottata nella gestione dei cookie.La caching, è uno stratagemma che utilizzano i browser per risparmiare banda e aumentare velocità nella risposta, quando visitiamo una pagina alcuni file ,come ad esempio immagini o script java, vengono salvate in memoria, cosi la prossima volta che visitiamo quel particolare sito, se la pagina non è stata modificata questi file saranno caricati dalla memoria e non dalla rete.Questo processo viene reso possibile da una negoziazione fra server e client che serve a determinare se i file nella cache sono ancora attuali, vediamo in particolare come funziona il caching ETag.L' ETag è un identificativo univoco per ogni file che cambia quando il file è stato modificato anche di un solo bit:
Immaginiamo adesso che un amministratore decida di distribuire per ogni macchina che si collega al suo sito un file es.pgn con un ETag differente e unico, basterebbe cambiare solo un bit dell'intestazione nel file, ebbene la volta successiva che una di queste macchine dovesse ricollegarsi verrebbe identificata. Ma torniamo ai cookie,la loro manipolazione è chiamata "cookie poisoning" e consiste nel modificarne i contenuti per eludere i meccanismi di sicurezza.Ricordiamo che nei cookie ci sono informazioni personali, questi dati generalmente sono criptati, ma con tempo,tecnica e pazienza molto spesso gli algoritmi usati vengono violati.