
أداة تحليل ثغرات ثنائية آلية تقوم بفك ترجمة الملفات التنفيذية عبر Ghidra، ومسح كود شبه-C باستخدام Semgrep، والتحقق من النتائج باستخدام GPT-3.5-Turbo لتقليل الإيجابيات الكاذبة.
أداة تحليل ثغرات ثنائية آلية ذكية
عرض توضيحي:

كاليستو هي أداة تحليل ثغرات ثنائية آلية ذكية. الغرض منها هو فك ترجمة ملف ثنائي بشكل مستقل والتنقل عبر مخرجات الكود الزائف للبحث عن ثغرات أمنية محتملة في ذلك الكود السي الزائف. يعمل مفكك الترجمة الخاص بـ Ghidra بدون واجهة رسومية على تشغيل جزء فك الترجمة والتحليل الثنائي. يتم إجراء تحليل الكود الزائف في البداية بواسطة أداة Semgrep للتحليل الثابت (SAST) ثم يتم نقلها إلى GPT-3.5-Turbo للتحقق من نتائج Semgrep، بالإضافة إلى تحديد محتمل لثغرات إضافية.
الغرض المقصود من هذه الأداة هو المساعدة في التحليل الثنائي واكتشاف الثغرات الصفرية. يهدف الإخراج إلى مساعدة الباحث في تحديد المناطق المحتملة ذات الاهتمام أو المكونات الضعيفة في الملف الثنائي، والتي يمكن متابعتها باختبارات ديناميكية للتحقق والاستغلال. بالتأكيد لن تلتقط كل شيء، لكن التحقق المزدوج مع Semgrep إلى GPT-3.5 يهدف إلى تقليل الإيجابيات الخاطئة والسماح بتحليل أعمق للبرنامج.
بالنسبة لأولئك الذين يتطلعون فقط إلى استخدام الأداة كمفكك ترجمة سريع بدون واجهة رسومية، فإن ملف output.c الذي تم إنشاؤه سيحتوي على جميع الكود الزائف المستخرج من الملف الثنائي. يمكن توصيل ذلك بأدوات SAST الخاصة بك أو تحليله يدويًا.
أدين بالشكر الكبير لـ Marco Ivaldi @0xdea على قواعده المخصصة لـ Semgrep بلغة C والتي تم إصدارها علنًا، وكذلك على فكرته في أتمتة اكتشاف الثغرات باستخدام semgrep ومخرجات الكود الزائف من مفككات الترجمة. يمكنك قراءة المزيد عن بحثه هنا: أتمتة اكتشاف الثغرات الثنائية باستخدام Ghidra و Semgrep
المتطلبات:
pip install semgreppip install -r requirements.txtconfig.txtللتشغيل:
python callisto.py -b <path_to_binary> -ai -o <path_to_output_file>
-ai => تمكين تحليل OpenAI GPT-3.5-Turbo. سيتطلب وضع مفتاح API صالح لـ OpenAI في ملف config.txt-o => تحديد ملف الإخراج، إذا كنت ترغب في حفظ المخرجات-ai و -o هما معلمتان اختياريتان-all سيقوم بتشغيل جميع الدوال من خلال تحليل OpenAI، بغض النظر عن أي نتائج من Semgrep. هذا العلم يتطلب العلم التمهيدي -aipython callisto.py -b vulnProgram.exe -ai -o results.txtpython callisto.py -b vulnProgram.exe -ai -all -o results.txtمثال على إخراج البرنامج:
