Strumenti da testare per BEAST / CRIME che NON SONO basati su Internet?

18

Abbiamo una crescente pressione per identificare e correggere qualsiasi configurazione del server HTTPS che sia vulnerabile a BEAST (CBC) e CRIME (compressione). Dobbiamo correggere i server accessibili a Internet in generale, i server accessibili solo agli indirizzi IP partner limitati tramite Internet e ai server interni.

I server disponibili su Internet in generale possono essere scansionati utilizzando il servizio web Qualys 'SSL Labs . Fornisce una chiara indicazione della vulnerabilità di BEAST e presumibilmente l'impostazione "Compressione" che non è un cattivo segno oggi si riferisce al CRIME e inizierà a generare un avviso nel prossimo futuro. Tuttavia , questo non aiuta i siti che non sono generalmente disponibili via Internet.

Posso trovare tutti i tipi di informazioni su come testare le cose a mano - ad esempio, discussione di cifrari per BEAST e openssl s_client ricette per testare la compressione . Tuttavia, nella mia vecchiaia mi sto appassionando maggiormente agli strumenti, come gli SSL Lab, che semplicemente mi dicono, piuttosto che dover decifrare le varie stringhe di cifratura openssl ("No CBC, a meno che non sia TLS 1.1+, nel qual caso CBC è ok, e non dimenticare martedì ").

Inoltre, sono anche consapevole che non sono in grado di ottenere un risultato che indichi la compressione utilizzando varie intestazioni HTTP openssl + codificate a mano su un server Web che secondo SSL Labs ha abilitato la compressione. Chi credo? Sono incline a fidarsi degli strumenti più delle ricette, perché gli strumenti sono generalmente basati su una ricetta che viene poi testata in un'ampia varietà di configurazioni e fissata, mentre le ricette spesso hanno funzionato per qualcuno, da qualche parte, da qualche parte.

Quindi quello che sto cercando è uno strumento da riga di comando come sslscan che posso eseguire su tutti i miei server, indipendentemente dalla loro disponibilità a Internet in generale. (Sì, mi rendo conto che sslscan stampa i cifrari, che posso interpretare per determinare la vulnerabilità di BEAST - ma voglio un sistema esperto (o solo esperto!) Che sia meno fallibile di me a guardarlo emette ed effettua la chiamata).

    
posta gowenfawr 19.09.2012 - 16:03
fonte

1 risposta

17

Modifica (2012/09/23): Chiedi e riceverai . TestSSLServer è un semplice strumento da riga di comando che ho scritto questo fine settimana; ottiene da un determinato server SSL / TLS l'elenco di suite di crittografia supportate, versioni di protocollo e supporto di Deflate a livello TLS. Fornisce quindi un riepilogo della forza della crittografia e della vulnerabilità agli attacchi BEAST e CRIME. È scritto in Java e dovrebbe funzionare "ovunque" (l'ho provato solo da un client Linux / ppc, però).

(Notare che BEAST e CRIME sono rivolti al client, non al server. Stiamo parlando di passaggi che il server può adottare per "proteggere" il client non permettendogli di utilizzare combinazioni di funzioni vulnerabili.)

Risposta originale:

Per la compressione, ci sono due posti dove può essere attivato; il post del blog che rimandi al discorso sul posto sbagliato, quello su cui l'attacco CRIME è non .

CRIME utilizza la compressione che è al livello SSL / TLS: una compressione negoziata durante l'handshake e che si applica a ogni byte inviato all'interno del tunnel SSL / TLS. In un contesto HTTPS, questa compressione opera sia sugli enti di richiesta / risposta HTTP che sugli header HTTP (compresi i cookie, che è il punto di CRIME). La compressione che si verifica al livello HTTP è quella specificata con intestazioni HTTP (come "Accept-Encoding") e che si applica alla richiesta / risposta corpi solo. Quella compressione non copre i cookie (che sono nelle intestazioni) ed è quindi presumibilmente priva di CRIME.

(Ciò non preclude l'esistenza teorica di un attacco di tipo CRIME che abusa della compressione a livello HTTP sui corpi, ma richiederebbe un corpo di richiesta o di risposta che contenga sia dati riservati che dati che l'utente malintenzionato può scegliere. )

Per testare un server per il supporto alla compressione, usa questo:

openssl s_client -connect www.theservername.com:443

Questo produrrà un output che contiene il certificato del server e termina con un blocco di testo che assomiglia a questo:

