Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
BEAST-PoC — :muscle: Prova di concetto dell'attacco BEAST contro SSL/TLS CVE-2011-3389 :muscle: | Kitploit
Strumenti/GitHubGitHub/mpgn/beast-poc
Analisi delle VulnerabilitàExploitSicurezza WebCrittografiaPenetration TestingApprendimento e Formazione
GitHubmpgn/beast-poc

BEAST-PoC

💪 Prova di concetto dell'attacco BEAST contro SSL/TLS CVE-2011-3389 💪

Vedi Repository
80317 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

BEAST-PoC (attacco a testo scelto)

Questa prova di concetto è incentrata sulla crittografia alla base dell'attacco BEAST (Browser Exploit Against SSL/TLS) presentato da Thai Duong e Juliano Rizzo il 23 settembre 2011. Si tratta di un attacco a testo scelto e consente di recuperare informazioni sensibili se la Transport Layer Security utilizzata è TLS1.0 o SSLv3. La prova di concetto originale può essere trovata qui: Here come the Ninjas

Nota: Questa è anche un'implementazione della vulnerabilità scoperta originariamente da Phillip Rogaway. Scoperta nel 2002, non è stato rilasciato alcun exploit fino a BEAST nel 2011. OpenSSL conosceva già il problema ed è per questo che hanno aggiornato TLS1.0 a TLS1.1 nell'aprile 2006.

2 L'IV CBC per ogni record tranne il primo è l'ultimo blocco di ciphertext del record precedente. Pertanto la crittografia non è sicura contro avversari che possono scegliere adattivamente i plaintext;

Sii la BEAST

1. SSLv3/TLS1.0 e modalità di cifratura CBC

SSLv3/TLS1.0 sono protocolli per cifrare/decifrare e proteggere i tuoi dati. Nel nostro caso, entrambi usano la modalità di cifratura CBC (Cipher Block Chaining) . Il plaintext viene diviso in blocchi in base all'algoritmo di cifratura (AES, DES, 3DES) e la lunghezza è un multiplo di 8 o 16. Se il plaintext non riempie la lunghezza, viene aggiunto un padding alla fine per completare lo spazio mancante. Ti consiglio vivamente di aprire queste immagini di cifratura e decifratura per leggere questo readme.

In pratica è solo un semplice XOR, puoi anche guardare questo video (non sono io) https://www.youtube.com/watch?v=0D7OwYp6ZEc.

Introdurrò l'IV nel prossimo punto. Ricorda che tutte queste proprietà ci aiuteranno a condurre il nostro attacco.

2. Crittologia

Quando si usa il CBC serve un vettore di inizializzazione chiamato IV. Questo IV è casuale (o fisso) ma in ogni caso non deve essere predicibile da nessuno. In TLS1.0 e SSLv3 il primo IV della richiesta è casuale, ok. Ma per guadagnare tempo e non generare ogni volta un nuovo IV casuale, l'implementazione di TLS1.0 e SSLv3 usa l'ultimo blocco del ciphertext precedente come IV. In altre parole, l'IV ora è indovinabile. Assumeremo che la lunghezza di ciascun blocco sia 8 (DES) e che l'attaccante abbia un MiTM per recuperare tutto il ciphertext.

Esempio :

C0 | C... | Ci-1 | Ci | Ci+1 |Cn

Ora la parte interessante, questi sono i diversi passaggi crittografici dell'attacco per recuperare un byte :

  • prima inviamo una richiesta chiamata C² per ottenere l'ultimo blocco del ciphertext, cioè l'IV della seconda richiesta
  • trattandosi di un attacco a testo scelto, l'attaccante può inviare questo messaggio bbbbbbbTHIS_IS_A_SECRET_COOKIE attraverso la vittima.

Puoi notare i sette b prima del cookie segreto. Se la lunghezza di un blocco è 8, dobbiamo inserire 7 byte noti. Questa informazione è molto importante: l'attaccante conosce i primi 7 byte del primo blocco.

Ma perché? Questo ci consente di avere solo 256 possibilità per trovare un byte e non 256^8 per trovare 8 byte !

Ora la vittima invia la richiesta e verrà cifrata così :

C0 | C1 | C2 | C3 | C4

