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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
BEAST-PoC — :muscle: SSL/TLS CVE-2011-3389 के विरुद्ध BEAST हमले का प्रूफ ऑफ कॉन्सेप्ट :muscle: | Kitploit
उपकरण/GitHubGitHub/mpgn/beast-poc
भेद्यता विश्लेषणशोषणवेब सुरक्षाक्रिप्टोग्राफीपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षा
GitHubmpgn/beast-poc

BEAST-PoC

💪 SSL/TLS CVE-2011-3389 के विरुद्ध BEAST हमले का प्रूफ ऑफ कॉन्सेप्ट 💪

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

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

सभी देखें →

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

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

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

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

BEAST-PoC (चयनित-प्लेनटेक्स्ट हमला)

यह प्रूफ ऑफ कॉन्सेप्ट BEAST (Browser Exploit Against SSL/TLS) हमले के पीछे की क्रिप्टोग्राफी पर केंद्रित है, जिसे थाई डुओंग और जुलियानो रिज़ो ने 23 सितंबर 2011 को प्रस्तुत किया था। यह एक चयनित-प्लेनटेक्स्ट हमला है और यदि उपयोग की जाने वाली ट्रांसपोर्ट लेयर सिक्योरिटी TLS1.0 या SSLv3 है, तो यह आपको संवेदनशील जानकारी प्राप्त करने की अनुमति देता है। मूल प्रूफ ऑफ कॉन्सेप्ट यहाँ पाया जा सकता है: Here come the Ninjas

नोट: यह मूल रूप से फिलिप रोगावे द्वारा खोजी गई भेद्यता का एक कार्यान्वयन भी है। 2002 में खोजे जाने के बाद, 2011 में BEAST तक कोई एक्सप्लॉइट जारी नहीं किया गया था। OpenSSL को यह समस्या पहले से ही ज्ञात थी और इसीलिए उन्होंने अप्रैल 2006 में TLS1.0 को TLS1.1 में अपडेट किया।

2 पहले को छोड़कर प्रत्येक रिकॉर्ड के लिए CBC IV पिछले रिकॉर्ड का अंतिम सिफरटेक्स्ट ब्लॉक होता है। इस प्रकार एन्क्रिप्शन उन विरोधियों के खिलाफ सुरक्षित नहीं है जो अनुकूलनशील रूप से प्लेनटेक्स्ट चुन सकते हैं;

BEAST बनें

1. SSLv3/TLS1.0 और CBC सिफर मोड

SSLv3/TLS1.0 ऐसे प्रोटोकॉल हैं जो आपके डेटा को एन्क्रिप्ट/डिक्रिप्ट और सुरक्षित करते हैं। हमारे मामले में, वे दोनों CBC सिफर मोड चेनिंग का उपयोग करते हैं। प्लेनटेक्स्ट को एन्क्रिप्शन एल्गोरिथम (AES, DES, 3DES) के अनुसार ब्लॉकों में विभाजित किया जाता है और लंबाई 8 या 16 की गुणज होती है। यदि प्लेनटेक्स्ट लंबाई को नहीं भरता है, तो लापता स्थान को पूरा करने के लिए अंत में पैडिंग जोड़ी जाती है। मैं दृढ़ता से सुझाव देता हूं कि इस रीडमी को पढ़ने के लिए आप एन्क्रिप्शन और डिक्रिप्शन की इन छवियों को खोलें।

मूल रूप से यह कुछ सरल XOR है, आप यह वीडियो भी देख सकते हैं (मैं नहीं) https://www.youtube.com/watch?v=0D7OwYp6ZEc।

मैं IV को अगले बिंदु में समझाऊंगा। याद रखें कि ये सभी गुण हमारे हमले को आगे बढ़ाने में मदद करेंगे।

2. क्रिप्टोलॉजी

