Ciao ragazzi.... ecco la traduzione/sintesi delle slide 3... occhio che l'ultimo task (OWASP-AT-004) è moooolto sintetizzato... Ciaoo
Authentication Testing Nel campo della sicurezza informatica, si definisce autenticazione il processo tramite il quale un computer, un software o un utente, verifica la corretta, o almeno presunta, identità di un altro computer, software o utente. Questi test servono a cercare di capire come funziona la modalità di autenticazione e come usare queste informazioni per provare ad aggirare il meccanismo di autenticazione. OWASP prevede dieci differenti test (OWASP-AT-001/10) [N.B. noi ne abbiamo studiati solo 4] per analizzare le possibili minacce che intercorrono durante la fase di autenticazione. OWASP-AT-001 (Credentials transport over an encrypted channel) : Questo test ha come obiettivo quello di studiare e capire se i dati inseriti in un form dall'utente (durante la fase di autenticazione al sito), sono trasmessi utilizzando protocolli sicuri. L'analisi si focalizza semplicemente provando a capire se i dati viaggiano (dal browser al server) attraverso canali non criptatati o attraverso appropriati protocolli di sicurezza come HTTPS. Chiaramente, la sicurezza dipende anche dal tipo di algoritmo di criptazione utilizzato e dalla robustezza della chiave che l'applicazione utilizza (come visto in OWASP-CM-001). Quando si effettua l'autenticazione ad un sito web, di solito, l'utente inserisce le credenziali d'accesso in semplici form che trasferiscono i dati utilizzando il metodo POST. Quello che è meno ovvio è che i dati possono essere trasferiti sia utilizzando il protocollo HTTP (che rappresenta una via non sicura) sia attraverso HTTPS (che cripta i dati). A "complicare" il tutto, vi è la possibilità che la pagina di login sia accessibile attraverso HTTP, ma che i dati siano poi spediti via HTTPS. Casi possibili: * Pagina LOGIN: HTTP - Pagina RIFERIMENTO: HTTPS * Pagina LOGIN: HTTPS - Pagina RIFERIMENTO: HTTPS * Pagina LOGIN: HTTP - Pagina RIFERIMENTO: HTTP * Pagina LOGIN: HTTPS - Pagina RIFERIMENTO: HTTP OWASP-AT-002 (User enumeration) : Questo test ha come obiettivo la verifica della possibilità di acquisire un set di utenti validi (userID) interagendo con la modalità di autenticazione dell'applicazione. Viene effettuato prima del test di brute force, il quale a partire da un nome utente valido cerca la corrispondente password. Modalità di test: +Messaggio di risposta HTTP * Test per utente valido/password sbagliata : Prevede l'analisi del messaggio di errore in caso di inserimento di utente valido/password sbagliata. * Test per nome utente non esistente : Prevede l'analisi del messaggio di errore in caso di inserimento di utente non valido/password sbagliata. Nel caso in cui i messaggi ottenuti nei precedenti test non corrispondono si deve indagare e scoprire il motivo che crea la differenza tra le due risposte. +Codici di errore nella pagina di login Alcune applicazioni web mostrano uno specifico codice di errore o messaggio che il tester può analizzare. P.e., in caso di errata autenticazione possiamo ricevere pagine di errore simili a: * Invalid user * Invalid authentication +URLs and URLs redirections Quando inseriamo uno userID e password nell'applicazione web, possiamo osservare una indicazione d'errore nell'URL. P.e.: http://www.foo.com/err.jsp?User=baduser&Error=0 (User=baduser + Error=0 -> errore) http://www.foo.com/err.jsp?User=gooduser&Error=2 (User=gooduser + Error=2 -> ok) +URI Probing In alcuni portali ad ogni utente è associata una directory. Per tale motivo, se il server web non è correttamente configurato è possibile che quest ultimo risponda in maniera differente nel caso in cui si effettua una richiesta di una directory esistente o meno. P.e. http://www.foo.com/account1 (403 Forbidden - Utente esistente) http://www.foo.com/account2 (404 file Not Found - Utente non esistente) OWASP-AT-003 (Guessable (Dictionary) User Account) : Questo task serve a verificare l'esistenza di account di default o di account ospite (guest). Esistono due approcci per determinare le combinazioni username/password di account di default o di account ospite (guest): * Utilizzando archivi pubblici di combinazioni username/password di default per dispositivi e applicazioni (es. www.CIRT.net); * Effettuando un attacco a dizionario, attraverso tool automatizzati (login cracker). Es. Hydra. OWASP-AT-004 (Brute Force Testing) : Quando un attacco a dizionario fallisce, il tester può provare ad utilizzare il metodo di brute force per ottenere l'autenticazione. Il Brute-forcing è un algoritmo di risoluzione di un problema che consiste nel verificare tutte le soluzioni teoricamente possibili fino a che si trova quella effettivamente corretta. La prima fase di questo test serve a determinare con quale tecnica viene effettuata l'autenticazione. +Determinazione metodi di autenticazione I metodi di autenticazione più utilizzati sono i seguenti: *HTTP Authentication -Basic Access Authentication -Digest Access Authentication *HTML Form-based Authentication Es. HTML Form-based Authentication <form method="POST" action="login"> <input type="text" name"username"> <input type="password" name="password"> </form> SessionLab07. Generare un dizionario (per nome utente e password) con uno script di shell. Utilizzare "hydra" contro un targer ed analizzare i risultati es. ./hydra -L [dizionarioUserID.txt] -P [dizionarioPassword.txt] www.sito.com [metodo_autenticazione]