FAT هي مجموعة أدوات تم تصميمها من أجل مساعدة الباحثين الأمن على تحليل وتحديد نقاط الضعف في برامج إنترنت الأشياء والبرامج الثابتة للأجهزة المدمجة. ويستخدم هذا أيضًا في تدريب " استغلال إنترنت الأشياء الهجومي " الذي أجريته.
ملحوظة:
اعتبارًا من الآن ، إنه ببساطة برنامج نصي لأتمتة Firmadyne وهو أداة تستخدم لمضاهاة البرامج الثابتة. في حالة حدوث أي مشكلات في المحاكاة الفعلية ، يرجى نشر مشكلاتك في قضايا Firmadyne.
في حال تواجه مشكلات ، يمكنك تجربة AttifyOS التي لديها مجموعة أدوات تحليل البرامج الثابتة وغيرها من الأدوات المثبتة مسبقًا وجاهزة للاستخدام.
تعتمد مجموعة أدوات تحليل البرامج الثابتة (FATEROTH) على Firmadyne مع بعض التغييرات. تستخدم Firmadyne قاعدة بيانات postgresql لتخزين المعلومات حول الصور التي تم التقاطها. ولكن فقط للوظائف الأساسية ، أي محاكاة البرامج الثابتة ، ليست هناك حاجة حقًا إلى PostgreSQL. وبالتالي الدهون لا تستخدمه.
تم تطوير الدهون في Python 3. ومع ذلك ، فأنت بحاجة إلى تثبيت كل من Python 3 و Python 2 منذ أن تستخدم أجزاء من Firmadyne وتبعياتها Python 2. يوصى بشدة بتثبيت الدهون داخل آلة افتراضية.
لتثبيت فقط استنساخ المستودع وتشغيل البرنامج النصي ./setup.sh .
git clone https://github.com/attify/firmware-analysis-toolkit
cd firmware-analysis-toolkit
./setup.sh
بعد اكتمال التثبيت ، قم بتحرير ملف fat.config الملف وقدم كلمة مرور Sudo كما هو موضح أدناه. تتطلب Firmadyne امتيازات sudo لبعض عملياتها. يتم توفير كلمة مرور Sudo لأتمتة العملية.
[DEFAULT]
sudo_password=attify123
firmadyne_path=/home/attify/firmadyne
$ ./fat.py <firmware file>
توفير اسم ملف البرامج الثابتة كوسيطة للنص.
سيعرض البرنامج النصي عناوين IP المخصصة لواجهات الشبكة التي تم إنشاؤها. لاحظها.
أخيرًا ، سيقول أن تشغيل البرامج الثابتة. اضغط على Enter وانتظر حتى يقوم البرامج الثابتة بأعلى. Ping IP الذي تم عرضه في الخطوة السابقة ، أو مفتوح في المتصفح.
تهاني! تم محاكاة البرامج الثابتة أخيرًا.
لإزالة جميع صور البرامج الثابتة التي تم تحليلها ، قم بتشغيلها
$ ./reset.py
$ ./fat.py DIR-601_REVB_FIRMWARE_2.01.BIN
__ _
/ _| | |
| |_ __ _ | |_
| _| / _` | | __|
| | | (_| | | |_
|_| __,_| __|
Welcome to the Firmware Analysis Toolkit - v0.3
Offensive IoT Exploitation Training http://bit.do/offensiveiotexploitation
By Attify - https://attify.com | @attifyme
[+] Firmware: DIR-601_REVB_FIRMWARE_2.01.BIN
[+] Extracting the firmware...
[+] Image ID: 1
[+] Identifying architecture...
[+] Architecture: mipseb
[+] Building QEMU disk image...
[+] Setting up the network connection, please standby...
[+] Network interfaces: [('br0', '192.168.0.1')]
[+] All set! Press ENTER to run the firmware...
[+] When running, press Ctrl + A X to terminate qemu
Asciicast
$ ./fat.py DIR890A1_FW103b07.bin --qemu 2.5.0
__ _
/ _| | |
| |_ __ _ | |_
| _| / _` | | __|
| | | (_| | | |_
|_| __,_| __|
Welcome to the Firmware Analysis Toolkit - v0.3
Offensive IoT Exploitation Training http://bit.do/offensiveiotexploitation
By Attify - https://attify.com | @attifyme
[+] Firmware: DIR890A1_FW103b07.bin
[+] Extracting the firmware...
[+] Image ID: 2
[+] Identifying architecture...
[+] Architecture: armel
[+] Building QEMU disk image...
[+] Setting up the network connection, please standby...
[+] Network interfaces: [('br0', '192.168.0.1'), ('br1', '192.168.7.1')]
[+] Using qemu-system-arm from /home/attify/firmware-analysis-toolkit/qemu-builds/2.5.0
[+] All set! Press ENTER to run the firmware...
[+] When running, press Ctrl + A X to terminate qemu
اعتبارًا من الآن ، لا يعمل Arm Firmadyne kernel مع أحدث إصدار من QEMU (2.11.1) المتاح على مستودع Ubuntu 18.04 الرسمي. ومع ذلك ، فإن QEMU (2.5.0) على Ubuntu 16.04 تعمل. بدلاً من ذلك ، يمكنك أيضًا استخدام QEMU المجمعة (2.5.0) المتوفرة مع Firmadyne كما هو موضح في المثال 2.
إذا لم يتم اكتشاف أي واجهات شبكة ، فحاول زيادة قيمة المهلة من 60 في scripts/inferNetwork.sh كما هو موضح أدناه
echo "Running firmware ${IID}: terminating after 60 secs..."
timeout --preserve-status --signal SIGINT 60 "${SCRIPT_DIR}/run.${ARCH}.sh" "${IID}"
يتضمن المستودع بالفعل بناءًا ثابتًا لـ QEMU 2.0.0 و 2.5.0 و 3.0.0 (في الإصدارات) ولكن إذا كنت ترغب في إنشاء خطواتك الخاصة أدناه.
على Ubuntu نظيفة 16.04 VM تشغيل. (من المهم استخدام 16.04 ، والإصدارات اللاحقة لديها مشاكل مع التجميع الثابت).
sudo apt update && sudo apt build-dep qemu -y
wget https://download.qemu.org/qemu-2.0.0.tar.bz2
tar xf qemu-2.0.0.tar.bz2
mkdir qemu-2.0.0-build
cd qemu-2.0.0
./configure --prefix= $( realpath ../qemu-2.0.0-build ) --static --target-list=arm-softmmu,mips-softmmu,mipsel-softmmu --disable-smartcard-nss --disable-spice --disable-libusb --disable-usb-redir
make
make install يمكن العثور على الثنائيات المترجمة في دليل qemu-2.0.0-build .
sudo apt update && sudo apt build-dep qemu -y
wget https://download.qemu.org/qemu-2.5.0.tar.bz2
tar xf qemu-2.5.0.tar.bz2
mkdir qemu-2.5.0-build
cd qemu-2.5.0
./configure --prefix= $( realpath ../qemu-2.5.0-build ) --static --target-list=arm-softmmu,mips-softmmu,mipsel-softmmu --disable-smartcard --disable-libusb --disable-usb-redir
make
make install يمكن العثور على الثنائيات المترجمة في دليل qemu-2.5.0-build .
sudo apt update && sudo apt build-dep qemu -y
wget https://download.qemu.org/qemu-3.0.0.tar.bz2
tar xf qemu-3.0.0.tar.bz2
mkdir qemu-3.0.0-build
cd qemu-3.0.0
./configure --prefix= $( realpath ../qemu-3.0.0-build ) --static --target-list=arm-softmmu,mips-softmmu,mipsel-softmmu --disable-smartcard --disable-libusb --disable-usb-redir
make
make install يمكن العثور على الثنائيات المترجمة في دليل qemu-3.0.0-build .
ملاحظة: يجب أن يكون من الممكن أيضًا تجميع QEMU بشكل ثابت على نظام جبال الألب ولكن لم يتم اختبار هذا. بشكل عام ، يفضل التجميع على جبال الألب على Ubuntu حيث يأتي السابق مع Musl libc وهو أفضل في الارتباط الثابت من Glibc على Ubuntu.