
यथार्थवादी वर्चुअल SCADA/ICS टेस्टबेड तैनात करता है, जिसमें IEC 60870-5-104 और OPC-UA नोड्स शामिल हैं, जो हमले के सिमुलेशन, वैध पैकेट जनरेशन और रेड-टीम सुरक्षा अभ्यासों को सक्षम बनाता है।
एक स्केलेबल फ्रेमवर्क प्रस्तावित है जो स्थानीय रूप से (या दूरस्थ रूप से) कई वर्चुअल मशीनों को स्वचालित रूप से तैनात करता है, जो एक सुपरवाइज़री कंट्रोल एंड डेटा अधिग्रहण (SCADA) नेटवर्क की नकल करती हैं। इसमें कई वर्चुअल होस्ट शामिल हैं जो सेंसर और एक्चुएटर का अनुकरण करते हैं, साथ ही एक ह्यूमन मशीन इंटरफ़ेस (HMI) जो होस्ट को नियंत्रित करता है। प्रस्तुत फ्रेमवर्क में स्वचालन स्क्रिप्ट का एक संग्रह शामिल है जो चर संख्या में वर्चुअल मशीनों का निर्माण और तैनाती करता है, जो या तो रिमोट टर्मिनल यूनिट (RTU), HMI या डेटा हिस्टोरियन के रूप में कार्य करने के लिए पूर्व-कॉन्फ़िगर होती हैं। प्रस्तुत कार्य में IEC 60870-5-104 (IEC104) और OPC यूनिफाइड आर्किटेक्चर (OPC-UA) का एक मानक-अनुपालक कार्यान्वयन शामिल है, जिसमें Modbus-TCP (Modbus) और IEC61850 जैसे अन्य प्रोटोकॉल को समर्थन देने की क्षमता है।
यह शोधकर्ताओं को टेस्टबेड बनाने की अनुमति देता है जिन्हें SCADA नेटवर्क की वास्तविक दुनिया की तैनाती की नकल करने के लिए कॉन्फ़िगर किया जा सकता है। फ्रेमवर्क ओपन सोर्स लाइब्रेरी पर आधारित है और फ्री सॉफ्टवेयर फाउंडेशन द्वारा अनुमोदित लाइसेंस, GNU जनरल पब्लिक लाइसेंस संस्करण 3 के तहत जारी किया गया है।
पैकेट जनरेशन: पहले उपयोग मामले का उद्देश्य बड़ी संख्या में उपकरणों से नेटवर्क ट्रैफ़िक उत्पन्न करना है, जिसमें उच्च स्तर की डोमेन निष्ठा हो, जहां आदर्श रूप से प्रक्रिया जानकारी ट्रैफ़िक में शामिल हो। जैसा कि पहले बताया गया है, लाइव सिस्टम से डेटासेट बनाना हमेशा संभव नहीं होता: यह श्रमसाध्य है, किसी को उपयुक्त टैप पॉइंट ढूंढना होता है और संयंत्र संचालकों से अनुमोदन प्राप्त करना होता है। यह संयंत्र संचालन और नीतियों द्वारा प्रतिबंधित हो सकता है, क्योंकि कार्यशील नेटवर्क में हस्तक्षेप अप्रत्याशित परिस्थितियों को जन्म दे सकता है और पहचान योग्य जानकारी लीक कर सकता है। पैकेट जनरेशन का उपयोग SCADA नेटवर्क में प्रस्तावित परिवर्तनों का परीक्षण करने के लिए किया जा सकता है, इससे पहले कि उन्हें लाइव सिस्टम में तैनात किया जाए। यह वैध दिखने वाले पैकेट का उपयोग करके उपकरणों का स्ट्रेस टेस्टिंग भी कर सकता है। दिलचस्प शोध उपयोग मामलों में विभिन्न नेटवर्किंग प्रतिमानों के साथ प्रयोग शामिल हैं, जैसे ICN या IPv6, जिन्हें ICS नेटवर्क पर लागू नहीं किया गया है।
हमलों का अनुकरण: यह मामला SCADA प्रणालियों पर जटिल हमलों के अनुकरण पर विचार करता है, और लाइव सिस्टम पर प्रतिकूल प्रभाव डाले बिना, प्रतिकृति ICS नेटवर्क का जोखिम विश्लेषण करने का लक्ष्य रखता है। टेस्टबेड का उपयोग रेड टीमों द्वारा टेस्टबेड नोड्स से समझौता करने के प्रयास में किया जा सकता है, साथ ही परिणामों का विश्लेषण करने और पूर्ण पैकेट कैप्चर विश्लेषण प्राप्त करने के साथ। यदि वे सफल होते हैं, तो प्रक्रिया को अतिरिक्त प्रति-उपायों के साथ फिर से निष्पादित किया जा सकता है, जिससे नए प्रति-उपायों का परीक्षण सुरक्षा के संदर्भ में और यह देखने के लिए किया जा सकता है कि यह साइट प्रक्रियाओं को कैसे प्रभावित कर सकता है। रेड टीम अभ्यास के नेटवर्क कैप्चर को IDS सत्यापन के लिए खुले डेटासेट के रूप में प्रकाशित किया जा सकता है, जिसे अन्य शोधकर्ताओं द्वारा पुन: प्रस्तुत और पुष्टि किया जा सकता है।
एजेंट बेंचमार्किंग: इस उपयोग मामले का उद्देश्य एजेंट होस्ट आधारित सिस्टम की बेंचमार्किंग का समर्थन करना है, जो आमतौर पर विक्रेता प्रतिबंधों के कारण लाइव सिस्टम पर नहीं किए जाते हैं। जब तक एजेंट विक्रेताओं द्वारा विश्वसनीय नहीं होता, उसे अक्सर तैनात करने से प्रतिबंधित किया जाता है, जिसमें अनुबंध के उल्लंघन का जोखिम होता है। वास्तविक औद्योगिक साइट का सटीक प्रतिनिधित्व करने वाले टेस्टबेड का उपयोग करके, बिना किसी व्यवधान के एजेंट आधारित सॉफ़्टवेयर के उपयोग की निगरानी करना संभव है। बशर्ते टेस्टबेड स्वतंत्र रूप से संशोधन योग्य, कार्यात्मक रूप से सटीक हो और भौतिक हार्डवेयर के साथ एकीकृत हो सके, एजेंट का बेंचमार्क करना संभव होगा।
सीमित हार्डवेयर का विस्तार: अंतिम मामला मौजूदा भौतिक टेस्टबेड का विस्तार करना है ताकि संचार प्रोटोकॉल और कॉन्फ़िगरेशन शामिल किए जा सकें जो मौजूदा हार्डवेयर के साथ संभव नहीं थे। इसके लिए नेटवर्क इम्यूलेटर के उपयोग की आवश्यकता हो सकती है, ताकि नेटवर्किंग उपकरण का विस्तार किया जा सके, और प्रक्रिया सिमुलेटर, ताकि प्रक्रिया नियंत्रण उपकरण का विस्तार किया जा सके। वर्चुअल और भौतिक हार्डवेयर को एक साथ जोड़कर, एक जटिल और अत्यधिक यथार्थवादी टेस्टबेड बनाना संभव है, जिससे बड़ी तैनाती की अनुमति मिलती है जो कई प्रोटोकॉल और उपकरणों को जोड़ती है और उनका विश्लेषण किया जा सकता है। इस उपयोग मामले का उपयोग अन्य के साथ मिलकर उनके परिणामों को बेहतर बनाने के लिए किया जा सकता है।
रिपॉजिटरी को क्लोन करें और आवश्यक निर्भरताएं स्थापित करें:
git clone --recurse-submodules [email protected]:PMaynard/ICS-TestBed-Framework.git
sudo apt install openjdk-8-jdk maven
निर्माण:
mvn clean package
mvn package -DskipTests # Skip tests.
एक RTU प्रारंभ करें:
java -jar node/target/node-1.0.jar
shell> rtu
shell> rtu-iec104port 2404
shell> rtu-listen 127.0.0.1
shell> run
एक HMI प्रारंभ करें:
java -jar node/target/node-1.0.jar
shell> hmi
shell> hmi-interval 1000
shell> remote-hosts 127.0.0.1
shell> run
डिफ़ॉल्ट कॉन्फ़िगरेशन प्रोफ़ाइल 1 HMI और 4 RTU तैनात करेगी। HMI IEC104 और OPC-UA का उपयोग करके RTU को एकीकृत करेगा। RTU को यादृच्छिक प्रक्रिया डेटा लौटाने के लिए कॉन्फ़िगर किया गया है।
पूर्व-निर्मित/वितरण पैकेजों के बजाय Vagrant के नवीनतम संस्करण का उपयोग करें क्योंकि ये स्क्रिप्ट Vagrant के नवीनतम संस्करणों की सुविधाओं का उपयोग करती हैं। Ubuntu 18.04.1 LTS का उपयोग करने पर ठीक रहना चाहिए।
git clone https://github.com/mitchellh/vagrant.git /opt/vagrant
cd /opt/vagrant
bundle install
bundle --binstubs exec
ln -sf /opt/vagrant/exec/vagrant /usr/local/bin/vagrant
यह एक वैकल्पिक विकास चरण है। यह एक वर्चुअल मशीन इमेज बनाता है, जो टेस्टबेड नोड्स चलाने के लिए पूर्व-कॉन्फ़िगर है। यदि आप नवीनतम संस्करण नहीं बनाना चाहते हैं, तो डिफ़ॉल्ट विकल्प Vagrant की इमेज रिपॉजिटरी से एक स्थिर इमेज प्राप्त करना है जो मास्टर शाखा के साथ समकक्ष रहती है।
Packer का उपयोग VirtualBox और Vagrant के लिए उपयुक्त वर्चुअल मशीन इमेज बनाने के लिए किया जाता है:
cd vagrant_image
packer build vagrant-node.json
vagrant box add testbed-node vagrant.box
चेतावनी आपको कम से कम 4GB खाली RAM की आवश्यकता होगी।
Vagrantfile को किसी भी अतिरिक्त जानकारी के साथ अपडेट करें, जैसे स्थिर IP पता और RAM उपयोग।
डिफ़ॉल्ट IP सेटिंग्स 10.50.50.* हैं। .200 HMI के लिए और 101-105 RTU के लिए उपयोग किया जाता है। प्रति VM आवंटित डिफ़ॉल्ट RAM 512MB है।
vagrant up
vagrant ssh hmi
vagrant ssh rtu-1 # 1-5
vagrant halt
vagrant destroy
डिफ़ॉल्ट तैनाती कॉन्फ़िगरेशन का उपयोग करके एक उदाहरण डेटासेट बनाया गया था। PCAP यहां से डाउनलोड किए जा सकते हैं। IEC104 MITM यहां स्थित ettercap प्लगइन का उपयोग करके किया गया था
[Host-SCAN 13:45]: Nmap नेटवर्क-व्यापी स्कैन का उपयोग करके बुनियादी नेटवर्क टोही। CMD: 'nmap -sn 10.50.50.*'
[Host-SCAN 13:47]: सुलभ [IEC104]{acronym-label="IEC104" acronym-form="singular+short"} सर्वरों की तलाश में बुनियादी नेटवर्क टोही। CMD: 'nmap 10.50.50.* -p 2404'
[Host-SCAN 13:47]: पहचाने गए [RTUs]{acronym-label="RTU" acronym-form="plural+short"} नोड्स का पूर्ण पोर्ट स्कैन। CMD: 'nmap 10.50.50.101-105 -A'
[Host-SCAN 13:49]: एक सक्रिय [IEC104]{acronym-label="IEC104" acronym-form="singular+short"} स्कैन जो [IEC104]{acronym-label="IEC104" acronym-form="singular+short"} प्रोटोकॉल[^1] का उपयोग करके नोड्स की जांच करता है। CMD: 'nmap -Pn -n -d --script iec-identify.nse --script-args='iec-identify.timeout=500' -p 2404 10.50.50.101-105'
[Host-MITM 14:19]: RTU-1 और HMI पर [MITM]{acronym-label="MITM" acronym-form="singular+short"} करता है। CMD: 'ettercap -i enp0s8 -T -M arp -P spoof_104 /10.50.50.101/ /10.50.50.150/'
डेटासेट का संख्यात्मक विवरण नीचे दिखाया गया है:
कृपया इस फ्रेमवर्क को निम्नलिखित प्रारूप का उपयोग करके उद्धृत करें:
@conference{
author = "Peter Maynard and Kieran McLaughlin and Sakir Sezer",
title = "An Open Framework for Deploying Experimental SCADA Testbed Networks",
journal = "5th International Symposium for ICS & SCADA Cyber Security Research",
year = "2018"
}
डेटासेट को DOI का उपयोग करके उद्धृत किया जा सकता है: 10.6084/m9.figshare.6133457.v1
पूरा पेपर यहां पाया जा सकता है: https://petermaynard.co.uk/publication/an-open-framework-for-deploying-experimental-scada-testbed-networks/
| होस्ट | IP | IEC104 | OPC-UA | अन्य | कुल |
|---|
| HMI | 10.50.50.150 | 26,158 | 0 | 17,688 | 43,846 |
| हिस्टोरियन | 10.50.50.151 | 0 | 14,695 | 14,927 | 29,622 |
| RTU-1 | 10.50.50.101 | 3,592 | 2,940 | 5,543 | 12,075 |
| RTU-2 | 10.50.50.102 | 3,665 | 2,941 | 5,876 | 12,482 |
| RTU-3 | 10.50.50.103 | 3,668 | 2,940 | 5,793 | 12,404 |
| RTU-4 | 10.50.50.104 | 3,690 | 2,940 | 5,771 | 12,404 |
| RTU-5 | 10.50.50.105 | 3,576 | 930 | 7,933 | 12,442 |
| MITM | 10.50.50.99 | 2,390 | 0 | 3,449 | 5,839 |
| SCAN | 10.50.50.3 | 15 | 0 | 28,351 | 28,366 |