जब हम CBC का उपयोग करते हैं तो हमें IV नामक एक इनिशियलाइज़ेशन वेक्टर की आवश्यकता होती है। यह IV यादृच्छिक (या निश्चित) होता है, लेकिन किसी भी स्थिति में यह किसी के लिए अनुमान लगाने योग्य नहीं होना चाहिए। TLS1.0 और SSLv3 में अनुरोध का पहला IV यादृच्छिक होता है, ठीक है। लेकिन समय बचाने और हर बार नया यादृच्छिक IV उत्पन्न न करने के लिए, TLS1.0 और SSLv3 के कार्यान्वयन ने पिछले सिफरटेक्स्ट के अंतिम ब्लॉक को IV के रूप में उपयोग किया। दूसरे शब्दों में, IV अब अनुमान लगाने योग्य है। हम मान लेंगे कि प्रत्येक ब्लॉक की लंबाई 8 (DES) होगी और हमलावर के पास सभी सिफर प्राप्त करने के लिए MiTM है।

उदाहरण :

C0 | C... | Ci-1 | Ci | Ci+1 |Cn

अब दिलचस्प हिस्सा, ये एक बाइट प्राप्त करने के लिए हमले के विभिन्न क्रिप्टोग्राफ़िक चरण हैं:

  • पहले हम सिफर का अंतिम ब्लॉक प्राप्त करने के लिए C² नामक एक अनुरोध भेजते हैं, जिसका अर्थ है दूसरे अनुरोध का अगला IV
  • यह एक चयनित-प्लेनटेक्स्ट हमला है, इसलिए हमलावर इस संदेश bbbbbbbTHIS_IS_A_SECRET_COOKIE को पीड़ित के माध्यम से भेज सकता है।

आप गुप्त कुकी से पहले सात b देख सकते हैं। यदि किसी ब्लॉक की लंबाई 8 है तो हमें 7 ज्ञात बाइट्स भेजने की आवश्यकता है। यह जानकारी बहुत महत्वपूर्ण है, हमलावर पहले ब्लॉक के पहले 7 बाइट्स जानता है।

लेकिन क्यों? यह हमें 8 बाइट्स खोजने के लिए 256^8 के बजाय केवल एक बाइट खोजने के लिए 256 संभावनाएं देता है!

अब पीड़ित अनुरोध भेजता है और इसे इस प्रकार एन्क्रिप्ट किया जाएगा:

C0 | C1 | C2 | C3 | C4

जहाँ C0 = Ek(IV ⊕ bbbbbbbT) = Ek(C²n ⊕ bbbbbbbT)

  • हमलावर ब्लॉक C0, C1, C2 ... में जानकारी प्राप्त करना चाहता है उसे हमेशा पिछला ब्लॉक चाहिए
  • एक विशेष ब्लॉक P'0 बनाने के बाद तीसरा अनुरोध भेजा जाता है। पहला ब्लॉक इस प्रकार एन्क्रिप्ट किया जाएगा: C'0 = Ek(P'0 ⊕ IV') चूँकि यह एक चयनित-प्लेनटेक्स्ट हमला है, हमलावर P'0 ब्लॉक को इस प्रकार बना सकता है:

P'0 = C²n ⊕ C4 ⊕ bbbbbbbX

एकमात्र अज्ञात तत्व X है, 256 संभावनाएं हैं इसलिए वह अधिकतम 256 अक्षर आजमाएगा। अनुरोध भेजा जाता है और इस प्रकार एन्क्रिप्ट किया जाता है:

C'0 = Ek(P'0 ⊕ IV')
C'0 = Ek(C²n ⊕ C4 ⊕ bbbbbbbX ⊕ IV') या C4 ⊕ IV' = 0
C'0 = Ek(C²n ⊕ bbbbbbbX)
C'0 = Ek(IV ⊕ bbbbbbbX)

अब वह तुलना करता है: C'0 और C0, यदि वे बराबर हैं, तो उसे स्थिति 8 में बाइट X मिल गया है। यदि यह मेल नहीं खाता है, तो वह दूसरे अक्षर के साथ पुनः प्रयास करता है और फिर से तुलना करता है, इत्यादि।

