
مجموعة أدوات شاملة لـ Ghidra headless.
كان هذا المشروع ممتعًا حقًا وكان أول مشروع "كبير" لي! توجد الآن حلول أفضل وأذكى وأقوى: https://github.com/LaurieWired/GhidraMCP
أراك يا راعي الفضاء
هذه المجموعة من أدوات Ghidra هي مجموعة شاملة مصممة لتبسيط وأتمتة المهام المختلفة المرتبطة بتشغيل Ghidra في الوضع غير الرسومي (Headless mode). توفر هذه المجموعة نطاقًا واسعًا من السكريبتات التي يمكن تنفيذها داخل Ghidra وبجانبه، مما يتيح للمستخدمين أداء مهام مثل صيد الثغرات، والتعليق على الكود الزائف باستخدام ChatGPT، وإعداد التقارير مع التصور البياني لقاعدة الكود التي تم تحليلها. كما تسمح للمستخدم بتحميل وحفظ السكريبتات الخاصة به والتفاعل مع واجهة البرمجة المدمجة (API) للسكريبت.
أتمتة الوضع غير الرسومي: تمكن المجموعة المستخدمين من تشغيل Ghidra في الوضع غير الرسومي بسلاسة، مما يسمح بالمعالجة الآلية والدفعية لمهام تحليل الكود.
مستودع/إدارة السكريبتات: تتضمن المجموعة مستودعًا للسكريبتات الجاهزة التي يمكن تنفيذها داخل Ghidra. تغطي هذه السكريبتات مجموعة متنوعة من الوظائف، مما يمكّن المستخدمين من إجراء تحليل ومهام معالجة متنوعة. تسمح للمستخدمين بتحميل وحفظ السكريبتات الخاصة بهم، مما يوفر مرونة وخيارات تخصيص لاحتياجات التحليل الخاصة بهم. يمكن للمستخدمين إدارة وتنظيم مجموعة سكريبتاتهم بسهولة.
خيارات إدخال مرنة: يمكن للمستخدمين استخدام المجموعة لتحليل ملفات فردية أو مجلدات كاملة تحتوي على ملفات متعددة. تتيح هذه المرونة تحليلًا فعالًا لقواعد الكود صغيرة الحجم وكبيرة الحجم على حد سواء.
قبل استخدام هذا المشروع، تأكد من تثبيت البرامج التالية:
pip install sekiryu.لاستخدام السكريبت، يمكنك ببساطة تشغيله ضد ملف ثنائي مع الخيارات التي ترغب في تنفيذها.
sekiryu [-F FILE][OPTIONS]يرجى ملاحظة أن إجراء تحليل ثنائي باستخدام Ghidra (أو أي منتج آخر) هو عملية بطيئة نسبيًا. وبالتالي، توقع أن يستغرق التحليل الثنائي عدة دقائق اعتمادًا على أداء المضيف. إذا قمت بتشغيل Sekiryu ضد تطبيق كبير جدًا أو كمية كبيرة من الملفات الثنائية، فكن مستعدًا للانتظار
تم بناء "server.py" بشكل أساسي للسماح للسكريبتات بالتفاعل مع Ghidra ومع بعضها البعض ومع النظام المضيف.
يمكن للمستخدم بسهولة تطوير السكريبت الخاص به، وتحميله وحفظه في مجلد السكريبتات، واستخدام الوظائف المعروفة
لواجهة البرمجة للتفاعل مع 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/.