---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
    Protocol  : TLSv1.1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 4B4110C44117BA0382CA6C3903A8185E0C156B253073E66B2D44F04B83611633
    Session-ID-ctx: 
    Master-Key: C11D38EE064BE6549364D54BD60E216E367A52825E62FFCCBEFC4AC8DB97D07BD72B7355CB268B91E3AD176EB69446AA
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 4c f8 be c1 d1 0f cf 03-4a 99 89 8b 75 28 97 3c   L.......J...u(.<
    0010 - 3e cf 2a b8 0f f0 d1 b4-7d c7 83 16 03 2c f0 8a   >.*.....}....,..
    0020 - 1b a7 57 be dd 1b be a3-14 eb cf 34 42 99 e0 5a   ..W........4B..Z
    0030 - c5 96 43 da c7 d9 dd da-ed 4c e2 7c eb c1 8b a8   ..C......L.|....
    0040 - ce 73 c8 22 43 10 88 d6-d2 f2 df 91 9d 47 71 70   .s."C........Gqp
    0050 - 77 bb c0 55 cd 46 34 3b-44 26 36 a1 7f 37 64 cd   w..U.F4;D&6..7d.
    0060 - 72 64 66 89 cc f6 8b 23-17 9b 9a 91 23 6a f7 c2   rdf....#....#j..
    0070 - 8a e2 8c 10 85 8f b7 6c-60 d2 b6 72 b3 13 98 8b   .......l'..r....
    0080 - 75 da 68 cc 2a ca 4f fb-ec 4c f2 db 91 4a f7 2a   u.h.*.O..L...J.*
    0090 - 40 eb 92 44 c7 7a f7 84-ef 65 ea 2c 96 aa c5 ba   @..D.z...e.,....
    00a0 - c3 b5 76 6d 52 03 85 c9-27 53 a2 a4 70 54 06 37   ..vmR...'S..pT.7
    00b0 - 82 3e 09 93 21 6d f6 e7-eb cf c3 5e 26 19 e1 a2   .>..!m.....^&...

    Compression: 1 (zlib compression)
    Start Time: 1348073749
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---

Questo è stato fatto su un server che supporta la compressione a livello TLS. Vedete " zlib compression " in tre punti: la compressione di deflate è effettivamente supportata da questo server. Nota che non c'è un solo segno di intestazione HTTP da nessuna parte! Basta digitare il comando openssl e guardare l'output. Non è necessario inserire un'intestazione HTTP.

Su un server che NON supporta la compressione a livello TLS, le cose saranno simili a questa:

---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-RC4-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.1
    Cipher    : ECDHE-RSA-RC4-SHA
    Session-ID: 59D609F13BEE9157D26318ADB12F4CF219EF7A1BC2C87AF84AD66773303F90A6
    Session-ID-ctx: 
    Master-Key: 1DD9E0C306A86A7EC823561EF0B1F47B63E70B43D57F3B3FBB3D389863F540E3B4CCE5DE454E6D19811C24001E95777A
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 100800 (seconds)
    TLS session ticket:
    0000 - de c6 06 25 10 c9 22 38-c4 1f 82 d7 c7 b5 62 08   ...%.."8......b.
    0010 - 01 c0 e1 26 e2 64 8a 62-99 74 85 bb 60 bf a8 e0   ...&.d.b.t..'...
    0020 - 65 08 74 89 d5 62 45 e9-b4 f0 80 4e f7 bd ff d5   e.t..bE....N....
    0030 - 6a 12 3b 90 97 ca 7a f4-d1 1b e1 0d 89 d2 52 49   j.;...z.......RI
    0040 - 11 fe 92 82 94 70 ba 4b-5e 81 ff f2 12 62 f4 79   .....p.K^....b.y
    0050 - 11 eb 74 7a d6 ee 10 4e-b5 6d 50 8d 1c 1c 8e 57   ..tz...N.mP....W
    0060 - 19 46 67 91 89 2e 45 28-2e 49 94 8e c8 32 28 bf   .Fg...E(.I...2(.
    0070 - 7b 73 82 ab 63 c4 b7 8f-5c b3 1b 5c 74 59 3c 8d   {s..c...\..\tY<.
    0080 - ec 8a 6a 3a 28 c2 82 c1-d7 d5 4f ec 7e 79 e7 57   ..j:(.....O.~y.W
    0090 - 4a f9 45 e7                                       J.E.

    Start Time: 1348074257
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---

Il " Compression: NONE " mostra che questo secondo server respinge effettivamente l'utilizzo della compressione a livello TLS.

Si noti inoltre che il primo server ha scelto DHE-RSA-AES256-SHA come suite di crittografia, ovvero una suite che utilizza la crittografia a blocchi AES in modalità CBC. Questo primo server è quindi potenzialmente vulnerabile a BEAST e CRIME. Il secondo server ha selezionato ECDHE-RSA-RC4-SHA , che è immune a BEAST.

(Il primo server è mio, dal momento che non uso affatto i cookie su di esso, non sono preoccupato per gli attacchi di furto di cookie. Il secondo server è www.google.com .)

Se trovo il tempo, scriverò uno strumento che fornisce tali risultati più facilmente. Non è necessario eseguire un handshake completo SSL / TLS, solo per inviare un ClientHello e guardare ServerHello che ritorna.

    
risposta data 19.09.2012 - 19:14
fonte

Leggi altre domande sui tag