
Ghidra headless के लिए व्यापक टूलकिट
यह प्रोजेक्ट वास्तव में मजेदार था और मेरा पहला 'बड़ा' प्रोजेक्ट! बेहतर, समझदार, मजबूत समाधान अब मौजूद हैं: https://github.com/LaurieWired/GhidraMCP
फिर मिलेंगे, स्पेस-काउबॉय
यह Ghidra टूलकिट उपकरणों का एक व्यापक सूट है जिसे Ghidra को हेडलेस मोड में चलाने से जुड़े विभिन्न कार्यों को सुव्यवस्थित और स्वचालित करने के लिए डिज़ाइन किया गया है। यह टूलकिट स्क्रिप्ट्स की एक विस्तृत श्रृंखला प्रदान करता है जिन्हें Ghidra के अंदर और साथ-साथ दोनों जगह निष्पादित किया जा सकता है, जिससे उपयोगकर्ता विश्लेषित कोडबेस पर Vulnerability Hunting, ChatGPT के साथ Pseudo-code Commenting और Data Visualization के साथ Reporting जैसे कार्य कर सकते हैं। यह उपयोगकर्ता को अपनी स्वयं की स्क्रिप्ट लोड करने और सहेजने और स्क्रिप्ट के अंतर्निहित API के साथ इंटरैक्ट करने की अनुमति देता है।
हेडलेस मोड ऑटोमेशन: टूलकिट उपयोगकर्ताओं को Ghidra को हेडलेस मोड में सहजता से लॉन्च और चलाने में सक्षम बनाता है, जिससे कोड विश्लेषण कार्यों का स्वचालित और बैच प्रोसेसिंग संभव होता है।
स्क्रिप्ट रिपॉजिटरी/प्रबंधन: टूलकिट में पूर्व-निर्मित स्क्रिप्ट्स का एक रिपॉजिटरी शामिल है जिन्हें Ghidra के भीतर निष्पादित किया जा सकता है। ये स्क्रिप्ट विभिन्न प्रकार की कार्यक्षमताओं को कवर करती हैं, जो उपयोगकर्ताओं को विविध विश्लेषण और हेरफेर कार्य करने में सक्षम बनाती हैं। यह उपयोगकर्ताओं को अपनी स्वयं की स्क्रिप्ट लोड और सहेजने की अनुमति देता है, जो उनकी विशिष्ट विश्लेषण आवश्यकताओं के लिए लचीलापन और अनुकूलन विकल्प प्रदान करता है। उपयोगकर्ता आसानी से अपने स्क्रिप्ट संग्रह का प्रबंधन और व्यवस्थित कर सकते हैं।
लचीले इनपुट विकल्प: उपयोगकर्ता टूलकिट का उपयोग व्यक्तिगत फ़ाइलों या एकाधिक फ़ाइलों वाले संपूर्ण फ़ोल्डरों का विश्लेषण करने के लिए कर सकते हैं। यह लचीलापन छोटे और बड़े दोनों प्रकार के कोडबेस का कुशल विश्लेषण सक्षम बनाता है।
इस प्रोजेक्ट का उपयोग करने से पहले, सुनिश्चित करें कि आपके पास निम्नलिखित सॉफ़्टवेयर स्थापित हैं:
pip install sekiryu का उपयोग करें।स्क्रिप्ट का उपयोग करने के लिए, आप इसे उन विकल्पों के साथ एक बाइनरी के विरुद्ध चला सकते हैं जिन्हें आप निष्पादित करना चाहते हैं।
sekiryu [-F FILE][OPTIONS]कृपया ध्यान दें कि Ghidra (या किसी अन्य उत्पाद) के साथ बाइनरी विश्लेषण करना अपेक्षाकृत धीमी प्रक्रिया है। इस प्रकार, होस्ट के प्रदर्शन के आधार पर बाइनरी विश्लेषण में कई मिनट लगने की उम्मीद करें। यदि आप Sekiryu को बहुत बड़े एप्लिकेशन या बड़ी संख्या में बाइनरी फ़ाइलों के विरुद्ध चलाते हैं, तो प्रतीक्षा करने के लिए तैयार रहें।
server.py मूल रूप से स्क्रिप्ट को Ghidra और होस्ट सिस्टम के साथ एक दूसरे के साथ इंटरैक्ट करने की अनुमति देने के लिए बनाया गया है।
एक उपयोगकर्ता आसानी से अपनी स्वयं की स्क्रिप्ट विकसित कर सकता है, इसे स्क्रिप्ट फ़ोल्डर में लोड और सहेज सकता है और API के ज्ञात कार्यों का उपयोग करके Ghidra के साथ इंटरैक्ट कर सकता है।
इसका उपयोग करने के लिए उपयोगकर्ता को अपनी स्क्रिप्ट में xmlrpc आयात करना होगा और फ़ंक्शन को कॉल करना होगा जैसे: proxy.send_data
स्क्रिप्ट फ़ोल्डर /modules/scripts/ में सहेजी जाती हैं, आप बस अपनी स्क्रिप्ट वहां कॉपी कर सकते हैं।
ghidra_pilot.py फ़ाइल में आप निम्नलिखित फ़ंक्शन पा सकते हैं जो हेडलेस ghidra स्क्रिप्ट चलाने के लिए जिम्मेदार है:
def exec_headless(file, script):
"""
Execute the headless analysis of ghidra
"""
path = ghidra_path + 'analyzeHeadless'
# Setting variables
tmp_folder = "/tmp/out"
os.mkdir(tmp_folder)
cmd = ' ' + tmp_folder + ' TMP_DIR -import'+ ' '+ file + ' '+ "-postscript "+ script +" -deleteProject"
# Running ghidra with specified file and script
try:
p = subprocess.run([str(path + cmd)], shell=True, capture_output=True)
os.rmdir(tmp_folder)
except KeyError as e:
print(e)
os.rmdir(tmp_folder)
उपयोग काफी सीधा है, आप अपनी स्वयं की स्क्रिप्ट बना सकते हैं और फिर ghidra_pilot.py में एक फ़ंक्शन जोड़ सकते हैं जैसे:
def yourfunction(file):
try:
# Setting script
script = "modules/scripts/your_script.py"
# Start the exec_headless function in a new thread
thread = threading.Thread(target=exec_headless, args=(file, script))
thread.start()
thread.join()
except Exception as e:
print(str(e))
cli.py फ़ाइल कमांड-लाइन-इंटरफ़ेस के लिए जिम्मेदार है और आपको इस तरह से तर्क और संबंधित कमांड जोड़ने की अनुमति देता है:
analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="Your Help Message", action="store_true")
xmlrpc.server मॉड्यूल दुर्भावनापूर्ण रूप से निर्मित डेटा के खिलाफ सुरक्षित नहीं है। यदि आपको अविश्वसनीय या
अप्रमाणित डेटा को पार्स करने की आवश्यकता है, तो XML कमजोरियां देखें।
Bushido Security के बारे में अधिक जानकारी के लिए, कृपया हमारी वेबसाइट पर जाएँ: https://www.bushido-sec.com/।