अब हमारे पास एक बाइट है, हम पिछले अनुरोध को एक स्थान बाईं ओर खिसकाकर एक और बाइट प्राप्त कर सकते हैं: bbbbbbTHIS_IS_A_SECRET_COOKIE। अब उसके पास छह b हैं और हम T भी जानते हैं, इसलिए हमारे पास एक अज्ञात अक्षर है। हम एक नया P'0 = C0 ⊕ C4 ⊕ bbbbbbTX बनाते हैं, इत्यादि।

नोट: केवल दो अनुरोधों के साथ एक और तरीका यह है कि प्लेनटेक्स्ट का पहला ब्लॉक सेट किया जाए और इस जानकारी का उपयोग तीनों XOR के लिए किया जाए। हमें अब C² के अंतिम ब्लॉक की आवश्यकता नहीं है। C1 = Ek(C0 ⊕ bbbbbbbT) और फिर P'0 = C0 ⊕ C4 ⊕ bbbbbbbX। उसे C'0 और C1 की तुलना भी करनी होगी। यह इसे करने का एक और तरीका है, आप देख सकते हैं कि PoC में मैंने दोनों संभावनाओं को कोड किया है :)

अब हम सभी अक्षर प्राप्त कर सकते हैं!

लॉन्च

root@kitploit:~
python BEAST-poc.py

asciicast

हमला

एक हमलावर HTTP प्रोटोकॉल का उपयोग नहीं कर सकता क्योंकि पहला ब्लॉक GET / HTTP/1.1\r\n से भरा होगा।

... प्रत्येक अनुरोध के पहले कुछ बाइट्स को नियंत्रित नहीं कर सकता क्योंकि वे हमेशा GET /, POST /, आदि जैसी निश्चित स्ट्रिंग के रूप में सेट होते हैं। इसके बजाय वह socket का उपयोग कर सकता है।

उसे एक दुर्भावनापूर्ण पृष्ठ में कुछ जावास्क्रिप्ट इंजेक्ट करने की भी आवश्यकता है। पीड़ित को इस पृष्ठ से जुड़ा रहना होगा और हमला पूरा होने तक जुड़ा रहना होगा। यह एक चयनित-प्लेनटेक्स्ट हमला है, इसलिए हमलावर जावास्क्रिप्ट कोड के माध्यम से हर वह प्लेनटेक्स्ट भेज सकता है जो वह चाहता है और परिणाम को Man in The Middle के साथ इंटरसेप्ट कर सकता है। हमले का यह आरेख है:

beast

इस हमले को सफल होने के लिए महत्वपूर्ण शर्तों की आवश्यकता होती है (TLS1.0 या उससे निचला संस्करण, CBC सिफर मोड, MiTM, दुर्भावनापूर्ण जावास्क्रिप्ट)। लेकिन थाई डुओंग और जुलियानो रिज़ो ने साबित किया कि यह संभव हो सकता है और उन्होंने Paypal वेबसाइट पर कुकी चुराकर अपने एक्सप्लॉइट का प्रदर्शन किया।

अब सब कुछ ठीक कर दिया गया है और इस हमले के साकार होने की संभावना बहुत कम है।

योगदानकर्ता

mpgn

लाइसेंस

MIT लाइसेंस

संदर्भ

  • http://netifera.com/research/beast/beast_DRAFT_0621.pdf
  • http://www.bortzmeyer.org/beast-tls.html
  • http://fr.slideshare.net/danrlde/20120418-luedtke-ssltlscbcbeast
  • http://crypto.stackexchange.com/questions/5094/is-aes-in-cbc-mode-secure-if-a-known-and-or-fixed-iv-is-used
  • http://security.stackexchange.com/questions/18505/is-beast-really-fixed-in-all-modern-browsers
  • https://defuse.ca/cbcmodeiv.htm
  • http://stackoverflow.com/questions/22644392/chrome-websockets-cors-policy
टूल डाउनलोड करें
एन्क्रिप्शनडिक्रिप्शन
Ci = Ek(Pi ⊕ Ci-1), and C0 = IVPi = Dk(Ci) ⊕ Ci-1, and C0 = IV