____ __ __ _ _
| _ __ _ _ __ ___ _ __ | / | __ _ ___| |__ ___| |_ ___ ________
| |_) / _` | '_ / _ '__| | |/| |/ _` |/ __| '_ / _ __/ _ /_______/
| __/ (_| | |_)| __/ | | | | | (_| | (__| | | | __/ || __/ _______
|_| __,_| .__/___|_| |_| |_|__,_|___|_| |_|___|_____| /_______/
|_| @==|;;;;;;>
Paper Machete (PM) ينظم النينجا الثنائية و grakn.ai للمساعدة في التحليل الثنائي الثابت لغرض العثور على الأخطاء في البرمجيات. PM يعزز Ninja Mlil SSA الثنائي لاستخراج المعنى الدلالي حول التعليمات الفردية ، والعمليات ، وحالة التسجيل/المتغير ، وتدفق التحكم الكلي.
PM يقوم بترحيل هذه البيانات إلى Grakn - وهو رسم بياني للمعرفة يمنحنا القدرة على تحديد الأنطولوجيا الخاصة بالمجال للبيانات وكتابة قواعد الاستدلال القوية لتكوين علاقات بين البيانات التي لا نريد (أو لا نستطيع) تخزينها بشكل صريح. هيه ، ما مدى أنيقة هذا؟
تم إصدار هذا المشروع بالتزامن مع نقاش DerbyCon 2017 بعنوان "مساعدة التحليل الثابت: اكتشاف نقاط الضعف في أهداف ثنائية من خلال استنتاجات الرسم البياني المعرفة." يمكنك مشاهدة هذا الحديث هنا.
تم تطوير النموذج الأولي للورق Machete و CodeBase العامة من قبل باحثين الأمن في معهد Battelle Memorial. مع نضوج هذا المشروع ، نأمل أن تجده مفيدًا في بحثك الخاص وتفكر في المساهمة في المشروع.
من السهل العمل مع جناح BNIL من ILS ، والمساءلة القابلة للقراءة للإنسان. في أي وقت ، يمكننا أن نقرر الاستفادة من المستويات الأخرى وأشكال IL مع القليل من الجهد التنموي من جانبنا. عندما تضيف إلى ذلك القدرة على رفع بنيات متعددة وكتابة المصاعد المخصصين ، ليس لدينا سبب وجيه لعدم استخدام BNIL.
من السهل تعلم لغة استعلام Grakn (GRAQL) ، وهو أمر مهم للغاية في المراحل المبكرة من هذا البحث بينما لا نزال نطلب من الاستعلامات اليدوية لتصميم أنماط الباحثين الذين يبحثون عنه عند إجراء تحليل ثابت.
تتيح لنا القدرة على كتابة الأنطولوجيا الخاصة بمجالنا تجربة أفكار استعلام جديدة بسرعة وجعل استفساراتنا أقل تعقيدًا. عندما نواجه قضية نفكر فيها "GEE ، إذا تمكنت للتو من الوصول إلى العلاقة بين ..." يمكننا تعديل قواعد الأنطولوجيا والاستدلال للحصول على هذه المعلومات.
على الرغم من أن اللعبة النهائية لـ PM هي القضاء على الحاجة إلى الاستعلامات المكتوبة على الإنسان ، فإن الحقيقة هي أننا نبدأ من Square One. وهو ما يعني أن الكثير من الاستعلامات اليدوية لتصميم أنماط الباحثين في الضعف البشري يبحثون عنه عند صيد الأخطاء.
يتطلب Paper Machete Binaryninja v1.1 و Grakn V1.4.2 و Grakn Python Driver و Java Jre
لقد قمنا بتضمين بعض الاستفسارات الأساسية لبدءك إذا كنت ترغب في اللعب مع PM. كما يمكنك أن تتخيل ، لا يوجد استعلام "Silver Bullet" الذي سيجد جميع مظاهر فئة الثغرة الأمنية المحددة. لهذا السبب ، قمنا بتضمين إصدارات لكل استعلام CWE. أثناء إضافة طرق جديدة للعثور على نفس CWE ، سنضيف نصوصًا مع زيادة أرقام الإصدار للتمييز.
cwe_120_v1.py - اختبارات لاستخدام وظيفة غير آمنة "GET ()" (CWE -120)
cwe_121_v1.py - اختبارات للاشتعلات العازلة (CWE -121)
cwe_129_v1.py - اختبارات لفحوصات الحدود المفقودة (CWE -129)
cwe_134_v1.py - اختبارات لنقاط الضعف في سلسلة التنسيق (CWE -134)
cwe_788_v1.py - اختبارات للحدود المفقودة تحقق من فهارس الصفيف (CWE -788)
للاستخدام الأساسي ، قم بتشغيل البرنامج النصي paper_machete.py واتبع المطالبات. للاستخدام المتقدم ، يرجى قراءة الويكي.
عادةً ما تبدأ بالخيار [1] وتعمل في طريقك إلى الخيار [3] . إذا واجهت أي مشكلات مع Grakn Use Option [4] لإعادة ضبط Grakn على حالة نظيفة ومحاولة مرة أخرى.
... banner ...
[1] Analyze a binary file
[2] Migrate a JSON file into Grakn
[3] Run all CWE queries
[4] Clean and restart Grakn
[5] Quit
الخيار [1] يسرد جميع الملفات القابلة للتنفيذ في دليل /analysis . لذا ضع أي تنفيذيات تريد تحليلها في /analysis . سيقوم هذا الخيار بتشغيل pmanalyze.py وإنشاء ملف JSON في دليل /analysis .
بمجرد تحليل الملفات باستخدام [1] وإنتاج ملفات JSON الناتجة ، ستبدو كخيار في الخيار [2] . سيؤدي تحديد ملف JSON في الخيار [2] إلى ترحيل البيانات إلى Grakn.
الآن بعد أن حصلت على بيانات في Grakn ، يمكنك استخدام الخيار [3] . سيؤدي ذلك إلى بدء جميع البرامج النصية في /queries ضد المفاتيح التي تختارها. إذا كتبت أنماط الاستعلام الخاصة بك ، فما عليك سوى رميها في /queries وسيقوم الخيار [3] بتشغيلها أيضًا.