
CERT Kaiju, Ghidra सॉफ्टवेयर रिवर्स इंजीनियरिंग सुइट के लिए एक बाइनरी विश्लेषण फ्रेमवर्क एक्सटेंशन है। यह रिपॉजिटरी एक 'मिरर' है -- कृपया टिकट, बग रिपोर्ट या पुल रिक्वेस्ट @CERTCC पर अपस्ट्रीम होम पर दर्ज करें: https://github.com/certcc/kaiju
CERT Kaiju Ghidra के लिए बाइनरी विश्लेषण उपकरणों का एक संग्रह है।
यह CERT Pharos Binary Analysis Framework की कुछ सुविधाओं का Ghidra/Java कार्यान्वयन है, विशेष रूप से फ़ंक्शन हैशिंग और मैलवेयर विश्लेषण उपकरण, लेकिन समय के साथ नए उपकरणों और क्षमताओं को विकसित करने की उम्मीद है।
चूंकि यह एक नया प्रयास है, इस कार्यान्वयन में अभी तक ROSE पर आधारित मूल C++ कार्यान्वयन के साथ पूर्ण सुविधा समानता नहीं है; हालाँकि, Java और Ghidra में स्थानांतरित होने से वास्तव में कुछ नई सुविधाएँ सक्षम हुई हैं जो मूल ढाँचे में उपलब्ध नहीं थीं — विशेष रूप से, गैर-x86 आर्किटेक्चर का बेहतर संचालन। चूंकि ढाँचे और उपकरणों का महत्वपूर्ण पुनर्रचना हो रही है, और Java और Ghidra में स्थानांतरण C++ कार्यान्वयन से भिन्न क्षमताओं को सक्षम करता है, नई ब्रांडिंग का उपयोग करने का निर्णय लिया गया ताकि विभिन्न उपकरणों और क्षमताओं पर चर्चा करते समय कार्यान्वयनों के बीच कम भ्रम हो।
निकट भविष्य के लिए हमारा इरादा मूल Pharos ढाँचे के साथ-साथ Kaiju को भी बनाए रखना है, क्योंकि दोनों अद्वितीय सुविधाएँ और क्षमताएँ प्रदान कर सकते हैं।
चेतावनी: एक प्रोटोटाइप के रूप में, इस प्लगइन द्वारा बनाए गए फ़ंक्शन हैश का मूल्यांकन करते समय कई समस्याएँ उत्पन्न हो सकती हैं। उदाहरण के लिए, Pharos कार्यान्वयन के विपरीत, Kaiju का फ़ंक्शन हैशिंग मॉड्यूल बहुत छोटे फ़ंक्शनों के लिए हैश बनाएगा (जैसे, एकल निर्देश वाले जैसे RET जो कई अनपेक्षित टकराव उत्पन्न करते हैं)। इस प्रकार, इस प्लगइन और Pharos fn2hash के बीच विश्लेषणात्मक परिणाम भिन्न हो सकते हैं।
पूर्व-निर्मित Kaiju पैकेज उपलब्ध हैं। बस अपने Ghidra संस्करण के अनुरूप ZIP फ़ाइल डाउनलोड करें और नीचे दिए गए निर्देशों के अनुसार स्थापित करें। Ghidra के ग्राफिकल इंटरफ़ेस के माध्यम से स्थापित करने की अनुशंसा की जाती है, लेकिन उपयुक्त निर्देशिका में मैन्युअल रूप से अनज़िप करके स्थापित करना भी संभव है।
CERT Kaiju को निम्नलिखित रनटाइम निर्भरताओं की आवश्यकता है:
Z3 पूर्व-निर्मित पैकेजों के भाग के रूप में पूर्व-संकलित प्रदान किया जाता है, या आप स्वयं Z3 बना सकते हैं या अपने Linux वितरण के पैकेज का उपयोग कर सकते हैं।
Ghidra प्रारंभ करें, और प्रारंभिक विंडो से, मेनू से चुनें: File > Install Extension। एक्सटेंशन विंडो के शीर्ष पर प्लस चिह्न पर क्लिक करें, फ़ाइल ब्राउज़र में .zip फ़ाइल पर नेविगेट करें और चुनें, और OK दबाएँ। एक्सटेंशन स्थापित हो जाएगा और विंडो में एक्सटेंशन के नाम के आगे एक चेकबॉक्स चिह्नित होगा जो आपको बताएगा कि यह स्थापित और तैयार है।
इंटरफ़ेस आपको एक्सटेंशन का उपयोग शुरू करने के लिए Ghidra को पुनरारंभ करने के लिए कहेगा। बस पुनरारंभ करें, और फिर Kaiju की अतिरिक्त सुविधाएँ इंटरैक्टिव रूप से या स्क्रिप्ट में उपयोग के लिए उपलब्ध होंगी।
कुछ कार्यक्षमता के लिए Kaiju प्लगइन्स को सक्षम करने की आवश्यकता हो सकती है। ऐसा करने के लिए, Code Browser खोलें फिर मेनू File > Configure पर जाएँ। पॉप अप होने वाली विंडो में, "CERT Kaiju" श्रेणी आइकन के नीचे Configure लिंक पर क्लिक करें। एक पॉप-अप सभी उपलब्ध सार्वजनिक रूप से जारी Kaiju प्लगइन्स प्रदर्शित करेगा। जिन प्लगइन्स को आप सक्रिय करना चाहते हैं उन्हें चेक करें, फिर OK दबाएँ। अब आपके पास इंटरैक्टिव प्लगइन सुविधाओं तक पहुँच होगी।
यदि कोई प्लगइन सक्षम होने के बाद तुरंत दिखाई नहीं देता है, तो आप Code Browser में Window मेनू के अंतर्गत प्लगइन पा सकते हैं।
भविष्य के उपकरणों के प्रायोगिक "अल्फा" संस्करण "Experimental" श्रेणी से उपलब्ध हो सकते हैं यदि आप उनका परीक्षण करना चाहते हैं। हालाँकि ये प्लगइन्स निश्चित रूप से प्रायोगिक और असमर्थित हैं और उत्पादन उपयोग के लिए अनुशंसित नहीं हैं। फिर भी हम शुरुआती प्रतिक्रिया का स्वागत करते हैं!
Kaiju जैसे Ghidra एक्सटेंशन को आपके Ghidra इंस्टॉलेशन की उपयुक्त निर्देशिका में एक्सटेंशन सामग्री को अनज़िप करके भी मैन्युअल रूप से स्थापित किया जा सकता है। अधिक जानकारी के लिए, कृपया The Ghidra Installation Guide देखें।
आप Kaiju एक्सटेंशन को सीधे स्रोत कोड से भी बना सकते हैं। शीर्ष Kaiju स्रोत निर्देशिका में शामिल INSTALL.md फ़ाइल देखें।
Kaiju के उपकरणों का उपयोग या तो इंटरैक्टिव ग्राफिकल तरीके से, या बैच कार्यों के लिए अधिक उपयुक्त "हेडलेस" मोड के माध्यम से किया जा सकता है। कुछ उपकरण उपकरण की प्रकृति के कारण केवल ग्राफिकल या हेडलेस उपयोग के लिए उपलब्ध हो सकते हैं।
Kaiju Java Swing और Ghidra की प्लगइन आर्किटेक्चर का उपयोग करके Ghidra के भीतर एक इंटरैक्टिव ग्राफिकल इंटरफ़ेस (GUI) बनाता है।
Kaiju के अधिकांश उपकरण वास्तव में Analysis प्लगइन्स हैं जो स्वचालित रूप से चलते हैं जब "Auto Analysis" विकल्प चुना जाता है, या तो डिस्सेम्बल करने के लिए एक नए निष्पादन योग्य आयात करने पर, या सीधे कोड ब्राउज़र विंडो से Analysis > Auto Analyze... चुनकर। आप Auto Analyze टूल में डिफ़ॉल्ट रूप से चयनित कई CERT Analysis प्लगइन्स देखेंगे, लेकिन आप अपनी इच्छानुसार किसी को भी सक्षम/अक्षम कर सकते हैं।
हालाँकि, विभिन्न GUI उपकरणों के काम करने से पहले Analysis उपकरणों को चलाया जाना चाहिए। कुछ कोने के मामलों में, सभी मेटाडेटा उत्पन्न होने और सही विभाजन और डिस्सेम्बली जानकारी बनाने के लिए Auto Analysis को दो बार चलाना भी सहायक हो सकता है, जो बदले में हैशिंग परिणामों को प्रभावित कर सकता है।
Analyzers Ghidra के विश्लेषण चरण के दौरान स्वचालित रूप से चलाए जाते हैं और इसमें शामिल हैं:
GUI उपकरणों में शामिल हैं:
Kaiju > GhiHorn चुनें। आप CTRL-G दबाकर भी प्लगइन लॉन्च कर सकते हैं।Window > CERT Kaiju Function Hash Viewer चुनें। हैश और अन्य डेटा की एक तालिका प्रदर्शित करने वाली एक नई विंडो दिखाई देगी। विंडो के शीर्ष पर बटन तालिका को ताज़ा कर सकते हैं या डेटा को फ़ाइल या YARA हस्ताक्षर में निर्यात कर सकते हैं। इस विंडो को अन्य प्लगइन्स के साथ उपयोग में आसानी के लिए मुख्य Ghidra CodeBrowser में भी डॉक किया जा सकता है। उपकरण का उपयोग करते समय Ghidra के Help > Contents मेनू में अधिक व्यापक उपयोग दस्तावेज़ पाया जा सकता है।Kaiju > OOAnalyzer Importer चुनें। एक साधारण संवाद पॉपअप आपसे उस JSON फ़ाइल का पता लगाने के लिए कहेगा जिसे आप आयात करना चाहते हैं। उपकरण का उपयोग करते समय Ghidra के मेनू में अधिक व्यापक उपयोग दस्तावेज़ पाया जा सकता है।Ghidra एक "हेडलेस" मोड का भी समर्थन करता है जो कुछ परिस्थितियों में इंटरैक्टिव GUI के उपयोग के बिना उपकरणों को चलाने की अनुमति देता है। इसलिए इन आदेशों का उपयोग स्क्रिप्टिंग और बड़ी संख्या में फ़ाइलों के "बैच मोड" कार्यों के लिए किया जा सकता है।
हेडलेस उपकरण बड़े पैमाने पर Ghidra की GhidraScript कार्यक्षमता पर निर्भर करते हैं।
हेडलेस उपकरणों में शामिल हैं:
सरल परिदृश्यों के लिए इन हेडलेस कमांडों को चलाने के लिए kaijuRun नामक एक सरल शेल लॉन्च स्क्रिप्ट शामिल की गई है, जैसे कि एकल निष्पादन योग्य में प्रत्येक फ़ंक्शन के फ़ंक्शन हैश आउटपुट करना। मान लें कि GHIDRA_INSTALL_DIR वेरिएबल सेट है, तो उदाहरण के लिए कोई एकल निष्पादन योग्य पर लॉन्च स्क्रिप्ट इस प्रकार चला सकता है:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun fn2hash example.exe
यह कमांड परिणामों को स्वचालित रूप से नामित फ़ाइल example.exe.Hashes.csv में आउटपुट करेगा।
kaijuRun स्क्रिप्ट के लिए बुनियादी सहायता चलाने से उपलब्ध है:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
कृपया इस मोड और kaijuRun लॉन्चर स्क्रिप्ट के उपयोग के बारे में अधिक जानकारी के लिए रिपॉजिटरी में docs/HeadlessKaiju.md फ़ाइल देखें।
अधिक व्यापक दस्तावेज़ और सहायता दो प्रारूपों में से एक में उपलब्ध है।
सभी Kaiju उपकरणों और घटकों के लिए Markdown-स्वरूपित दस्तावेज़ और सहायता के लिए docs/ निर्देशिका देखें। ये दस्तावेज़ बनाए रखना, संपादित करना और कमांड लाइन से भी पढ़ना आसान है।
वैकल्पिक रूप से, आप Ghidra के अंतर्निहित सहायता सिस्टम में समान दस्तावेज़ पा सकते हैं। इन सहायता दस्तावेज़ों तक पहुँचने के लिए, Ghidra मेनू से, Help > Contents पर जाएँ और फिर सहायता विंडो के बाईं ओर ट्री नेविगेशन से CERT Kaiju चुनें।
कृपया ध्यान दें कि Ghidra Help दस्तावेज़ docs/ निर्देशिका में Markdown फ़ाइलों के समान सामग्री है; एक इन-ट्री ग्रेडल प्लगइन के कारण, ग्रेडल बिल्ड प्रक्रिया के दौरान स्वचालित रूप से Markdown को पार्स करेगा और Ghidra HTML में निर्यात करेगा। यह और भी सरल रखरखाव की अनुमति देता है (केवल एक स्थान पर दस्तावेज़ अपडेट करें, दो नहीं) और दोनों को सिंक में रखता है।
सभी नए दस्तावेज़ को docs/ निर्देशिका में जोड़ा जाना चाहिए।
यह सॉफ़्टवेयर कार्नेगी मेलन विश्वविद्यालय में सॉफ़्टवेयर इंजीनियरिंग संस्थान द्वारा एक सरलीकृत BSD-शैली लाइसेंस के तहत लाइसेंस प्राप्त है। कृपया इस लाइसेंस के पूर्ण विवरण, साथ ही इस प्रोजेक्ट में उपयोग की गई निर्भरताओं की लाइसेंसिंग शर्तों के लिए, इस रिपॉजिटरी की रूट में LICENSE.md फ़ाइल देखें।
CERT Kaiju लोगो Cameron Spahn द्वारा बनाई गई कला पर आधारित है, जो मूल रूप से Creative Commons Attribution-Share Alike 4.0 International license की शर्तों के तहत जारी किया गया था।
Help > Contents