
IoTGoat هو برنامج ثابت غير آمن عمدًا مبني على OpenWrt.

مشروع IoTGoat هو برنامج ثابت (firmware) غير آمن عن قصد مبني على OpenWrt ويتم صيانته بواسطة OWASP لتعليم المستخدمين كيفية اختبار أكثر الثغرات شيوعًا الموجودة في أجهزة إنترنت الأشياء. تعتمد تحديات الثغرات على قائمة OWASP IoT Top 10 المذكورة أدناه، بالإضافة إلى "easter eggs" من المساهمين في المشروع. للحصول على قائمة تحديات الثغرات، راجع صفحة ويكي تحديات IoTGoat.
| OWASP IoT Top 10 2018 | الوصف |
|---|---|
| I1 كلمات مرور ضعيفة أو قابلة للتخمين أو مشفرة بشكل ثابت | استخدام بيانات اعتماد سهلة الاختراق بالقوة الغاشمة، أو متاحة للجمهور، أو غير قابلة للتغيير، بما في ذلك الأبواب الخلفية في البرامج الثابتة أو برامج العميل التي تمنح وصولاً غير مصرح به إلى الأنظمة المنشورة. |
| I2 خدمات شبكة غير آمنة | خدمات شبكة غير ضرورية أو غير آمنة تعمل على الجهاز نفسه، وخاصة تلك المكشوفة للإنترنت، والتي تخل بسرية المعلومات أو سلامتها/أصالتها أو توفرها، أو تسمح بالتحكم عن بعد غير المصرح به. |
| I3 واجهات نظام بيئي غير آمنة | واجهات ويب غير آمنة، أو واجهات برمجة تطبيقات خلفية، أو سحابية، أو محمولة في النظام البيئي خارج الجهاز تسمح باختراق الجهاز أو مكوناته ذات الصلة. تتضمن المشاكل الشائعة نقص المصادقة/التفويض، ونقص أو ضعف التشفير، ونقص تصفية المدخلات والمخرجات. |
| I4 نقص آلية التحديث الآمن | عدم القدرة على تحديث الجهاز بشكل آمن. يتضمن ذلك عدم التحقق من صحة البرامج الثابتة على الجهاز، وعدم التسليم الآمن (غير مشفر أثناء النقل)، وعدم وجود آليات لمنع التراجع، وعدم وجود إشعارات بالتغييرات الأمنية بسبب التحديثات. |
| I5 استخدام مكونات غير آمنة أو قديمة | استخدام مكونات/مكتبات برمجية مهملة أو غير آمنة يمكن أن تسمح باختراق الجهاز. يتضمن ذلك التخصيص غير الآمن لمنصات أنظمة التشغيل، واستخدام مكونات برمجية أو أجهزة من طرف ثالث من سلسلة توريد مخترقة. |
| I6 عدم كفاية حماية الخصوصية | المعلومات الشخصية للمستخدم المخزنة على الجهاز أو في النظام البيئي التي تُستخدم بطريقة غير آمنة أو غير صحيحة أو بدون إذن. |
| I7 نقل وتخزين بيانات غير آمن | نقص التشفير أو التحكم في الوصول للبيانات الحساسة في أي مكان داخل النظام البيئي، بما في ذلك أثناء التخزين أو النقل أو المعالجة. |
| I8 نقص إدارة الأجهزة | نقص الدعم الأمني على الأجهزة المنشورة في الإنتاج، بما في ذلك إدارة الأصول، وإدارة التحديثات، وإيقاف التشغيل الآمن، ومراقبة الأنظمة، وقدرات الاستجابة. |
| I9 إعدادات افتراضية غير آمنة | الأجهزة أو الأنظمة التي تُشحن بإعدادات افتراضية غير آمنة أو تفتقر إلى القدرة على جعل النظام أكثر أمانًا عن طريق تقييد المشغلين من تعديل التكوينات. |
| I10 نقص التعزيز المادي | نقص إجراءات التعزيز المادي، مما يسمح للمهاجمين المحتملين بالحصول على معلومات حساسة يمكن أن تساعد في هجوم عن بعد مستقبلي أو السيطرة المحلية على الجهاز. |
توجد عدة طرق لبدء اختراق IoTGoat.
لمن يرغب في استخراج نظام الملفات، وتحليل التكوينات والملفات الثنائية بشكل ثابت، قم بتنزيل أحدث إصدار من البرامج الثابتة المجمعة مسبقًا من https://github.com/scriptingxss/IoTGoat/releases. راجع منهجية اختبار أمان البرامج الثابتة الخاصة بـ OWASP للمساعدة في تحديد الثغرات.
لاختبار الويب الديناميكي وتحليل وقت تشغيل الثنائيات، أسرع طريقة للبدء هي تنزيل أحدث "IoTGoat-x86.vmdk" (VMware) وإنشاء جهاز افتراضي مخصص باستخدام صورة قرص IoTGoat. راجع مشاريع دليل اختبار أمان الويب و ASVS الخاصة بـ OWASP للحصول على إرشادات إضافية حول تحديد ثغرات تطبيقات الويب.
محاكاة البرامج الثابتة باستخدام أدوات مفتوحة المصدر (مثل Firmadyne و FAT) التي تستخدم QEMU لافتراضية IoTGoat محليًا.
استخدم البرنامج الثابت IoTGoat-raspberry-pi2-sysupgrade.img لحرقه على Raspberry Pi 2 (BRCM2708 و BRCM2709).
يمكن لـ OpenWrt بناء العديد من منصات وحدات المعالجة المركزية واللوحات المختلفة. البناء من المصدر يمنح المستخدمين المرونة لحرق IoTGoat على أجهزة OpenWrt المدعومة. تأكد من توفر مساحة قرص تتراوح بين 10-15 جيجابايت مع 4 جيجابايت على الأقل من ذاكرة الوصول العشوائي و توزيعة لينكس مدعومة مثل Ubuntu 18.04. اتبع الخطوات التالية للبدء في بناء برامج ثابتة مخصصة.
قم بكل شيء كمستخدم عادي، لا تستخدم المستخدم الجذر أو sudo عند البناء!
$ git clone https://github.com/scriptingxss/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.
سيستغرق البناء الأول بعض الوقت لإكماله وسيختلف بناءً على اتصال الإنترنت المتاح لتنزيل سلسلة الأدوات. بمجرد اكتمال البناء بنجاح، سيتم وضع البرامج الثابتة المترجمة في الدليل التالي 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).