
फ़र्मवेयर विश्लेषण और तुलना उपकरण
फर्मवेयर विश्लेषण का उपयोग कई दिलचस्प लक्ष्यों को प्राप्त करने के लिए किया जा सकता है। इनमें सबसे प्रमुख है ब्लैक बॉक्स फर्मवेयर में कार्यक्षमता, घटकों और संभावित सुरक्षा कमजोरियों की पहचान करना।
फर्मवेयर विश्लेषण और तुलना उपकरण (FACT) मैन्युअल फर्मवेयर विश्लेषण कार्य को जितना संभव हो उतना स्वचालित करने के लिए डिज़ाइन किया गया है। FACT शक्तिशाली विश्लेषणों के एक बढ़ते सेट को जोड़ता है ताकि एक एकीकृत इंटरफ़ेस तैयार किया जा सके जो उपयोगकर्ता को एक मनमाने फर्मवेयर नमूने से लेकर पूर्ण विश्लेषण तक ले जाता है। FACT विश्लेषण की कुछ प्रमुख विशेषताएँ यह हैं कि परिणाम
इसके अलावा, FACT आसान पहुँच के लिए विश्लेषण परिणामों और फर्मवेयर सामग्री को नेविगेट करने और देखने के कई तरीके प्रदान करता है। मुख्य FACT इंटरफ़ेस एक html/js/css-आधारित वेब इंटरफ़ेस है जिसे स्थानीय रूप से होस्ट किया जा सकता है या नेटवर्क के माध्यम से साझा किया जा सकता है। इसके अलावा, FACT एक REST-जैसा HTTP API प्रदान करता है जिसे एकीकृत SwaggerUI के साथ खोजा जा सकता है। वेब इंटरफ़ेस की कुछ प्रमुख विशेषताएँ इस प्रकार हैं:
जबकि FACT एक शोध प्रोटोटाइप के रूप में बनाए रखा गया है, परियोजना अच्छी तरह से परीक्षण की गई है, इसमें दस्तावेज़ीकरण का एक आधार शामिल है और उत्पादन स्तर की कई सुविधाएँ प्रदान करता है। हम हमेशा प्रतिक्रिया और सुविधा अनुरोधों की तलाश में रहते हैं।
अधिक विवरण और कुछ स्क्रीनशॉट हमारे प्रोजेक्ट पेज पर पाए जा सकते हैं।
FACT को एक बहु-प्रक्रिया अनुप्रयोग के रूप में डिज़ाइन किया गया है, जितने अधिक कोर और RAM, उतना बेहतर।
| न्यूनतम | अनुशंसित |
|---|---|
| 4 कोर | 16 कोर |
| 8 GB RAM | 64 GB RAM |
| 10 GB डिस्क स्थान | 10* GB डिस्क स्थान |
[!NOTE] FACT कोड, कंटेनर और बाइनरी सेटअप करने के लिए लगभग 10 GB आवश्यक है। अनपैक की गई फ़ाइलों और विश्लेषण परिणामों के भंडारण के लिए अतिरिक्त स्थान आवश्यक है। यह एक अलग विभाजन या ड्राइव पर हो सकता है।
FACT को किसी भी Linux वितरण पर स्थापित करना सैद्धांतिक रूप से संभव है, लेकिन इंस्टॉलर निम्नलिखित तक सीमित है
पुराने वितरणों (जैसे Debian 11 "Bullseye" या Ubuntu 20.04 "Focal") पर स्थापना अभी भी काम कर सकती है, लेकिन इसे स्थिर नहीं माना जाता है, क्योंकि ये वितरण अपने जीवन के अंत तक पहुँच चुके हैं।
FACT को Python 3.10–3.14 की आवश्यकता है (सभी समर्थित वितरणों में डिफ़ॉल्ट होना चाहिए)
सेटअप प्रक्रिया अधिकांशतः स्वचालित है और एक ही स्क्रिप्ट में लिपटी हुई है। हालाँकि कुछ सुविधाओं का चयन विशेष रूप से किया जा सकता है। FACT कैसे स्थापित करें, इसकी विस्तृत मार्गदर्शिका के लिए देखें INSTALL.md।
[!IMPORTANT] ध्यान दें कि कंटेनरों का व्यापक उपयोग करने के बावजूद, FACT में अभी भी कई निर्भरताएँ हैं (और कोई अनइंस्टॉल प्रदान नहीं किया गया है)। यदि आप अपने सिस्टम को साफ रखना चाहते हैं, तो आप निम्नलिखित में दिए गए सेटअप विकल्पों में से एक आज़मा सकते हैं।
हम अपनी master शाखा के मासिक और उपयोग के लिए तैयार vagrant बॉक्स प्रदान करते हैं। Vagrant FACT के साथ आरंभ करने का एक आसान और सुविधाजनक तरीका है, बिना इसे अपनी मशीन पर स्थापित किए। बस vagrant सेटअप करें और हमारे प्रदान किए गए बॉक्स को VirtualBox में आयात करें। हमारे बॉक्स vagrantup वेबसाइट पर पाए जा सकते हैं!
हमारे ट्यूटोरियल में FACT और vagrant के साथ आरंभ करने का तरीका देखें।
एक डॉकरीकृत संस्करण भी है, लेकिन यह वर्तमान में अनुरक्षित नहीं है। (अधिक जानकारी के लिए FACT_docker रेपो देखें)।
आप start_fact.py स्क्रिप्ट चलाकर FACT शुरू कर सकते हैं।
स्क्रिप्ट स्वचालित रूप से सभी स्थापित घटकों का पता लगाती है।
src/start_fact.py
उसके बाद, FACT को http://localhost:5000 (डिफ़ॉल्ट) या https://localhost (यदि FACT nginx के साथ स्थापित है) पर एक्सेस किया जा सकता है।
आप Ctrl + c दबाकर या start_fact.py स्क्रिप्ट को SIGTERM भेजकर सिस्टम को बंद कर सकते हैं।
[!CAUTION] FACT को सार्वजनिक इंटरनेट सेवा के रूप में उपयोग करने का इरादा नहीं है। वेब इंटरफ़ेस एक कठोर अनुप्रयोग नहीं है। हम SecDevOps लागू करके सुरक्षा मुद्दों को सीमित रखने का प्रयास करते हैं, लेकिन FACT में अभी भी कमजोरियाँ हो सकती हैं। यदि FACT को पूरी तरह से विश्वसनीय नेटवर्क पर होस्ट करने की योजना है, तो fact कॉन्फ़िगरेशन में सभी पासवर्ड रीसेट करना सुनिश्चित करें।
[!TIP] FACT का उपयोग कैसे करें, इस पर अधिक दस्तावेज़ीकरण हमारे विकी पेजों पर पाया जा सकता है।
आप हमारा Sphinx दस्तावेज़ीकरण भी देख सकते हैं।
FACT क्या है और यह कैसे काम करता है, इसकी जानकारी docs फ़ोल्डर में स्लाइड्स में भी पाई जा सकती है।
FACT एक REST API प्रदान करता है। अधिक जानकारी विकी पेज पर पाई जा सकती है।
FACT एक वैकल्पिक बुनियादी प्रमाणीकरण, भूमिका और उपयोगकर्ता प्रबंधन प्रदान करता है। अधिक जानकारी विकी पेज पर पाई जा सकती है।
योगदान देने का सबसे आसान तरीका अपना स्वयं का प्लगइन लिखना है। हमारा डेवलपर मैनुअल GitHub पर विकी में पाया जा सकता है।
वर्तमान में उपलब्ध अतिरिक्त प्लगइन्स:
स्क्रिप्ट src/firmware_import_export.py का उपयोग अनपैक की गई फ़ाइलों और विश्लेषण परिणामों को निर्यात करने और उन्हें किसी अन्य FACT इंस्टेंस में आयात करने के लिए किया जा सकता है।
डेटा को ZIP संग्रह के रूप में संग्रहीत किया जाता है, और आयात के दौरान स्क्रिप्ट इसी प्रारूप की अपेक्षा करती है।
विश्लेषण किए गए फर्मवेयर छवियों की फ़ाइलों और विश्लेषण डेटा को निर्यात करने के लिए, चलाएँ
python3 firmware_import_export.py export FW_UID [FW_UID_2 ...] [-o OUTPUT_DIR]
[!NOTE] निर्यात किए गए संग्रह महत्वपूर्ण डिस्क स्थान ले सकते हैं। कोई निश्चित संबंध नहीं है, लेकिन यह मूल फर्मवेयर के आकार से 2-10 गुना अधिक हो सकता है।
इसके बाद, आप निर्यात की गई फ़ाइलों को निम्न के साथ आयात कर सकते हैं
python3 firmware_import_export.py import FW.zip [FW_2.zip ...]
हमें कई BlackHat Arsenal सत्रों में FACT दिखाने में खुशी हुई है।
@botlabsDev को धन्यवाद, जिन्होंने शुरू में एक Vagrantfile प्रदान किया था जो अब, हालाँकि, अप्रचलित है।
यह परियोजना आंशिक रूप से जर्मन संघीय सूचना सुरक्षा कार्यालय (BSI) और अन्य द्वारा वित्तपोषित है।
फर्मवेयर विश्लेषण और तुलना उपकरण (FACT)
कॉपीराइट (C) 2015-2026 Fraunhofer FKIE
यह प्रोग्राम मुफ्त सॉफ्टवेयर है: आप इसे GNU जनरल पब्लिक लाइसेंस की शर्तों के तहत पुनर्वितरित और/या संशोधित कर सकते हैं, जैसा कि फ्री सॉफ्टवेयर फाउंडेशन द्वारा प्रकाशित किया गया है, या तो लाइसेंस का संस्करण 3, या (आपके विकल्प पर) किसी भी बाद के संस्करण के तहत। यह प्रोग्राम इस उम्मीद में वितरित किया जाता है कि यह उपयोगी होगा, लेकिन बिना किसी वारंटी के; यहां तक कि व्यापारिकता या किसी विशेष उद्देश्य के लिए उपयुक्तता की निहित वारंटी के बिना। अधिक जानकारी के लिए GNU जनरल पब्लिक लाइसेंस देखें। आपको इस प्रोग्राम के साथ GNU जनरल पब्लिक लाइसेंस की एक प्रति प्राप्त होनी चाहिए। यदि नहीं, तो http://www.gnu.org/licenses/ देखें।
कुछ प्लगइन्स के अलग-अलग लाइसेंस हो सकते हैं। यदि ऐसा है, तो प्लगइन के फ़ोल्डर में एक लाइसेंस फ़ाइल प्रदान की गई है।