
firmware-analysis-toolkit v2.0.0-alpha.1
منصة أبحاث أمن البرامج الثابتة تجمع بين تحليل الثنائيات، وتتبع التلوث، والمحاكاة عبر إنترنت الأشياء، والذكاء الاصطناعي الطرفي، والأجهزة المحمولة، والروبوتات.
FAT — مجموعة أدوات تحليل البرامج الثابتة
تنزيل أحدث إصدار · سجل التغييرات · التثبيت
مجموعة أدوات تحليل البرامج الثابتة (Firmware Analysis Toolkit) هي مجموعة أدوات بحث أمني للتحقيق في أمن البرامج الثابتة لإنترنت الأشياء والذكاء الاصطناعي المادي والأجهزة المحمولة والروبوتات. وقد بُنيت بشكل أساسي من أجل تدريب "استغلال إنترنت الأشياء الهجومي" الذي تقدّمه Attify.
وقد بُنيت استنادًا إلى خبرة ميدانية عملية فعلية حول ما يهم حقًا عندما يتعلق الأمر بتحقيقات أمن البرامج الثابتة الحقيقية التي تهم.
هدف FAT ليس فقط بناء مجموعة أدوات استثنائية عالمية المستوى ومتطورة لأبحاث أمن البرامج الثابتة، بل أيضًا إعداد محترفين وممارسين يعملون في ذروة أدائهم، حيث تصبح الأداة قوة إدراكية خارقة إذا استُخدمت بطرق معينة، مع كونها سهلة بما يكفي ليستخدمها من هم جدد في هذا المجال.
تشمل بعض الميزات تصنيف البرامج الثابتة غير المعروفة، واستخراج أنظمة الملفات، ورسم خرائط الشيفرة ذات الصلة بالثقة، وتتبع التلوث، وتنسيق محاكاة QEMU.
ما يمكن لـ FAT تحليله
- الكتل والمجلدات غير المعروفة: الحاويات، والأعضاء المضغوطة، والمناطق عالية العشوائية، وإشارات MCU، وملفات البرامج الثابتة المرشحة
- صور البرامج الثابتة: الترويسات، ومغلفات التحديث، والأقسام، ومحملات الإقلاع، والفروقات بين الصور
- أنظمة ملفات Linux المستخرجة: الجرد، ونية بدء التشغيل، والثنائيات الحاملة للثقة، والمواد التشفيرية، والأدلة النصية
- ثنائيات ELF: الواردات، والصادرات، وجداول المعالجات، ومصارف الشيفرة المجردة، وفك الترجمة، وتلوث من المصدر إلى المصرف
- صور Bare-metal و MCU: جداول المتجهات، وخرائط الذاكرة، وتلميحات الأجهزة الطرفية، وصلاحية الكتابة على الفلاش، وأدلة تسليم الإقلاع
- مخرجات الذكاء الاصطناعي الطرفي: ملفات MAGIK/JZDL و TFLite و ONNX و Qualcomm DLC بالإضافة إلى بيئات الاستدلال المرئية
- تطبيقات Android: جرد APK، وخيوط الاستكشاف، والموقعية، وسلاسل القدرات، وحدود التسليم
- مستودعات المصدر: استعلامات الثوابت، وإرشادات الترقيع، والبحث عن المتغيرات القريبة
البدء السريع
نزّل حزمة ثنائية من الإصدارات، أو ابنِ أحدث إصدار منتظم باستخدام Rust 1.90 أو أحدث:
git clone --branch v2.0.1 --depth 1 https://github.com/attify/firmware-analysis-toolkit.git
cd firmware-analysis-toolkit
cargo build --release --locked
cargo install --path crates/fat_cli --locked
python3 scripts/build-runtime-data-bundle.py --output ./dist/fat-data.zip
fat data install --archive ./dist/fat-data.zip
fat doctor
على Arch Linux أو Omarchy، ابدأ بـ خطوات تثبيت Arch للحزم المطلوبة والأدوات الاختيارية.
مثبّت بضغطة واحدة للمضيفات المدعومة:
./scripts/install.sh --install-system-deps
راجع INSTALL.md لخيارات المثبّت والأدوات الاختيارية.
مرجع الأوامر السريع
- المساعدة :
fat -h - تحديد برنامج ثابت:
fat $firmwareأوfat identify --file $firmware - مشروع جديد :
fat new $firmware - استخراج نظام الملفات :
fat extract $firmware - التحليل :
fat analyze $firmware - المحاكاة :
fat emulate --project $firmware
أول تواصل مع ملف غير معروف
fat ./firmware.bin
fat inspect update --file ./firmware.bin --rootfs ./rootfs --reference ./older.bin
fat ./firmware.bin هو اختصار لـ fat identify --file ./firmware.bin.
يمنح نظرة عامة موجزة عن هوية الملف وبنيته.
أضف --details للحصول على الجداول الداعمة.
بالنسبة لصور MCU الخام، افحص التعيين، وبدء التشغيل، والمقاطعات، والعتاد:
fat inspect mcu --file ./firmware.bin
fat inspect mcu --file ./firmware.bin --details
يدعم كلا الأمرين --json للحصول على تقرير التحليل المنظم الكامل.
من الصورة إلى وقت التشغيل
خط الأنابيب من البدء السريع، من البداية إلى النهاية:
fat new ./firmware.bin
fat extract .fat-projects/firmware
fat analyze .fat-projects/firmware
fat preflight .fat-projects/firmware
fat emulate --project .fat-projects/firmware
فرز الثنائيات وتدفق البيانات
fat r2-triage --file ./usr/sbin/httpd --json
fat taint --file ./www/cgi-bin/diag.cgi --summary
fat taint-query --file ./www/cgi-bin/diag.cgi
fat taint-cross --rootfs ./rootfs
fat taint-cross --rootfs ./rootfs --source-profile ./my-target-models.yaml --state-profile ./my-target-state.yaml
تدفق بيانات سكربت Shell
fat taint --lang shell --file ./app/init/wifi.sh --summary
fat taint --lang shell --rootfs ./extracted-rootfs --json
fat taint --lang shell --rootfs ./extracted-rootfs --source-profile ./my-target-shell.yaml --severity high
الثنائيات المجردة
ابحث عن المصارف بشكل ساكن، ثم جهّز خطافات وقت التشغيل لنفس العناوين:
fat r2-triage --file ./usr/sbin/httpd --json
fat sink-discovery --file ./usr/sbin/httpd --json > sinks.json
fat handler-table --file ./usr/sbin/httpd --json > handlers.json
fat taint --file ./usr/sbin/httpd --sink-candidates sinks.json --json > taint.json
fat instrument-hooks --from-sinks sinks.json --output hooks.yaml
fat emulate --project .fat-projects/firmware --instrument hooks.yaml
مسح الأدلة على مستوى نظام الملفات
fat tree --rootfs ./rootfs --profile inventory --summary --json
fat search --rootfs ./rootfs --profile credentials -I --context 2
fat startup-map --rootfs ./rootfs --profile cloud-tls
fat crypto-census --rootfs ./rootfs
fat trust-map --rootfs ./rootfs
استعلام الثوابت المدعوم بالكود المصدري
fat invariant query \
--fixture tests/fixtures/query/source/invariant-permission \
--rule 'Every privileged override method must call enforcePermission()'
fat patch check --help
fat verify --help
الأمان
- المحاكاة تنفّذ شيفرة مورّد غير موثوقة.
- راجع SECURITY.md قبل معالجة صور غير موثوقة أو تعريض خدمة محاكاة لشبكة.
- تقع على عاتقك مسؤولية الحصول على تصريح للأهداف التي تعمل عليها.
الأدلة التفصيلية
| المستند | ما يحتويه؟ |
|---|---|
| INSTALL.md | الأدوات الخارجية وإعداد المكونات الاختيارية |
| docs/commands.md | مرجع الأوامر الكامل، مجمّعًا حسب المهمة |
| docs/capabilities.md | تصدير الرسوم البيانية، والبحث النصي، والتشفير، والذكاء الاصطناعي الطرفي، ونية بدء التشغيل، وحزم إعادة الاستضافة |
| docs/epistemics.md | كيفية قراءة مخرجات FAT: ما الذي تثبته النتائج وما لا تثبته |
| docs/architecture.md | حزم مساحة العمل ونقاط التوسعة |
| DEVELOPMENT.md | سير عمل البناء والاختبار |
| CONTRIBUTING.md | الإعداد، وقائمة فحص طلبات السحب، ودليل المساهمة |
| RELEASING.md | تسمية الإصدارات وسير عمل إصدار المشرفين |
الاستشهاد
إذا استخدمت FAT في البحث أو المنشورات أو التقارير التقنية، فيرجى الاستشهاد به باستخدام خيار Cite this repository على GitHub. أدرج إصدار FAT أو الالتزام (commit) المستخدم حتى يتمكن القراء من تحديد التنفيذ الذي تقف خلفه نتائجك. راجع CITATION.cff للحصول على بيانات الاستشهاد الوصفية.