Cipher Block Chaining CBC-MAC
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
यदि कुकी केवल उपयोगकर्ता नाम है (या कुकी का पहला भाग उपयोगकर्ता नाम है) और आप उपयोगकर्ता नाम "admin" का अनुकरण करना चाहते हैं। फिर, आप उपयोगकर्ता नाम "bdmin" बना सकते हैं और कुकी के पहले बाइट को ब्रूटफोर्स कर सकते हैं।
साइफर ब्लॉक चेनिंग संदेश प्रमाणीकरण कोड (CBC-MAC) एक विधि है जो क्रिप्टोग्राफी में उपयोग की जाती है। यह एक संदेश को लेती है और इसे ब्लॉक दर ब्लॉक एन्क्रिप्ट करती है, जहां प्रत्येक ब्लॉक का एन्क्रिप्शन पिछले ब्लॉक से जुड़ा होता है। यह प्रक्रिया एक ब्लॉकों की श्रृंखला बनाती है, यह सुनिश्चित करते हुए कि मूल संदेश के एक भी बिट को बदलने से एन्क्रिप्टेड डेटा के अंतिम ब्लॉक में अप्रत्याशित परिवर्तन होगा। ऐसा परिवर्तन करने या उलटने के लिए एन्क्रिप्शन कुंजी की आवश्यकता होती है, जो सुरक्षा सुनिश्चित करती है।
संदेश m का CBC-MAC निकालने के लिए, m को शून्य प्रारंभिक वेक्टर के साथ CBC मोड में एन्क्रिप्ट किया जाता है और अंतिम ब्लॉक को रखा जाता है। निम्नलिखित चित्र एक गुप्त कुंजी k और एक ब्लॉक साइफर E का उपयोग करके ब्लॉकों से बने संदेश का CBC-MAC निकालने की प्रक्रिया को दर्शाता है
CBC-MAC के साथ आमतौर पर IV 0 होता है।
यह एक समस्या है क्योंकि 2 ज्ञात संदेश (m1
और m2
) स्वतंत्र रूप से 2 हस्ताक्षर (s1
और s2
) उत्पन्न करेंगे। तो:
E(m1 XOR 0) = s1
E(m2 XOR 0) = s2
फिर m1 और m2 के संयोजन से बना एक संदेश (m3) 2 हस्ताक्षर (s31 और s32) उत्पन्न करेगा:
E(m1 XOR 0) = s31 = s1
E(m2 XOR s1) = s32
जिसे एन्क्रिप्शन की कुंजी को जाने बिना गणना करना संभव है।
कल्पना करें कि आप नाम Administrator को 8bytes ब्लॉकों में एन्क्रिप्ट कर रहे हैं:
Administ
rator\00\00\00
आप एक उपयोगकर्ता नाम Administ (m1) बना सकते हैं और हस्ताक्षर (s1) प्राप्त कर सकते हैं।
फिर, आप एक उपयोगकर्ता नाम बना सकते हैं जो rator\00\00\00 XOR s1
का परिणाम है। यह E(m2 XOR s1 XOR 0)
उत्पन्न करेगा जो s32 है।
अब, आप s32 को पूर्ण नाम Administrator के हस्ताक्षर के रूप में उपयोग कर सकते हैं।
उपयोगकर्ता नाम Administ (m1) का हस्ताक्षर प्राप्त करें जो s1 है
उपयोगकर्ता नाम rator\x00\x00\x00 XOR s1 XOR 0 का हस्ताक्षर प्राप्त करें जो s32 है**.**
कुकी को s32 पर सेट करें और यह उपयोगकर्ता Administrator के लिए एक मान्य कुकी होगी।
यदि आप उपयोग किए गए IV को नियंत्रित कर सकते हैं तो हमला बहुत आसान हो सकता है। यदि कुकी केवल उपयोगकर्ता नाम एन्क्रिप्टेड है, तो उपयोगकर्ता "administrator" का अनुकरण करने के लिए आप उपयोगकर्ता "Administrator" बना सकते हैं और आपको इसकी कुकी मिल जाएगी। अब, यदि आप IV को नियंत्रित कर सकते हैं, तो आप IV के पहले बाइट को बदल सकते हैं ताकि IV[0] XOR "A" == IV'[0] XOR "a" और उपयोगकर्ता Administrator के लिए कुकी को फिर से उत्पन्न कर सकें। यह कुकी प्रारंभिक IV के साथ उपयोगकर्ता administrator का अनुकरण करने के लिए मान्य होगी।
अधिक जानकारी के लिए https://en.wikipedia.org/wiki/CBC-MAC
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)