
CERT Kaiju هي إضافة إطار تحليل ثنائي لمجموعة أدوات هندسة عكسية البرمجيات Ghidra. هذا المستودع هو "مرآة" -- يرجى تقديم التذاكر، تقارير الأخطاء، أو طلبات السحب في المستودع الأصلي في @CERTCC: https://github.com/certcc/kaiju
CERT Kaiju هي مجموعة من أدوات تحليل البرامج الثنائية لـ Ghidra.
هذا تطبيق بلغة Java لـ Ghidra لبعض ميزات إطار عمل CERT Pharos لتحليل البرامج الثنائية، خاصة أدوات تجزئة الدوال وتحليل البرامج الضارة، ولكن من المتوقع أن تتوسع بإضافة أدوات وقدرات جديدة بمرور الوقت.
نظرًا لأن هذا جهد جديد، فإن هذا التطبيق لا يتمتع بعد بالتماثل الكامل في الميزات مع التطبيق الأصلي بلغة C++ القائم على ROSE؛ ومع ذلك، فإن الانتقال إلى Java و Ghidra قد مكّن بالفعل من بعض الميزات الجديدة غير المتاحة في الإطار الأصلي — ولا سيما تحسين المعالجة لمعماريات غير x86. نظرًا لإعادة هيكلة كبيرة للإطار والأدوات، والانتقال إلى Java و Ghidra الذي يتيح قدرات مختلفة عن تطبيق C++، تم اتخاذ القرار باستخدام علامة تجارية جديدة بحيث يكون هناك ارتباك أقل بين التطبيقات عند مناقشة الأدوات والقدرات المختلفة.
نعتزم في المستقبل القريب الحفاظ على كل من إطار Pharos الأصلي وكذلك Kaiju، جنبًا إلى جنب، حيث يمكن لكل منهما تقديم ميزات وقدرات فريدة.
تنبيه: نظرًا لأن هذا نموذج أولي، فقد تظهر العديد من المشكلات عند تقييم تجزئات الدوال التي تم إنشاؤها بواسطة هذه الإضافة. على سبيل المثال، على عكس تطبيق Pharos، ستقوم وحدة تجزئة الدوال في Kaiju بإنشاء تجزئات للدوال الصغيرة جدًا (مثل تلك التي تحتوي على تعليمة واحدة مثل RET مما يسبب عددًا أكبر من التصادمات غير المقصودة). وبالتالي، قد تختلف النتائج التحليلية بين هذه الإضافة و Pharos fn2hash.
حزم Kaiju المجمعة مسبقًا متاحة. ما عليك سوى تنزيل الملف المضغوط المطابق لإصدار Ghidra الخاص بك وتثبيته وفقًا للإرشادات أدناه. يُوصى بالتثبيت عبر الواجهة الرسومية لـ Ghidra، ولكن يمكن أيضًا فك الضغط يدويًا في الدليل المناسب للتثبيت.
يتطلب CERT Kaiju التبعيات التالية في وقت التشغيل:
يتم توفير Z3 مجمّعًا مسبقًا كجزء من الحزم المجمعة مسبقًا، أو يمكنك بناء Z3 بنفسك أو استخدام حزمة توزيعة Linux الخاصة بك.
قم بتشغيل Ghidra، ومن النافذة الافتتاحية، اختر من القائمة:
File > Install Extension. انقر على علامة الجمع في أعلى نافذة
الإضافات، وانتقل إلى ملف .zip في مستعرض الملفات وحدده ثم اضغط OK.
سيتم تثبيت الإضافة وسيتم وضع علامة اختيار بجانب اسم الإضافة
في النافذة لإعلامك بأنها مثبتة وجاهزة.
سيطلب منك الواجهة إعادة تشغيل Ghidra لبدء استخدام الإضافة. ما عليك سوى إعادة التشغيل، وستكون ميزات Kaiju الإضافية متاحة للاستخدام بشكل تفاعلي أو في النصوص البرمجية.
قد تتطلب بعض الوظائف تمكين إضافات Kaiju. للقيام بذلك،
افتح Code Browser ثم انتقل إلى القائمة File > Configure.
في النافذة التي تظهر، انقر على رابط Configure أسفل
أيقونة فئة "CERT Kaiju". ستظهر نافذة منبثقة تعرض جميع
إضافات Kaiju المتاحة للجمهور. حدد أي إضافات ترغب في
تفعيلها، ثم اضغط OK. ستتمكن الآن من الوصول إلى
ميزات الإضافة التفاعلية.
إذا لم تكن الإضافة مرئية فور تمكينها، يمكنك العثور على
الإضافة ضمن قائمة Window في Code Browser.
قد تكون إصدارات "ألفا" التجريبية من الأدوات المستقبلية متاحة من فئة "Experimental" إذا كنت ترغب في اختبارها. لكن هذه الإضافات هي بالتأكيد تجريبية وغير مدعومة ولا يُوصى بها لاستخدام الإنتاج. ومع ذلك، نرحب بالملاحظات المبكرة!
يمكن أيضًا تثبيت إضافات Ghidra مثل Kaiju يدويًا عن طريق فك محتويات الإضافة في الدليل المناسب لتثبيت Ghidra الخاص بك. لمزيد من المعلومات، يرجى الاطلاع على دليل تثبيت Ghidra.
يمكنك أيضًا بناء إضافة Kaiju مباشرة من الكود المصدري.
راجع ملف INSTALL.md الموجود في دليل المصدر العلوي لـ Kaiju.
يمكن استخدام أدوات Kaiju إما بطريقة رسومية تفاعلية، أو عبر وضع "بدون واجهة" (headless) المناسب للمهام الدفعية. قد تكون بعض الأدوات متاحة فقط للاستخدام الرسومي أو بدون واجهة، حسب طبيعة الأداة.
يقوم Kaiju بإنشاء واجهة رسومية تفاعلية (GUI) داخل Ghidra باستخدام Java Swing وهندسة الإضافات في Ghidra.
معظم أدوات Kaiju هي في الواقع إضافات تحليلية تعمل تلقائيًا
عند اختيار خيار "Auto Analysis"، سواء عند استيراد
ملف تنفيذي جديد لفك التجميع، أو باختيار
Analysis > Auto Analyze... مباشرة من نافذة Code Browser. سترى
العديد من إضافات CERT التحليلية محددة افتراضيًا في أداة Auto Analyze،
ولكن يمكنك تمكين/تعطيل أي منها حسب الرغبة.
ومع ذلك، يجب تشغيل أدوات التحليل قبل أن تعمل أدوات الواجهة الرسومية المختلفة. في بعض الحالات النادرة، قد يكون من المفيد تشغيل Auto Analysis مرتين لضمان إنتاج جميع البيانات الوصفية اللازمة لإنشاء معلومات التقسيم وفك التجميع الصحيحة، والتي بدورها يمكن أن تؤثر على نتائج التجزئة.
يتم تشغيل المحللات تلقائيًا أثناء مرحلة التحليل في Ghidra وتشمل:
تشمل أدوات الواجهة الرسومية:
Kaiju > GhiHorn للوصول إلى هذه الأداة من CodeBrowser في Ghidra.
يمكنك أيضًا تشغيل الإضافة بالضغط على CTRL-G.Window > CERT Kaiju Function Hash Viewer من القائمة للبدء
مع هذه الأداة إذا لم تكن مرئية بالفعل. ستظهر نافذة جديدة
تعرض جدولاً من التجزئات والبيانات الأخرى. الأزرار الموجودة في أعلى
النافذة يمكنها تحديث الجدول أو تصدير البيانات إلى ملف أو
توقيع YARA. يمكن أيضًا إرساء هذه النافذة داخل CodeBrowser الرئيسي
لـ Ghidra لسهولة الاستخدام جنبًا إلى جنب مع الإضافات الأخرى.
يمكن العثور على وثائق استخدام أكثر شمولاً في
قائمة Help > Contents في Ghidra عند استخدام الأداة.Kaiju > OOAnalyzer Importer من القائمة للبدء
مع هذه الأداة. سيطلب منك مربع حوار بسيط
تحديد ملف JSON الذي ترغب في استيراده.
يمكن العثور على وثائق استخدام أكثر شمولاً في
قائمة Help > Contents في Ghidra عند استخدام الأداة.يدعم Ghidra أيضًا وضع "بدون واجهة" مما يسمح بتشغيل الأدوات في بعض الحالات دون استخدام الواجهة الرسومية التفاعلية. لذلك يمكن استخدام هذه الأوامر لأغراض البرمجة النصية ووظائف "الوضع الدفعي" لعدد كبير من الملفات.
تعتمد أدوات وضع عدم الواجهة بشكل كبير على وظيفة GhidraScript في Ghidra.
تشمل أدوات وضع عدم الواجهة:
تم تضمين نص تشغيل بسيط باسم 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
يرجى الاطلاع على ملف docs/HeadlessKaiju.md في المستودع
لمزيد من المعلومات حول استخدام هذا الوضع
ونص التشغيل kaijuRun.
المزيد من الوثائق والمساعدة الشاملة متاحة، بأحد تنسيقين.
انظر إلى دليل docs/ للحصول على وثائق منسقة بـ Markdown
ومساعدة لجميع أدوات ومكونات Kaiju. هذه المستندات
سهلة الصيانة والتحرير والقراءة حتى من سطر الأوامر.
بدلاً من ذلك، يمكنك العثور على نفس الوثائق في نظام المساعدة
المدمج في Ghidra. للوصول إلى مستندات المساعدة هذه،
من قائمة Ghidra، اذهب إلى Help > Contents
ثم اختر CERT Kaiju من شجرة التنقل على
الجانب الأيسر من نافذة المساعدة.
يرجى ملاحظة أن وثائق المساعدة في Ghidra هي نفس المحتوى
تمامًا مثل ملفات Markdown في دليل docs/؛
بفضل إضافة gradle داخل الشجرة، سيقوم gradle تلقائيًا
بتحليل Markdown وتصديره إلى HTML لـ Ghidra أثناء عملية
البناء. وهذا يسمح بصيانة أبسط (تحديث الوثائق في
مكان واحد فقط، وليس اثنين) ويحافظ على المزامنة بينهما.
يجب إضافة جميع الوثائق الجديدة إلى دليل docs/.
هذا البرنامج مرخص بموجب ترخيص مبسط من نوع BSD
من قبل معهد هندسة البرمجيات في جامعة كارنيجي ميلون.
يرجى العثور على التفاصيل الكاملة لهذا الترخيص، بالإضافة إلى شروط الترخيص
للتبعيات المستخدمة في هذا المشروع، في ملف LICENSE.md
في جذر هذا المستودع.
شعار CERT Kaiju مبني على عمل فني من إنشاء كاميرون سبان، تم إصداره أصلاً بموجب شروط رخصة المشاع الإبداعي نسبة المصنف - المشاركة بالمثل 4.0 الدولية.