
शैक्षिक डॉकर-आधारित प्रयोगशाला जो Heartbleed बग (CVE-2014-0160) को हैकर, पीड़ित और सर्वर कंटेनरों के साथ प्रदर्शित करती है, व्यावहारिक शोषण और सत्र कुकी निष्कर्षण के लिए।
हार्टब्लीड बग एक साइबर सुरक्षा हमले का उदाहरण है जो OpenSSL लाइब्रेरी में एक कमजोरी का शोषण करता है। संक्षेप में, OpenSSL लाइब्रेरी में एक गुम सत्यापन चरण के कारण हैकर असुरक्षित लाइब्रेरी का उपयोग करने वाले सर्वर पर संवेदनशील जानकारी तक पहुँच सकता है। क्लाइंट और सर्वर के बीच SSL कनेक्शन स्थापित करने के लिए हैंडशेक प्रोटोकॉल के भाग के रूप में, क्लाइंट से एक हार्टबीट संदेश भेजा जाता है, जिसे बाद में सर्वर से वापस भेज दिया जाता है। क्लाइंट अपने हार्टबीट संदेश की लंबाई भेजने के लिए भी जिम्मेदार होता है, जिसका उपयोग सर्वर यह निर्धारित करने के लिए करता है कि मेमोरी से कितने बाइट्स वापस किए जाने चाहिए। एक गलत लंबाई मान, जिसे सर्वर द्वारा सत्यापित नहीं किया जाता है, सर्वर को उस मेमोरी स्थान से सटे बाइट्स वापस करने का कारण बन सकता है जहाँ क्लाइंट का हार्टबीट संदेश संग्रहीत है।
इस रिपॉजिटरी में एक प्रदर्शन है कि कैसे हार्टब्लीड बग का शोषण करके वेबसर्वर से सत्र कुकीज़ निकाली जा सकती हैं; जिससे हैकर वेबसाइट के सुरक्षित, एक्सेस-नियंत्रित भाग तक पहुँच सकता है।
यदि आप एक प्रशिक्षक हैं जो साइबर सुरक्षा अवधारणाएँ और सुरक्षित कोडिंग सिखा रहे हैं, तो आप इस उदाहरण का उपयोग हार्टब्लीड बग के साथ व्यावहारिक अनुभव प्रदान करने और यह प्रदर्शित करने के लिए कर सकते हैं कि विशेषाधिकार प्राप्त जानकारी को कितनी आसानी से पुनर्प्राप्त किया जा सकता है।
यदि आप एक साइबर सुरक्षा कक्षा में छात्र हैं, या एक उभरते प्रोग्रामर हैं, तो यह समझना शिक्षाप्रद है कि कोड में छोटी गलतियाँ कैसे बड़ी सुरक्षा कमजोरियों का कारण बन सकती हैं। यदि आप वर्तमान में अपनी कक्षा में हार्टब्लीड हमले के बारे में सीख रहे हैं, तो आप इस बारे में और अधिक व्यावहारिक अनुभव प्राप्त कर सकते हैं कि ये हमले कैसे काम करते हैं और ऐसे हमलों को रोकने के लिए क्या किया जा सकता है।
यह प्रदर्शन तीन Docker कंटेनरों का उपयोग करके डिज़ाइन किया गया है, प्रत्येक सर्वर, हैकर और पीड़ित के लिए एक। सर्वर कंटेनर पर एक सरल Python Flask आधारित वेबसाइट होस्ट की गई है जो सफलतापूर्वक लॉगिन करने पर एक स्वागत संदेश लौटाती है। सर्वर कंटेनर OpenSSL लाइब्रेरी का एक अप्रतिबंधित संस्करण चलाता है जिसमें हार्टब्लीड कमजोरी है। हैकर और पीड़ित दोनों कंटेनर Ubuntu मशीन के लिए VNC इंटरफ़ेस प्रदान करते हैं। हैकर कंटेनर में एक Python स्क्रिप्ट भी है जो हार्टब्लीड बग का शोषण करके हार्टबीट संदेश के लिए गलत संदेश लंबाई भेजती है, और सत्र कुकीज़ खोजने के लिए सर्वर से लौटाए गए डेटा को पार्स करती है। निर्देश हैकर कंटेनर डेस्कटॉप पर एक HTML दस्तावेज़ में प्रदान किए गए हैं।
कंटेनरों के इस सेट को चलाने का अनुशंसित तरीका CHEESEHub पर है, जो साइबर सुरक्षा प्रदर्शनों के लिए एक वेब प्लेटफ़ॉर्म है। CHEESEHub मांग पर कंटेनरों को ऑर्केस्ट्रेट और चलाने के लिए आवश्यक संसाधन प्रदान करता है। इस एप्लिकेशन को CHEESEHub पर चलाने के लिए सेट अप करने के लिए, एक एप्लिकेशन विनिर्देश बनाने की आवश्यकता है जो उपयोग किए जाने वाले Docker इमेज, मेमोरी और CPU आवश्यकताओं, और तीनों कंटेनरों में से प्रत्येक के लिए खुले जाने वाले पोर्ट को कॉन्फ़िगर करता है। इस हार्टब्लीड प्रदर्शन के लिए JSON spec यहाँ पाया जा सकता है।
CHEESEHub अपने एप्लिकेशन कंटेनरों को ऑर्केस्ट्रेट करने के लिए Kubernetes का उपयोग करता है। आप इस एप्लिकेशन को अपने स्वयं के Kubernetes इंस्टॉलेशन पर भी चला सकते हैं। अपनी स्थानीय मशीन पर न्यूनतम Kubernetes क्लस्टर स्थापित करने के निर्देशों के लिए, Minikube देखें।
CHEESEHub या Kubernetes पर चलाने से पहले, तीन एप्लिकेशन कंटेनरों के लिए Docker इमेज बनाने की आवश्यकता है। हैकर, पीड़ित और सर्वर के लिए कंटेनर परिभाषाएँ क्रमशः heartbleed-hacker, heartbleed-victim और heartbleed-server निर्देशिकाओं में पाई जा सकती हैं। इन कंटेनरों को बनाने के लिए, चलाएँ:
cd heartbleed-hacker
docker build -t <hacker image tag of your choice> .
cd heartbleed-victim
docker build -t <victim image tag of your choice> .
cd heartbleed-server
docker build -t <server image tag of your choice> .
एक बार Docker इमेज बन जाने के बाद, आप केवल Docker इंजन का उपयोग करके कंटेनर चला सकते हैं।
docker run -d -p 80 <hacker image tag from above>
docker run -d -p 80 <victim image tag from above>
docker run -d <server image tag from above>
चूंकि हैकर और पीड़ित कंटेनरों का उपयोगकर्ता-सामना करने वाला इंटरफ़ेस VNC इंटरफ़ेस है, हम पोर्ट 80 को होस्ट मशीन से सुलभ होने के लिए खोलते हैं। चूंकि हम केवल हैकर और पीड़ित कंटेनरों के अंदर से सर्वर वेबसाइट तक पहुँचेंगे, हम सर्वर कंटेनर के किसी भी खुले पोर्ट को मैप करने की जहमत नहीं उठाते।
अपने ब्राउज़र में हैकर कंटेनर के URL पर नेविगेट करने पर, आपको एक लिनक्स डेस्कटॉप इंटरफ़ेस प्रस्तुत किया जाएगा। इस प्रदर्शन का अनुसरण करने के लिए चरण-दर-चरण निर्देशों की समीक्षा करने के लिए डेस्कटॉप पर Instructions.html फ़ाइल पर डबल-क्लिक करें। निचले बाएँ कोने में प्रोग्राम मेनू का चयन करके हैकर और पीड़ित कंटेनरों पर एक नया ब्राउज़र या टर्मिनल विंडो लॉन्च किया जा सकता है। सर्वर का IP पता जो हैकर और पीड़ित सर्वर की होस्ट की गई वेबसाइट तक पहुँचने के लिए उपयोग करेंगे, CHEESEHub कंटेनर सूची पृष्ठ से सर्वर कंटेनर पर एक कंसोल शुरू करके प्राप्त किया जा सकता है।
इस एप्लिकेशन में समस्याओं की रिपोर्ट करने या संवर्द्धन में योगदान करने के लिए, एक GitHub issue खोलें।