it-swarm.dev

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

Abbiamo una pressione crescente per identificare e correggere eventuali configurazioni del server HTTPS che sono vulnerabili a BESTIA (CBC) e CRIMINE (compressione). Dobbiamo riparare server accessibili a Internet in generale, server accessibili solo a indirizzi IP di partner limitati tramite Internet e server interni.

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

Posso trovare tutti i tipi di informazioni su come testare manualmente le cose, ad esempio discussione di cifre per BEAST e apre le ricette di s_client per testare la compressione . Tuttavia, nella mia vecchiaia sto diventando più affezionato agli strumenti - come SSL Labs - che 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 è va bene, e non dimenticare martedì ").

Sono anche a conoscenza del fatto che non riesco a ottenere un risultato che indichi la compressione usando varie intestazioni HTTP con codice manuale openssl + su un server Web che SSL Labs afferma che la compressione è abilitata. A chi credo? Sono propenso a fidarmi 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 fissi, mentre le ricette spesso hanno funzionato per qualcuno, da qualche parte, in qualche momento.

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à su Internet in generale. (Sì, mi rendo conto che sslscan stampa le cifre, che posso interpretare per determinare la vulnerabilità BEAST - ma voglio un sistema esperto (o semplicemente ben informato!) Che sia meno fallibile di me per guardare quell'uscita ed effettuare la chiamata).

18
gowenfawr

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 delle suite di crittografia supportate, le versioni del protocollo e il supporto di Deflate a livello TLS. Fornisce quindi un riepilogo del livello di crittografia e della vulnerabilità agli attacchi BEAST e CRIME. È scritto in Java e dovrebbe funzionare "ovunque" (l'ho testato solo da un client Linux/ppc).

(Notare che BEAST e CRIME hanno come target il client, non il server. Stiamo parlando dei passaggi che il server può adottare per "proteggere" il client non consentendogli di utilizzare combinazioni di funzionalità vulnerabili.)


Risposta originale:

Per la compressione, ci sono due luoghi in cui può essere attivato; il post sul blog che colleghi a parla del posto sbagliato, quello dell'attacco CRIME è no.

CRIME utilizza la compressione che è a livello SSL/TLS: una compressione negoziata durante l'handshake e che si applica a tutti i byte inviati all'interno del tunnel SSL/TLS. In un contesto HTTPS, questa compressione opera sia sui corpi di richiesta/risposta HTTP sia su HTTP headers (compresi i cookie, che è il punto del CRIMINE). La compressione che si verifica al livello [~ # ~] http [~ # ~] è quella specificata con [~ # ~] http [~ # ~] intestazioni (come "Accetta-codifica") e che si applica solo alla richiesta/risposta corpi. That la compressione non copre i cookie (che si trovano nelle intestazioni) ed è quindi, presumibilmente, privo di CRIMINE.

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

Per testare un server per il supporto della compressione, utilizzare 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)
---

Ciò è stato fatto su un server che supporta la compressione a livello TLS. Vedi "zlib compression "in tre punti: Deflate la compressione è effettivamente supportata da questo server. Nota che non esiste un singolo segno di un'intestazione HTTP da nessuna parte! Basta digitare il comando openssl e guardare l'output. Non è necessario inserisci un'intestazione HTTP.

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

---
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 rifiuta 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 il codice di blocco AES in modalità CBC. Questo primo server è quindi potenzialmente vulnerabile sia a BEAST che a CRIME. Il secondo server ha selezionato ECDHE-RSA-RC4-SHA, che è BEAST-immune.

(Il primo server è mio; poiché non utilizzo affatto i cookie, non sono nervoso 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 una stretta di mano SSL/TLS completa, solo per inviare un ClientHello e guardare ServerHello che ritorna.

17
Thomas Pornin