
ICS/SCADA खोज और एन्यूमरेशन के लिए Nmap NSE स्क्रिप्ट—BACnet, EtherNet/IP, CoDeSys, Fox, Modicon, Omron, S7—सुरक्षा मूल्यांकन के लिए प्रोटोकॉल क्वेरी का उपयोग करते हुए।
#Redpoint
###Digital Bond के ICS एन्यूमरेशन टूल्स
Redpoint, Digital Bond का एक शोध प्रोजेक्ट है जो ICS अनुप्रयोगों और उपकरणों को एन्यूमरेट करने के लिए है।
हम अपने Redpoint टूल्स का उपयोग मूल्यांकनों में ICS डिवाइस खोजने और ऐसी जानकारी निकालने के लिए करते हैं जो द्वितीयक परीक्षण में सहायक हो सकती है। इनमें से कुछ टूल्स इस रिपॉजिटरी में Nmap NSE स्क्रिप्ट के रूप में जनता के लिए उपलब्ध कराए जाएँगे।
Redpoint टूल्स डिवाइस और अनुप्रयोगों को खोजने और एन्यूमरेट करने के लिए वैध प्रोटोकॉल या एप्लिकेशन कमांड का उपयोग करते हैं। किसी भी चीज़ का शोषण करने या क्रैश करने का कोई प्रयास नहीं किया जाता। हालाँकि, कई ICS डिवाइस और अनुप्रयोग नाजुक होते हैं और किसी भी अप्रत्याशित ट्रैफ़िक पर क्रैश हो सकते हैं या अप्रत्याशित तरीके से प्रतिक्रिया दे सकते हैं, इसलिए सावधानी से उपयोग करें।
प्रत्येक स्क्रिप्ट नीचे प्रलेखित है और इस रिपॉजिटरी में .nse फ़ाइल के रूप में उपलब्ध है।
BACnet-discover-enumerate.nse - BACnet डिवाइस की पहचान और एन्यूमरेशन करें
codesys-v2-discover.nse - CoDeSys V2 नियंत्रकों की पहचान और एन्यूमरेशन करें
enip-enumerate.nse - Rockwell Automation और अन्य विक्रेताओं से EtherNet/IP डिवाइस की पहचान और एन्यूमरेशन करें
fox-info.nse - Niagara Fox डिवाइस की पहचान और एन्यूमरेशन करें
modicon-info.nse - Schneider Electric Modicon PLC की पहचान और एन्यूमरेशन करें
omron-info.nse - Omron PLC की पहचान और एन्यूमरेशन करें
pcworx-info.nse - PC Worx प्रोटोकॉल सक्षम PLC की पहचान और एन्यूमरेशन करें
proconos-info.nse - ProConOS सक्षम PLC की पहचान और एन्यूमरेशन करें
s7-enumerate.nse - Siemens SIMATIC S7 PLC की पहचान और एन्यूमरेशन करें
==
###BACnet-discover-enumerate.nse
![BACnet-discover-enumerate नमूना आउटपुट] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/03/BACnet-nse.png)
####लेखक
Stephen Hilt और Michael Toecker
Digital Bond, Inc
####उद्देश्य और विवरण
BACnet-discover-enumerate.nse का उद्देश्य सबसे पहले यह पहचानना है कि कोई IP-कनेक्टेड डिवाइस BACnet चला रहा है या नहीं। यह डिवाइस को पहले से जनरेट किए गए BACnet संदेश के साथ क्वेरी करके काम करता है। BACnet प्रोटोकॉल के नए संस्करण एक स्वीकृति (acknowledgement) के साथ प्रतिक्रिया देंगे, पुराने संस्करण BACnet त्रुटि संदेश लौटाएँगे। स्वीकृति या त्रुटि में से किसी एक की उपस्थिति यह साबित करने के लिए पर्याप्त है कि लक्ष्य IP पते पर एक BACnet-सक्षम डिवाइस मौजूद है।
दूसरा, यदि स्वीकृति प्राप्त होती है, तो यह स्क्रिप्ट एक उत्तरदायी BACnet डिवाइस पर कई BACnet गुणों को एन्यूमरेट करने का भी प्रयास करेगी। फिर से, डिवाइस को पहले से जनरेट किए गए BACnet संदेश के साथ क्वेरी किया जाता है। सफल एन्यूमरेशन विशेष रूप से तैयार किए गए अनुरोधों का उपयोग करता है, और यदि BACnet डिवाइस उस गुण का समर्थन नहीं करता है तो सफल नहीं होगा।
इस स्क्रिप्ट द्वारा क्वेरी किए गए BACnet गुण हैं:
Vendor ID - एक संख्या जो पंजीकृत BACnet विक्रेता से मेल खाती है। स्क्रिप्ट संबंधित विक्रेता का नाम भी लौटाती है।
Vendor Number - एक स्ट्रिंग जो डिवाइस पर कॉन्फ़िगर किए गए विक्रेता नाम का प्रतिनिधित्व करती है। यह Vendor ID से भिन्न हो सकता है क्योंकि Vendor ID ASHARE के साथ पंजीकृत संख्या है।
Object Identifier - एक संख्या जो डिवाइस को विशिष्ट रूप से पहचानती है। यदि Object-Identifier ज्ञात है, तो BACnet क्लाइंट सॉफ़्टवेयर के साथ कमांड भेजना संभव है, जिसमें BACnet डिवाइस पर मान, प्रोग्राम, शेड्यूल और अन्य परिचालन जानकारी बदलने वाले कमांड शामिल हैं। यह सभी BACnet डिवाइस के लिए एक आवश्यक गुण है।
Firmware Revision - BACnet डिवाइस पर फ़र्मवेयर का रिवीज़न नंबर।
Application Software Revision - BACnet संचार के लिए उपयोग किए जा रहे सॉफ़्टवेयर का रिवीज़न नंबर।
Object Name - एक उपयोगकर्ता-परिभाषित स्ट्रिंग जो BACnet डिवाइस को एक नाम प्रदान करती है, जिसे आमतौर पर तकनीशियन कमीशनिंग के समय दर्ज करते हैं। यह सभी BACnet डिवाइस के लिए एक आवश्यक गुण है।
Model Name - BACnet डिवाइस का मॉडल
Description - डिवाइस का वर्णन करने के लिए उपयोगकर्ता-परिभाषित स्ट्रिंग, जिसे आमतौर पर तकनीशियन कमीशनिंग के समय दर्ज करते हैं
Location - डिवाइस के भौतिक स्थान को रिकॉर्ड करने के लिए उपयोगकर्ता-परिभाषित स्ट्रिंग, जिसे आमतौर पर तकनीशियन कमीशनिंग के समय दर्ज करते हैं
Broadcast Distribution Table (BDT) - BACnet नेटवर्क में BACnet Broadcast Management Devices (BBMD) की एक सूची। यह BACnet नेटवर्क का हिस्सा सभी सबनेट की पहचान करेगा।
Foreign Device Table (FDT) - BACnet डिवाइस के साथ पंजीकृत विदेशी उपकरणों की एक सूची। विदेशी डिवाइस वह कोई भी डिवाइस है जो BACnet नेटवर्क के हिस्से वाले सबनेट पर नहीं है, और BDT में नहीं है। विदेशी डिवाइस अक्सर बाहरी नेटवर्क पर स्थित होते हैं और हमलावर का IP पता हो सकते हैं।
BDT और FDT बड़ी सूचियाँ हो सकती हैं और बड़े Nmap स्कैन में वांछित नहीं हो सकती हैं। मूल स्क्रिप्ट BDT और FDT को डाउनलोड नहीं करेगी। BDT और FDT प्राप्त करने के लिए --script-args full=yes के साथ कमांड चलाएँ, उपयोग अनुभाग देखें।
![BACnet-discover-enumerate नमूना आउटपुट BDT और FDT के साथ] (http://digibond.wpengine.netdna-cdn.com/wp-content/uploads/2014/08/screenshot_bacnet-1.png)
यह स्क्रिप्ट BACnet विनिर्देश में 2004 में जोड़ी गई एक सुविधा का उपयोग करती है, ताकि एक ही अनुरोध में किसी डिवाइस का Object Identifier प्राप्त किया जा सके, और BACnet नेटवर्क में विदेशी डिवाइस के रूप में शामिल हुए बिना। (विवरण के लिए ANSI/ASHRAE Standard 135-2001 में ANSI/ASHRAE Addendum a देखें)
####इतिहास और पृष्ठभूमि
Wikipedia पर BACnet लेख से http://en.wikipedia.org/wiki/BACnet:
BACnet भवन स्वचालन और नियंत्रण नेटवर्क के लिए एक संचार प्रोटोकॉल है। यह ASHRAE, ANSI और ISO मानक[1] प्रोटोकॉल है। BACnet ट्रैफ़िक के लिए डिफ़ॉल्ट पोर्ट UDP/47808 है।
BACnet का उपयोग भवन स्वचालन और नियंत्रण प्रणालियों में हीटिंग, वेंटिलेशन और एयर-कंडीशनिंग नियंत्रण, प्रकाश नियंत्रण, एक्सेस नियंत्रण, और आग का पता लगाने वाली प्रणालियों और उनके संबंधित उपकरणों जैसे अनुप्रयोगों के लिए किया जाता है। BACnet प्रोटोकॉल कम्प्यूटरीकृत भवन स्वचालन उपकरणों को सूचना का आदान-प्रदान करने के लिए तंत्र प्रदान करता है, चाहे वे कोई भी विशेष भवन सेवा करते हों।
####स्थापना
इस स्क्रिप्ट को चलाने के लिए Nmap की आवश्यकता होती है। यदि आपके पास Nmap नहीं है, तो Nmap के निर्देशों के अनुसार Nmap डाउनलोड और इंस्टॉल करें। http://nmap.org/download.html
#####Windows
bacnet-discover.nse डाउनलोड करने के बाद आपको इसे NSE Scripts निर्देशिका में ले जाना होगा, यह एक व्यवस्थापक के रूप में करना होगा। Start -> Programs -> Accessories पर जाएँ, और 'Command Prompt' पर राइट क्लिक करें। 'Run as Administrator' चुनें।
move BACnet-discover-enumerate.nse C:\Program Files (x86)\Nmap\scripts
#####Linux
BACnet-discover-enumerate.nse डाउनलोड करने के बाद आपको इसे NSE Scripts निर्देशिका में ले जाना होगा, यह sudo/root के रूप में करना होगा।
sudo mv BACnet-discover-enumerate.nse /usr/share/nmap/scripts
####उपयोग
टर्मिनल विंडो/कमांड प्रॉम्प्ट में निम्नलिखित में से एक कमांड का उपयोग करें, जहाँ host वह लक्ष्य है जिसे आप BACNet के लिए स्कैन करना चाहते हैं। यदि आप चाहते हैं कि आउटपुट में BDT और FDT शामिल हों तो --script-args full=yes का उपयोग करें।
Windows: nmap -sU -p 47808 --script BACnet-discover-enumerate <host>
Windows: nmap -sU -p 47808 --script BACnet-discover-enumerate --script-args full=yes <host>
Linux: sudo nmap -sU -p 47808 --script BACnet-discover-enumerate <host>
Linux: sudo nmap -sU -p 47808 --script BACnet-discover-enumerate --script-args full=yes <host>
स्कैन के दौरान DNS लुकअप न करके परिणाम तेज़ करने के लिए -n विकल्प का उपयोग करें, और यह निर्धारित करने के लिए पिंग अक्षम करें कि डिवाइस चालू है या नहीं, पूर्ण परिणामों के लिए -Pn विकल्प का उपयोग करें।