
برنامج ثابت (firmware) قائم على OpenWrt وغير آمن عمداً، مخصص للتدريب العملي على أمن إنترنت الأشياء (IoT). يتضمن تحديات ثغرات مرتبطة بقائمة OWASP IoT Top 10 للتحليل الثابت والديناميكي.

مشروع IoTGoat عبارة عن برنامج ثابت (firmware) غير آمن بشكل متعمد، مبني على OpenWrt ويتم صيانته بواسطة OWASP كمنصة لتعليم مطوري البرمجيات ومحترفي الأمن اختبار الثغرات الشائعة في أجهزة إنترنت الأشياء (IoT). تستند تحديات الثغرات إلى قائمة OWASP IoT Top 10 الموضحة أدناه، بالإضافة إلى "بيض عيد الفصح" (easter eggs) من مساهمي المشروع. للحصول على قائمة تحديات الثغرات، راجع صفحة ويكي تحديات IoTGoat.
| OWASP IoT Top 10 2018 | الوصف |
|---|---|
| I1 Weak, Guessable, or Hardcoded Passwords | استخدام بيانات اعتماد يسهل اختراقها بالقوة الغاشمة، أو متاحة للعموم، أو غير قابلة للتغيير، بما في ذلك الأبواب الخلفية (backdoors) في البرنامج الثابت أو برامج العملاء التي تمنح وصولًا غير مصرح به إلى الأنظمة المنشورة. |
| I2 Insecure Network Services | خدمات شبكة غير ضرورية أو غير آمنة تعمل على الجهاز نفسه، خاصة تلك المعرّضة للإنترنت، والتي تهدد سرية المعلومات أو سلامتها/مصداقيتها أو توافرها، أو تسمح بالتحكم عن بُعد دون إذن. |
| I3 Insecure Ecosystem Interfaces | واجهات ويب أو واجهات برمجة تطبيقات خلفية (Backend API) أو سحابية أو متنقلة غير آمنة في النظام البيئي خارج الجهاز تسمح باختراق الجهاز أو مكوناته ذات الصلة. تتضمن المشكلات الشائعة نقص المصادقة/التفويض، أو تشفير مفقود أو ضعيف، ونقصًا في تصفية المدخلات والمخرجات. |
| I4 Lack of Secure Update Mechanism | غياب القدرة على تحديث الجهاز بشكل آمن. يتضمن ذلك غياب التحقق من البرنامج الثابت على الجهاز، وغياب التسليم الآمن (غير مشفّر أثناء النقل)، وغياب آليات منع التراجع (anti-rollback)، وغياب الإشعارات بالتغييرات الأمنية الناتجة عن التحديثات. |
| I5 Use of Insecure or Outdated Components | استخدام مكونات/مكتبات برمجية مهجورة أو غير آمنة قد تسمح باختراق الجهاز. يتضمن ذلك التخصيص غير الآمن لمنصات أنظمة التشغيل، واستخدام مكونات برمجية أو عتادية من جهات خارجية من سلسلة توريد مخترقة. |
| I6 Insufficient Privacy Protection | المعلومات الشخصية للمستخدم المخزنة على الجهاز أو في النظام البيئي والتي تُستخدم بطريقة غير آمنة أو غير صحيحة أو دون إذن. |
| I7 Insecure Data Transfer and Storage | نقص التشفير أو التحكم في الوصول إلى البيانات الحساسة في أي مكان داخل النظام البيئي، بما في ذلك أثناء التخزين أو النقل أو المعالجة. |
| I8 Lack of Device Management | نقص الدعم الأمني للأجهزة المنشورة في بيئة الإنتاج، بما في ذلك إدارة الأصول، وإدارة التحديثات، والإيقاف الآمن للخدمة، ومراقبة الأنظمة، وقدرات الاستجابة. |
| I9 Insecure Default Settings | أجهزة أو أنظمة تُشحن بإعدادات افتراضية غير آمنة، أو تفتقر إلى القدرة على جعل النظام أكثر أمانًا من خلال تقييد المشغّلين من تعديل الإعدادات. |
| I10 Lack of Physical Hardening | نقص إجراءات التحصين المادي، مما يسمح للمهاجمين المحتملين بالحصول على معلومات حساسة يمكن أن تساعد في هجوم عن بُعد مستقبلي أو السيطرة المحلية على الجهاز. |
توجد عدة طرق لبدء اختراق IoTGoat.
لمن يرغبون في استخراج نظام الملفات وتحليل الإعدادات والملفات الثنائية بشكل ثابت (statically)، قم بتنزيل أحدث إصدار من البرنامج الثابت المُجمّع مسبقًا من https://github.com/OWASP/IoTGoat/releases. راجع منهجية اختبار أمن البرامج الثابتة التابعة لـ OWASP للمساعدة في تحديد الثغرات.
لإجراء الاختبار الديناميكي للويب وتحليل تشغيل الثنائيات، فإن أسرع طريقة للبدء هي تنزيل أحدث "IoTGoat-x86.vmdk" (VMware) وإنشاء جهاز افتراضي مخصص باستخدام صورة قرص IoTGoat. حدد تفاصيل نظام التشغيل التالية Type: Linux و Version: Linux 2.6 / 3.x / 4.x (32-bit) وفعّل Enable PAE/NX في إعدادات الجهاز الافتراضي. تم اختبار كل من .vmdk و .vdi في أحدث إصدار من VirtualBox (أبريل 2020) على Windows 10 و Ubuntu 18.04 LTS و MacOS Mojave. راجع مشروعي OWASP دليل اختبار أمن الويب و ASVS للحصول على إرشادات إضافية حول تحديد ثغرات تطبيقات الويب.
قم بمحاكاة البرنامج الثابت باستخدام أدوات مفتوحة المصدر (مثل Firmadyne و ARM-X Framework و FAT) التي تستخدم QEMU لتشغيل IoTGoat افتراضيًا محليًا.
استخدم البرنامج الثابت IoTGoat-raspberry-pi2-sysupgrade.img لحرقه على Raspberry Pi 2 (BRCM2708 & BRCM2709).
راجع صفحة بدء الاستخدام للحصول على تفاصيل إضافية ولقطات شاشة.
يمكن لـ OpenWrt بناء العديد من منصات ولوحات CPU المختلفة. يمنح البناء من المصدر المستخدمين المرونة لحرق IoTGoat على أجهزة OpenWrt المدعومة. تأكد من توفر مساحة قرص تتراوح بين 10-15 جيجابايت مع ذاكرة وصول عشوائي (RAM) بسعة 4 جيجابايت على الأقل وتوزيعة لينكس مدعومة مثل Ubuntu 18.04. استخدم الخطوات التالية للبدء في بناء برنامج ثابت مخصص.
قم بكل شيء كمستخدم عادي، ولا تستخدم المستخدم الجذر أو sudo عند البناء!
$ git clone https://github.com/OWASP/IoTGoat.git
$ cd IoTGoat/OpenWrt/openwrt-18.06.2/
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
$ make menuconfig # select your preferred configuration for the toolchain, target system & firmware packages.
$ make # Build your firmware with make. This will download all sources, build the cross-compile toolchain and then cross-compile the Linux kernel & all chosen applications for your target system.
سيستغرق البناء الأول بعض الوقت لإكماله، وسيختلف اعتمادًا على اتصال الإنترنت المتاح لتنزيل مجموعة الأدوات (toolchain). بمجرد اكتمال البناء بنجاح، سيتم وضع البرنامج الثابت المُجمّع في الدليل التالي IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/ اعتمادًا على الهدف المحدد في menuconfig. على سبيل المثال، سيكون برنامج IoTGoat الثابت لـ Raspberry Pi 2 موجودًا في الدليل التالي IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709. تتوفر ملفات إعداد بناء IoTGoat لمنصتي x86 (.config-x86) و Raspberry Pi 2 (.config-rpi).




استخدم إعداد Docker لتشغيل IoTGoat في بيئة حاويات. راجع دليل إعداد Docker لمزيد من التفاصيل.