CERT Kaiju عبارة عن مجموعة من أدوات التحليل الثنائي لـ Ghidra.
هذا هو تطبيق Ghidra/Java لبعض ميزات CERT Pharos Binary Analysis Framework، وخاصة أدوات تجزئة الوظائف وتحليل البرامج الضارة، ولكن من المتوقع أن يؤدي ذلك إلى تطوير أدوات وقدرات جديدة بمرور الوقت.
نظرًا لأن هذا جهد جديد، فإن هذا التنفيذ لا يتمتع بعد بتكافؤ كامل في الميزات مع تطبيق C++ الأصلي استنادًا إلى ROSE؛ ومع ذلك، فإن الانتقال إلى Java وGhidra قد مكّن بالفعل بعض الميزات الجديدة غير المتوفرة في الإطار الأصلي - وعلى وجه الخصوص، تحسين التعامل مع البنى غير x86. نظرًا لحدوث بعض عمليات إعادة هيكلة هامة لإطار العمل والأدوات، والانتقال إلى Java وGhidra يتيح إمكانات مختلفة عن تنفيذ C++، فقد تم اتخاذ القرار باستخدام علامة تجارية جديدة بحيث يكون هناك ارتباك أقل بين عمليات التنفيذ عند مناقشة أدوات وإمكانيات مختلفة.
هدفنا في المستقبل القريب هو الحفاظ على إطار عمل Pharos الأصلي بالإضافة إلى Kaiju، جنبًا إلى جنب، حيث يمكن لكليهما توفير ميزات وقدرات فريدة.
تحذير: كنموذج أولي، هناك العديد من المشكلات التي قد تظهر عند تقييم تجزئات الوظائف التي أنشأها هذا البرنامج الإضافي. على سبيل المثال، على عكس تطبيق Pharos، ستقوم وحدة تجزئة الوظائف في Kaiju بإنشاء تجزئة لوظائف صغيرة جدًا (على سبيل المثال، تلك التي تحتوي على تعليمة واحدة مثل RET مما يتسبب في العديد من الاصطدامات غير المقصودة). على هذا النحو، قد تختلف النتائج التحليلية بين هذا البرنامج المساعد وPharos fn2hash.
تتوفر حزم Kaiju المعدة مسبقًا. ما عليك سوى تنزيل ملف ZIP المتوافق مع إصدار Ghidra الخاص بك وتثبيته وفقًا للتعليمات الموضحة أدناه. يوصى بالتثبيت عبر واجهة Ghidra الرسومية، ولكن من الممكن أيضًا فك الضغط يدويًا في الدليل المناسب للتثبيت.
يتطلب CERT Kaiju تبعيات وقت التشغيل التالية:
يتم توفير Z3 مجمعًا مسبقًا كجزء من الحزم المعدة مسبقًا، أو يمكنك إنشاء Z3 بنفسك أو استخدام حزمة توزيعة Linux الخاصة بك.
قم بتشغيل Ghidra، ومن النافذة المفتوحة، حدد من القائمة: File > Install Extension
. انقر فوق علامة الجمع الموجودة أعلى نافذة الامتدادات، ثم انتقل إلى ملف .zip وحدده في متصفح الملفات، ثم اضغط على "موافق". سيتم تثبيت الامتداد وسيتم تحديد مربع اختيار بجوار اسم الامتداد في النافذة لإعلامك بأنه مثبت وجاهز.
ستطلب منك الواجهة إعادة تشغيل Ghidra لبدء استخدام الامتداد. ما عليك سوى إعادة التشغيل، وبعد ذلك ستكون ميزات Kaiju الإضافية متاحة للاستخدام بشكل تفاعلي أو في البرامج النصية.
قد تتطلب بعض الوظائف تمكين مكونات Kaiju الإضافية. للقيام بذلك، افتح Code Browser ثم انتقل إلى القائمة File > Configure
. في النافذة المنبثقة، انقر فوق رابط Configure
الموجود أسفل أيقونة فئة "CERT Kaiju". ستعرض النافذة المنبثقة جميع مكونات Kaiju الإضافية المتاحة للعامة. تحقق من أي مكونات إضافية ترغب في تنشيطها، ثم اضغط على "موافق". سيكون لديك الآن إمكانية الوصول إلى ميزات البرنامج المساعد التفاعلي.
إذا لم يكن المكون الإضافي مرئيًا على الفور بمجرد تمكينه، فيمكنك العثور على المكون الإضافي أسفل قائمة Window
في Code Browser.
قد تتوفر إصدارات "ألفا" التجريبية من الأدوات المستقبلية من الفئة "التجريبية" إذا كنت ترغب في اختبارها. ومع ذلك، فإن هذه المكونات الإضافية هي بالتأكيد تجريبية وغير مدعومة ولا يوصى باستخدامها في الإنتاج. نحن نرحب بالتعليقات المبكرة بالرغم من ذلك!
يمكن أيضًا تثبيت ملحقات Ghidra مثل Kaiju يدويًا عن طريق فك ضغط محتويات الامتداد في الدليل المناسب لتثبيت Ghidra الخاص بك. لمزيد من المعلومات، يرجى مراجعة دليل تثبيت Ghidra.
يمكنك أيضًا إنشاء ملحق Kaiju مباشرةً من كود المصدر. راجع ملف INSTALL.md
المضمن في دليل مصدر Kaiju العلوي.
يمكن استخدام أدوات Kaiju إما بطريقة رسومية تفاعلية، أو عبر وضع "بدون رأس" أكثر ملاءمة للوظائف المجمعة. قد تكون بعض الأدوات متاحة فقط للاستخدام الرسومي أو بدون رأس، وذلك حسب طبيعة الأداة.
يقوم Kaiju بإنشاء واجهة رسومية تفاعلية (GUI) داخل Ghidra باستخدام بنية Java Swing وGhidra الإضافية.
معظم أدوات Kaiju هي في الواقع مكونات إضافية للتحليل تعمل تلقائيًا عند تحديد خيار "التحليل التلقائي"، إما عند استيراد ملف قابل للتنفيذ جديد لتفكيكه، أو عن طريق الاختيار المباشر Analysis > Auto Analyze...
من نافذة متصفح التعليمات البرمجية. سترى العديد من المكونات الإضافية لتحليل CERT محددة افتراضيًا في أداة التحليل التلقائي، ولكن يمكنك تمكين/تعطيل أي منها حسب الرغبة.
ومع ذلك، يجب تشغيل أدوات التحليل قبل أن تعمل أدوات واجهة المستخدم الرسومية المتنوعة. في بعض الحالات، قد يكون من المفيد تشغيل التحليل التلقائي مرتين لضمان إنتاج كافة بيانات التعريف لإنشاء معلومات التقسيم والتفكيك الصحيحة، والتي بدورها يمكن أن تؤثر على نتائج التجزئة.
يتم تشغيل أجهزة التحليل تلقائيًا خلال مرحلة تحليل غيدرا وتتضمن ما يلي:
تتضمن أدوات واجهة المستخدم الرسومية ما يلي:
Kaiju > GhiHorn
للوصول إلى هذه الأداة من CodeBrowser الخاص بـ Ghidra. يمكنك أيضًا تشغيل البرنامج الإضافي بالضغط على CTRL-G
.Window > CERT Function Hash Viewer
من القائمة لبدء استخدام هذه الأداة إذا لم تكن مرئية بالفعل. ستظهر نافذة جديدة تعرض جدول التجزئات والبيانات الأخرى. يمكن للأزرار الموجودة أعلى النافذة تحديث الجدول أو تصدير البيانات إلى ملف أو توقيع YARA. يمكن أيضًا تثبيت هذه النافذة في Ghidra CodeBrowser الرئيسي لتسهيل استخدامها إلى جانب المكونات الإضافية الأخرى. يمكن العثور على المزيد من وثائق الاستخدام الشاملة في قائمة Help > Contents
الخاصة بـ Ghidra عند استخدام الأداة.Kaiju > OOAnalyzer Importer
من القائمة للبدء في استخدام هذه الأداة. سيطلب منك مربع حوار منبثق بسيط تحديد موقع ملف JSON الذي ترغب في استيراده. يمكن العثور على المزيد من وثائق الاستخدام الشاملة في قائمة Help > Contents
الخاصة بـ Ghidra عند استخدام الأداة.يدعم Ghidra أيضًا وضع "بدون رأس" مما يسمح بتشغيل الأدوات في بعض الظروف دون استخدام واجهة المستخدم الرسومية التفاعلية. وبالتالي يمكن استخدام هذه الأوامر في البرمجة النصية ومهام "الوضع الدفعي" لعدد كبير من الملفات.
تعتمد الأدوات مقطوعة الرأس إلى حد كبير على وظيفة Ghidra's GhidraScript.
تشمل الأدوات مقطوعة الرأس ما يلي:
تم تضمين برنامج نصي بسيط لإطلاق shell يسمى 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، انتقل إلى Help > Contents
ثم حدد CERT Kaiju
من شجرة التنقل على الجانب الأيسر من نافذة المساعدة.
يرجى ملاحظة أن وثائق مساعدة Ghidra هي نفس محتوى ملفات Markdown الموجودة في الدليل docs/
؛ بفضل المكوّن الإضافي داخل الشجرة، سيقوم gradle تلقائيًا بتحليل Markdown وتصديره إلى Ghidra HTML أثناء عملية الإنشاء. وهذا يسمح بإجراء صيانة أبسط (تحديث المستندات في مكان واحد فقط، وليس مكانين) ويحافظ على مزامنة الاثنين.
يجب إضافة جميع الوثائق الجديدة إلى الدليل docs/
.
تم ترخيص هذا البرنامج بموجب ترخيص مبسط على غرار BSD من قبل معهد هندسة البرمجيات في جامعة كارنيجي ميلون. الرجاء العثور على التفاصيل الكاملة لهذا الترخيص، بالإضافة إلى شروط ترخيص التبعيات المستخدمة في هذا المشروع، في ملف LICENSE.md
في جذر هذا المستودع.
يعتمد شعار CERT Kaiju على الفن الذي أنشأه Cameron Spahn، والذي تم إصداره في الأصل بموجب شروط Creative Commons Attribution-Share Alike 4.0 International License.