
फर्मवेयर को एमुलेट करने और सुरक्षा कमजोरियों के लिए इसका विश्लेषण करने के लिए टूलकिट
FAT एक टूलकिट है जो सुरक्षा शोधकर्ताओं को IoT और एम्बेडेड डिवाइस फर्मवेयर में कमजोरियों का विश्लेषण और पहचान करने में मदद करने के लिए बनाया गया है। इसका उपयोग Attify द्वारा संचालित "Offensive IoT Exploitation" प्रशिक्षण में भी किया जाता है।
नोट:
अभी के लिए, यह केवल Firmadyne को स्वचालित करने के लिए एक स्क्रिप्ट है जो फर्मवेयर एमुलेशन के लिए उपयोग किया जाने वाला उपकरण है। वास्तविक एमुलेशन में किसी भी समस्या के मामले में, कृपया अपनी समस्याएं firmadyne issues पर पोस्ट करें।
यदि आप समस्याओं का सामना कर रहे हैं, तो आप AttifyOS आज़मा सकते हैं जिसमें फर्मवेयर विश्लेषण टूलकिट और अन्य उपकरण पूर्व-स्थापित और उपयोग के लिए तैयार हैं।
फर्मवेयर विश्लेषण टूलकिट (आगे FAT) कुछ बदलावों के साथ Firmadyne पर आधारित है। Firmadyne एमुलेटेड इमेज के बारे में जानकारी संग्रहीत करने के लिए एक PostgreSQL डेटाबेस का उपयोग करता है। हालांकि मूल कार्यक्षमता यानी फर्मवेयर एमुलेशन के लिए PostgreSQL की वास्तव में आवश्यकता नहीं है। इसलिए FAT इसका उपयोग नहीं करता है।
FAT को Python 3 में विकसित किया गया है। हालांकि आपको Python 3 और Python 2 दोनों स्थापित करने की आवश्यकता है क्योंकि Firmadyne और इसकी निर्भरताओं के कुछ भाग Python 2 का उपयोग करते हैं। FAT को वर्चुअल मशीन के अंदर स्थापित करने की अत्यधिक अनुशंसा की जाती है।
स्थापित करने के लिए बस रिपॉजिटरी को क्लोन करें और स्क्रिप्ट ./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 दबाएं और फर्मवेयर के बूट होने तक प्रतीक्षा करें। पिछले चरण में दिखाए गए 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 Ubuntu 18.04 आधिकारिक रिपॉजिटरी पर उपलब्ध Qemu के नवीनतम संस्करण (2.11.1) के साथ काम नहीं करता है। हालांकि, Ubuntu 16.04 पर Qemu (2.5.0) काम करता है। वैकल्पिक रूप से आप उदाहरण 2 में दिखाए अनुसार firmadyne के साथ प्रदान किए गए बंडल किए गए Qemu (2.5.0) का भी उपयोग कर सकते हैं।
यदि कोई नेटवर्क इंटरफ़ेस का पता नहीं चलता है, तो नीचे दिखाए अनुसार scripts/inferNetwork.sh में 60 से टाइमआउट मान बढ़ाने का प्रयास करें
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 निर्देशिका में पाई जा सकती हैं।
नोट: Alpine सिस्टम पर qemu को स्टैटिक रूप से संकलित करना भी संभव होना चाहिए लेकिन इसका परीक्षण नहीं किया गया है। सामान्य तौर पर Alpine पर संकलन Ubuntu की तुलना में पसंद किया जाता है क्योंकि पूर्व में musl libc आता है जो Ubuntu पर glibc की तुलना में स्टैटिक लिंकेज के लिए बेहतर है।