Dove C0 = Ek(IV ⊕ bbbbbbbT) = Ek(C²n ⊕ bbbbbbbT)

  • l'attaccante vuole recuperare l'informazione nei blocchi C0, C1, C2 ... ha sempre bisogno del blocco precedente
  • una terza richiesta viene inviata dopo aver costruito un blocco speciale P'0. Il primo blocco verrà cifrato così: C'0 = Ek(P'0 ⊕ IV') Poiché si tratta di un attacco a testo scelto, l'attaccante può costruire un blocco P'0 in questo modo :

P'0 = C²n ⊕ C4 ⊕ bbbbbbbX

L'unico elemento sconosciuto è X, ci sono 256 possibilità, quindi proverà al massimo 256 caratteri. La richiesta viene inviata e cifrata così :

C'0 = Ek(P'0 ⊕ IV')
C'0 = Ek(C²n ⊕ C4 ⊕ bbbbbbbX ⊕ IV') o C4 ⊕ IV' = 0
C'0 = Ek(C²n ⊕ bbbbbbbX)
C'0 = Ek(IV ⊕ bbbbbbbX)

Ora confronta: C'0 e C0, se sono uguali, allora ha appena trovato il byte X in posizione 8. Se non corrisponde, riprova con un altro carattere e confronta di nuovo, ecc.

Ora che abbiamo un byte, possiamo ottenerne un altro spostando la richiesta precedente di uno a sinistra: bbbbbbTHIS_IS_A_SECRET_COOKIE. Ora ha sei b e conosciamo anche la T, quindi abbiamo un carattere sconosciuto. Costruiamo un nuovo P'0 = C0 ⊕ C4 ⊕ bbbbbbTX, ecc...

Nota: un altro modo con solo due richieste è impostare il primo blocco del plaintext e usare questa informazione per i tre XOR. Non abbiamo più bisogno dell'ultimo blocco C². C1 = Ek(C0 ⊕ bbbbbbbT) e poi P'0 = C0 ⊕ C4 ⊕ bbbbbbbX. Deve anche confrontare C'0 e C1. Questo è un altro modo per farlo, puoi notare che nel PoC codifico entrambe le possibilità :)

Ora possiamo recuperare tutti i caratteri !

Avvio

root@kitploit:~
python BEAST-poc.py

asciicast

Attacco

Un attaccante non può usare il protocollo HTTP perché il primo blocco sarà riempito con GET / HTTP/1.1\r\n.

... non può controllare i primi byte di ogni richiesta perché sono sempre impostati come una stringa fissa come GET /, POST /, ecc. Invece può usare il socket.

Deve anche iniettare del javascript in una pagina dannosa. La vittima deve essere connessa a questa pagina e rimanerci finché l'attacco non è completato. Trattandosi di un attacco a testo scelto, l'attaccante può inviare tramite il codice javascript qualsiasi plaintext desideri e intercettare il risultato con un Man in The Middle. Questo è il diagramma dell'attacco :

beast

Questo attacco richiede condizioni importanti per avere successo (TLS1.0 o inferiore, modalità di cifratura CBC, MiTM, javascript dannoso). Ma Thai Duong e Juliano Rizzo hanno dimostrato che è possibile e hanno mostrato il loro exploit rubando cookie sul sito di Paypal.

Ora tutto è stato corretto e questo attacco ha poche probabilità di essere realizzato.

Contributore

mpgn

Licenze

licenza MIT

Riferimenti

  • http://netifera.com/research/beast/beast_DRAFT_0621.pdf
  • http://www.bortzmeyer.org/beast-tls.html
  • http://fr.slideshare.net/danrlde/20120418-luedtke-ssltlscbcbeast
  • http://crypto.stackexchange.com/questions/5094/is-aes-in-cbc-mode-secure-if-a-known-and-or-fixed-iv-is-used
  • http://security.stackexchange.com/questions/18505/is-beast-really-fixed-in-all-modern-browsers
  • https://defuse.ca/cbcmodeiv.htm
  • http://stackoverflow.com/questions/22644392/chrome-websockets-cors-policy
Scarica lo strumento
CifraturaDecifratura
Ci = Ek(Pi ⊕ Ci-1), e C0 = IVPi = Dk(Ci) ⊕ Ci-1, e C0 = IV