2015-07-30 9 views
9

Mi piacerebbe essere in grado di testare la vulnerabilità di POODLE su TLS.Come testare POODLE su TLS?

Ci sono già diversi modi per farlo, ad esempio SSLLabs di Qualys, ma è troppo restrittivo (solo la porta TCP 443 di server disponibile su Internet). c'è anche questo collegamento, ma ho avuto un sacco falsi positivi/negativi durante il test: http://www.exploresecurity.com/testing-for-poodle_tls-manually/

Così ora sto cercando di modificare implementazione di TLS di OpenSSL 1.0.2d per essere in grado di inviare pacchetti non validi (usando openssl s_client ...) e per vedere il comportamento dei server.

Anche se non sono molto familiarità con C, sono riuscito a trovare interessante codice che implementa l'imbottitura per AES-CBC-SHA (secondo RFC 2246) in OpenSSL in crypto/evp/e_aes_cbc_hmac_sha1.c on line 518:

/* pad the payload|hmac */ 
plen += SHA_DIGEST_LENGTH; 
for (l = len - plen - 1; plen < len; plen++) 
    out[plen] = l; 

I modificato in questo per cambiare il primo byte imbottitura per renderlo corretto secondo RFC:

/* pad the payload|hmac */ 
plen += SHA_DIGEST_LENGTH; 
for (l = len - plen - 1; plen < len; plen++) { 
    if (plen == len - l - 1) 
    out[plen] = (l + 1) % 256; 
    else 
    out[plen] = l; 
} 

Dai compilazione e test:

./config 
make 
./apps/openssl s_client -connect www.google.com:443 -servername www.google.com -tls1 -cipher AES128-SHA 

E potrei collegare e fare una richiesta HTTP che ha ottenuto risposta ...

Quindi la mia domanda è: non era forse il bene del file ho modificato o si tratta di qualcos'altro?

Grazie mille per il vostro aiuto.

risposta

-1

AFAIK gli scanner tentano di stabilire una connessione SSLv3 e se possono farlo chiamano il server vulnerabile a POODLE (la correzione è improbabile).

Per trovare uno strumento che è possibile eseguire autonomamente e il codice sorgente che implementa uno scanner POODLE, ci sono modi molto più semplici di provare a implementare un exploit a partire dall'albero dei sorgenti OpenSSL.

Vedere ad es. il framework Metasploit.

O nmap:

+0

ringraziarvi swa66. Tuttavia, sto cercando un modo per testare POODLE su TLS, non su SSLv3. A proposito, la descrizione che mi hai inviato non è precisa. Un server può supportare SSLv3 senza essere vulnerabile. La vulnerabilità di POODLE è legata all'uso di suite di crittografia CBC, quindi l'utilizzo di RC4 con SSLv3, ad esempio, evita di essere vulnerabile;) –

+0

FWIW: Non ho commentato cosa è o non è vulnerabile, solo ciò che è uno scanner ben noto usa come algoritmo. Lo scanner in metasploit segnala la vulnerabilità di POODLE se trova una connessione SSLv3. Il controllo nello scanner nmap effettua in effetti una determinazione più complessa, incluso il controllo delle cyphersuites CBC e un fallback da TLS a SSLv3. – swa66

2

Ho avuto lo stesso problema, ha risposto here. Fondamentalmente, è necessario modificare la funzione ssl3_enc (in s3_enc.c file) e sostituire

memset(&rec->input[rec->length], 0, i); 

con

for(size_t j = 0; j < i; ++j) { 
    rec->input[rec->length + j] = rand() % 256; 
} 

ed inoltre è meglio per aumentare le dimensioni imbottiture per i casi in cui blocco si allinea bene e non v'è alcuna imbottitura. Per fare questo basta aggiungere:

i += bs; 

a destra prima di queste linee

/* we need to add 'i-1' padding bytes */ 
l += i;