
OSDP हमला उपकरण (और एल्विश भाषा में मित्र के लिए शब्द)
OSDP आक्रमण उपकरण (और मित्र के लिए एल्विश शब्द)
OSDP एन्क्रिप्शन का समर्थन करता है, लेकिन सख्ती से आवश्यक नहीं है। इसलिए आपका कनेक्शन शायद बिल्कुल भी एन्क्रिप्टेड न हो। हमला #1 केवल निष्क्रिय रूप से सुनना है और देखना है कि क्या आप तार पर कार्ड नंबर पढ़ सकते हैं।
सिर्फ इसलिए कि नियंत्रक और पाठक एन्क्रिप्शन का समर्थन करते हैं, इसका मतलब यह नहीं है कि वे इसके उपयोग को अनिवार्य करने के लिए कॉन्फ़िगर किए गए हैं। एक हमलावर पाठक की क्षमता उत्तर संदेश (osdp_PDCAP) को संशोधित कर सकता है ताकि यह विज्ञापित कर सके कि यह एन्क्रिप्शन का समर्थन नहीं करता है। जब ऐसा होता है, तो कुछ नियंत्रक बिना एन्क्रिप्शन के आगे बढ़ जाते हैं।
OSDP में एक अर्ध-आधिकारिक "इंस्टॉल मोड" है जो पाठकों और नियंत्रकों दोनों पर लागू होता है। जैसा कि नाम से पता चलता है, इसका उपयोग पहली बार पाठक स्थापित करते समय किया जाना चाहिए। यह मूल रूप से पाठकों को नियंत्रक से पूछने की अनुमति देता है कि आधार एन्क्रिप्शन कुंजी (SCBK) क्या है। यदि नियंत्रक लगातार इंस्टॉल-मोड में रहने के लिए कॉन्फ़िगर किया गया है, तो एक हमलावर तार पर आकर SCBK का अनुरोध कर सकता है।
OSDP नमूना कोड अक्सर हार्डकोडेड एन्क्रिप्शन कुंजियों के साथ आता है। स्पष्ट रूप से ये नमूने होने के लिए हैं, जहाँ उपयोगकर्ता को स्वयं सुरक्षित तरीके से कुंजियाँ उत्पन्न करनी चाहिए। लेकिन यह उपयोगकर्ता के लिए समझाया या सरल नहीं किया गया है, हालांकि। और कोई भी जो सुरक्षा में पर्याप्त समय से रहा है, वह जानता है कि जो कुछ भी डिफ़ॉल्ट है, वह उत्पादन में होने की संभावना है।
तो एक आक्रमण वेक्टर के रूप में, जब पाठक और नियंत्रक के बीच लिंक एन्क्रिप्टेड होता है, तो कुछ सामान्य कमजोर कुंजियों को गिनना एक प्रयास के लायक है। अब ये 128-बिट AES कुंजियाँ हैं, इसलिए हम उन सभी को गिनने में सक्षम नहीं होंगे। या उनका एक सार्थक हिस्सा भी नहीं। लेकिन हम कुछ सामान्य पैटर्न को हिट कर सकते हैं जो आप तब देखते हैं जब कोई कुंजी को हार्डकोड करता है:
OSDP में कुंजी विनिमय के लिए कोई इन-बैंड तंत्र नहीं है। इसका मतलब यह है कि एक हमलावर यह कर सकता है:
आपको इनमें से प्रत्येक हमले के लिए प्रूफ-ऑफ-कॉन्सेप्ट कोड attack_osdp.py में मिलेगा। उपयोग पर अधिक जानकारी के लिए --help कमांड देखें। यह एक Python स्क्रिप्ट है, जिसे USB<-->RS485 एडेप्टर इनमें से एक जैसे के साथ लैपटॉप से चलाने का इरादा है। तो आप शायद उनमें से कुछ लेना चाहेंगे। हालांकि, उस मॉडल का होना जरूरी नहीं है।
यदि आपके पास एक नियंत्रक है जिसका आप परीक्षण करना चाहते हैं, तो बढ़िया है। उसका उपयोग करें। यदि नहीं, तो हमारे पास एक जानबूझकर कमजोर OSDP नियंत्रक है जिसका आप यहाँ उपयोग कर सकते हैं: vulnserver.py।
attack_osdp.py में कुछ हमले एक कार्यशील पाठक और नियंत्रक के बीच पूर्ण MitM के रूप में होने की उम्मीद करेंगे। इनका परीक्षण करने के लिए, आपको तीन USB<-->RS485 एडेप्टर की आवश्यकता हो सकती है, जो एक ब्रेडबोर्ड के साथ जुड़े हों।
ये मुद्दे अलग-थलग रूप से शोषण योग्य नहीं हैं, लेकिन फिर भी प्रोटोकॉल, कार्यान्वयन, या समग्र प्रणाली के कमजोर होने का प्रतिनिधित्व करते हैं।