
PLC-आधारित ICS नियंत्रण अनुप्रयोगों के लिए इंस्ट्रूमेंटेड फ़ज़र, जो Wago नियंत्रकों पर Codesys रनटाइम को लक्षित कर मेमोरी भ्रष्टाचार और क्रैश उत्पन्न करने वाले इनपुट का पता लगाता है।
ICSFuzz: ICS नियंत्रण अनुप्रयोगों के लिए फ़ज़िंग टूल
ICSFuzz एक PLC-पक्षीय फ़ज़िंग टूल है जो ICS नियंत्रण अनुप्रयोगों में कमज़ोरियों को उजागर करने के लिए है
दिमित्रिस टायचलास द्वारा \@ditihala_
.. _\@ditihala: https://www.twitter.com/ditihala
इस टूल के लिए आपकी मशीन पर पहले से मौजूद क्रॉस कंपाइलर आवश्यक है। चूँकि फ़ज़र PLC पर मूल रूप से चलता है, इसे ARM-आधारित क्रॉस-टूलचेन, जैसे कि OSELAS, के साथ संकलित करने की आवश्यकता होती है। ऐसी टूलचेन स्थापित करने के लिए कृपया निम्नलिखित लिंक पर दिए गए निर्देशों का पालन करें और Makefile को अपने क्रॉस-कंपाइलर के स्थान के अनुसार संशोधित करें।
OSELAS टूलचेन <https://pengutronix.de/en/software/toolchain.html>__ICSFuzz टूल ICS नियंत्रण अनुप्रयोगों के मूल्यांकन के लिए एक विशेष सुरक्षा मूल्यांकन टूल है। इस वर्तमान चरण में, यह केवल Codesys प्लेटफ़ॉर्म पर आधारित अनुप्रयोगों का समर्थन करता है, जिसे Wago PLC के लिए संशोधित और अनुकूलित किया गया है। हालाँकि यह टूल हमारी ओर से एक निरंतर प्रयास है, उन्नयन और बेहतर संगतता के लिए कोई भी सुझाव अत्यधिक स्वागत योग्य हैं :) बस मुझे एक ईमेल करें [email protected]
यह टूल एक सरल अनुप्रयोग के रूप में बनाया गया है जो आपके Wago PLC पर चलेगा। बस Makefile चलाएँ, उत्पादित fuzzer बाइनरी को अपने PLC पर कॉपी करें और इसे निष्पादित करें! चूँकि टूल मनमाने प्रोसेस मेमोरी तक पहुँचता है और उसे संशोधित करता है, इसके लिए प्रशासक विशेषाधिकारों की आवश्यकता होती है। कृपया इसे sudo या रूट उपयोगकर्ता के रूप में निष्पादित करना सुनिश्चित करें।
यह टूल वर्तमान में Codesys 3.5, पैच 02.06.20(08) और पुराने संस्करणों के साथ संगत है, कृपया अपने PLC फ़र्मवेयर को अपग्रेड या डाउनग्रेड करें ताकि यह ICSFuzz को ठीक से होस्ट कर सके। फ़ज़िंग प्रक्रिया पर दृश्य प्रतिक्रिया के लिए, आप e!cockpit प्लेटफ़ॉर्म का उपयोग कर सकते हैं, जो Wago PLC के लिए एक विकास/HMI टूल के रूप में पेश किया जाता है। इसके माध्यम से, आप अनुप्रयोग को दिए गए फ़ज़िंग इनपुट को ट्रैक कर सकते हैं और संभावित क्रैश के बारे में जानकारी प्राप्त कर सकते हैं, क्योंकि अनुप्रयोग चलना बंद कर देगा, "run" LED लाल पर अटक जाएगा। चूँकि अनुप्रयोग रुक जाएगा, वर्तमान (अटका हुआ) इनपुट वही है जिसने क्रैश का कारण बना। आप e!cockpit के माध्यम से अनुप्रयोग को पुनः आरंभ कर सकते हैं और फ़ज़र को एक बार फिर से पुनः आरंभ कर सकते हैं।
फ़ज़र में एक प्रारंभिक हार्ड-कोडेड प्रारंभिक मान है (स्रोत कोड में seed_input के रूप में नोट करें) जिसे आप फ़ज़र के साथ खेलते समय इच्छानुसार संशोधित कर सकते हैं।
यदि आप हमारा काम दिलचस्प पाते हैं और इसे अपने (शैक्षणिक या गैर-शैक्षणिक) शोध में उपयोग करते हैं, तो कृपया ICSFuzz का वर्णन करने वाले हमारे Usenix Security 2021 पेपर को उद्धृत करें:
Tychalas, Dimitrios, Hadjer Benkraouda, and Michail Maniatakos. "ICSFuzz: Manipulating I/Os and Repurposing Binary Code to Enable Instrumented Fuzzing in {ICS} Control Applications." 30th {USENIX} Security Symposium ({USENIX} Security 21). 2021.
ICSFuzz, जीवन की सभी अच्छी चीजों की तरह, दिग्गजों के कंधों पर आधारित है। यह ढांचा माइकल ज़ेलेव्स्की द्वारा निर्मित शक्तिशाली AFL पर आधारित है, जो ICS अनुप्रयोग को दिए जाने वाले आवश्यक इनपुट म्यूटेशन उत्पन्न करता है।
AFL <https://lcamtuf.coredump.cx/afl/>__