
أداة تحليل ومقارنة البرامج الثابتة
يمكن استخدام تحليل البرامج الثابتة لتحقيق عدة أهداف مثيرة للاهتمام. أهمها تحديد الوظائف والمكونات ونقاط الضعف الأمنية المحتملة في البرامج الثابتة في الصندوق الأسود.
تم تصميم أداة تحليل البرامج الثابتة والمقارنة (FACT) لأتمتة قدر كبير من عمل تحليل البرامج الثابتة اليدوي قدر الإمكان. تجمع FACT بين مجموعة متزايدة من التحليلات القوية لإنشاء واجهة موحدة تنقل المستخدم من عينة برامج ثابتة عشوائية إلى تحليل مكتمل. بعض الميزات الرئيسية لتحليل FACT هي أن النتائج تكون
علاوة على ذلك، تقدم FACT طرقًا متعددة للتنقل وتصور نتائج التحليل ومحتويات البرامج الثابتة لسهولة الوصول إليها. الواجهة الرئيسية لـ FACT هي واجهة ويب مبنية على HTML/JS/CSS يمكن استضافتها محليًا أو مشاركتها عبر الشبكة. بالإضافة إلى ذلك، تقدم FACT واجهة برمجة تطبيقات HTTP شبيهة بـ REST يمكن استكشافها باستخدام SwaggerUI مدمج. بعض الميزات الرئيسية لواجهة الويب هي:
بينما يتم الحفاظ على FACT كنموذج أولي بحثي، فإن المشروع يتمتع باختبار جيد، ويتضمن أساسًا من التوثيق ويقدم مجموعة كبيرة من الميزات على مستوى الإنتاج. نحن نبحث دائمًا عن الملاحظات وطلبات الميزات.
يمكن العثور على مزيد من التفاصيل وبعض لقطات الشاشة على صفحة المشروع.
تم تصميم FACT كتطبيق متعدد العمليات، كلما زادت النوى وذاكرة الوصول العشوائي، كان ذلك أفضل.
| الحد الأدنى | الموصى به |
|---|---|
| 4 نوى | 16 نواة |
| 8 جيجابايت RAM | 64 جيجابايت RAM |
| 10 جيجابايت مساحة تخزين | 10* جيجابايت مساحة تخزين |
[!NOTE] حوالي 10 جيجابايت مطلوبة لإعداد كود FACT والحاوية والملفات الثنائية. هناك حاجة إلى مساحة إضافية لتخزين الملفات غير المضغوطة ونتائج التحليل. يمكن أن يكون هذا على قسم أو محرك أقراص منفصل.
من الممكن بشكل أساسي تثبيت FACT على أي توزيعة لينكس، لكن المثبت محدود بـ
قد يظل التثبيت على التوزيعات القديمة (مثل Debian 11 "Bullseye" أو Ubuntu 20.04 "Focal") يعمل، لكنه لا يعتبر مستقرًا، نظرًا لأن هذه التوزيعات وصلت إلى نهاية عمرها الافتراضي.
يتطلب FACT Python 3.10–3.14 (يجب أن يكون الافتراضي في جميع التوزيعات المدعومة)
عملية الإعداد مؤتمتة إلى حد كبير ومغلفة في برنامج نصي واحد. ومع ذلك، يمكن تحديد بعض الميزات بشكل محدد. للحصول على دليل مفصل حول كيفية تثبيت FACT، راجع INSTALL.md.
[!IMPORTANT] لاحظ أنه على الرغم من الاستخدام المكثف للحاويات، لا يزال FACT يحتوي على العديد من التبعيات (ولا يوجد إلغاء تثبيت متوفر). إذا كنت ترغب في الحفاظ على نظامك نظيفًا، يمكنك تجربة أحد خيارات الإعداد المقدمة أدناه.
نوفر صناديق Vagrant شهرية جاهزة للاستخدام من فرعنا الرئيسي. Vagrant هي طريقة سهلة ومريحة للبدء مع FACT دون الحاجة إلى تثبيته على جهازك. فقط قم بإعداد Vagrant واستيراد الصندوق المقدم لدينا إلى VirtualBox. يمكن العثور على صناديقنا على موقع vagrantup الإلكتروني!
اطلع على كيفية البدء مع FACT و Vagrant في برنامجنا التعليمي.
هناك أيضًا نسخة معبأة في حاوية Docker، لكنها حاليًا غير مدعومة. (راجع مستودع FACT_docker لمزيد من المعلومات).
يمكنك بدء تشغيل FACT عن طريق تنفيذ البرنامج النصي start_fact.py.
يكتشف البرنامج النصي جميع المكونات المثبتة تلقائيًا.
src/start_fact.py
بعد ذلك، يمكن الوصول إلى FACT على http://localhost:5000 (افتراضي) أو https://localhost (إذا تم تثبيت FACT باستخدام nginx).
يمكنك إيقاف تشغيل النظام بالضغط على Ctrl + c أو بإرسال SIGTERM إلى البرنامج النصي start_fact.py.
[!CAUTION] FACT ليس مخصصًا للاستخدام كخدمة إنترنت عامة. واجهة الويب ليست تطبيقًا محصنًا. نحاول الحد من المشكلات الأمنية من خلال تطبيق SecDevOps لكن FACT قد لا يزال يحتوي على ثغرات أمنية. تأكد من إعادة تعيين جميع كلمات المرور في تكوين FACT إذا كنت تخطط لاستضافة FACT على شبكات غير موثوقة بالكامل.
[!TIP] يمكن العثور على المزيد من التوثيق حول كيفية استخدام FACT على صفحات الويكي الخاصة بنا.
يمكنك أيضًا إلقاء نظرة على توثيق Sphinx الخاص بنا.
يمكن أيضًا العثور على معلومات حول ماهية FACT وكيفية عملها في الشرائح الموجودة في
المجلد docs.
توفر FACT واجهة برمجة تطبيقات REST. يمكن العثور على مزيد من المعلومات على صفحة الويكي.
توفر FACT مصادقة أساسية اختيارية، وإدارة الأدوار والمستخدمين. يمكن العثور على مزيد من المعلومات على صفحة الويكي.
أسهل طريقة للمساهمة هي كتابة إضافة خاصة بك. يمكن العثور على دليل المطورين لدينا في الويكي على GitHub.
الإضافات الإضافية المتاحة حالياً:
يمكن استخدام البرنامج النصي src/firmware_import_export.py لتصدير الملفات غير المضغوطة ونتائج التحليل واستيرادها
إلى مثيل FACT آخر.
يتم تخزين البيانات كأرشيف ZIP، وهذا هو أيضًا التنسيق الذي يتوقعه البرنامج النصي أثناء الاستيراد.
لتصدير ملفات وبيانات التحليل لصور البرامج الثابتة التي تم تحليلها، قم بتشغيل
python3 firmware_import_export.py export FW_UID [FW_UID_2 ...] [-o OUTPUT_DIR]
[!NOTE] يمكن أن تشغل الأرشيفات المصدرة مساحة كبيرة على القرص. لا توجد علاقة ثابتة، لكنها قد تتجاوز حجم البرنامج الثابت الأصلي بعامل 2 - 10.
بعد ذلك، يمكنك استيراد الملفات المصدرة باستخدام
python3 firmware_import_export.py import FW.zip [FW_2.zip ...]
كنا سعداء بعرض FACT في عدد من جلسات BlackHat Arsenal.
شكرًا لـ @botlabsDev، الذي قدم في البداية Vagrantfile الذي أصبح الآن، ومع ذلك، غير مستخدم.
هذا المشروع ممول جزئيًا من قبل المكتب الاتحادي الألماني لأمن المعلومات (BSI) وآخرين.
أداة تحليل البرامج الثابتة والمقارنة (FACT)
حقوق النشر (C) 2015-2026 Fraunhofer FKIE
هذا البرنامج هو برنامج مجاني: يمكنك إعادة توزيعه و/أو تعديله بموجب شروط رخصة GNU العامة كما نشرتها مؤسسة البرمجيات الحرة، إما الإصدار 3 من الترخيص، أو (حسب اختيارك) أي إصدار لاحق. يتم توزيع هذا البرنامج على أمل أن يكون مفيدًا، ولكن دون أي ضمان؛ حتى دون الضمان الضمني للتسويق أو الملاءمة لغرض معين. راجع رخصة GNU العامة لمزيد من التفاصيل. يجب أن تكون قد تلقيت نسخة من رخصة GNU العامة مع هذا البرنامج. إذا لم يكن الأمر كذلك، راجع http://www.gnu.org/licenses/.
قد تحتوي بعض الإضافات على تراخيص مختلفة. إذا كان الأمر كذلك، فسيتم توفير ملف ترخيص في مجلد الإضافة.