近幾年,物聯網設備已滲透到生活的方方面面,為人們帶來了極大的方便。但是,因其承載有人們日常生活產生的數據和隱私信息,其安全性也越來越受到人們的關注。在上一篇中,我們討論了用腳本控制小米設備,這主要是從流量層面入手來進行的安全分析;在這一篇,主要從固件入手,分析固件的脆弱性。
開篇
“工欲善其事,必先利其器”,在正式開始,先來講講固件分析環境的搭建,主要就是binwalk的安裝。由于固件壓縮打包的方式有很多種,單用apt instll binwalk這條命令安裝,很多文件系統的格式是不支持解壓的,需要將各種解壓插件一并安裝,才能正確解壓出固件中的文件系統。完整安裝可參考binwalk的官方安裝文檔。但每次都要這樣手動安裝,筆者覺得很麻煩,因此寫了安裝腳本自動完成安裝。
同時,考慮到有很多依賴包需要安裝,Ubuntu系統帶的apt源下載賊慢,可將其更換成阿里云的源,主要參考這篇文章。但每次照著帖子操作,相當浪費時間,也寫了一個腳本自動換源的腳本,如下所示。
#!/bin/bash
# [*]change ubuntu system sources to aliyun source
#:<<BLOCK
sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak.1
codename=`lsb_release -c | cut -c 11-`
echo "codename is $codename"
sudo touch /etc/apt/sources.list
sudo echo "deb http://mirrors.aliyun.com/ubuntu/ $codename main restricted universe multiverse" >> /etc/apt/sources.list
sudo echo "deb-src http://mirrors.aliyun.com/ubuntu/ $codename main restricted universe multiverse" >> /etc/apt/sources.list
sudo echo "deb http://mirrors.aliyun.com/ubuntu/ $codename-security main restricted universe multiverse" >> /etc/apt/sources.list
sudo echo "deb-src http://mirrors.aliyun.com/ubuntu/ $codename-security main restricted universe multiverse" >> /etc/apt/sources.list
sudo echo "deb http://mirrors.aliyun.com/ubuntu/ $codename-updates main restricted universe multiverse" >> /etc/apt/sources.list
sudo echo "deb-src http://mirrors.aliyun.com/ubuntu/ $codename-updates main restricted universe multiverse" >> /etc/apt/sources.list
sudo echo "deb http://mirrors.aliyun.com/ubuntu/ $codename-backports main restricted universe multiverse" >> /etc/apt/sources.list
sudo echo "deb-src http://mirrors.aliyun.com/ubuntu/ $codename-backports main restricted universe multiverse" >> /etc/apt/sources.list
sudo echo "deb http://mirrors.aliyun.com/ubuntu/ $codename-proposed main restricted universe multiverse" >> /etc/apt/sources.list
sudo echo "deb-src http://mirrors.aliyun.com/ubuntu/ $codename-proposed main restricted universe multiverse" >> /etc/apt/sources.list
sudo apt-get update
#BLOCK
# [*]change pip sources to aliyun source
if [ ! -d ~/.pip ];then
mkdir ~/.pip
fi
if [ -f ~/.pip/pip.conf ];
then
sudo mv ~/.pip/pip.conf ~/.pip/pip.conf.bak
sudo touch ~/.pip/pip.conf
else
sudo touch ~/.pip/pip.conf
fi
sudo echo "[global]" >> ~/.pip/pip.conf
sudo echo "index-url = https://mirrors.aliyun.com/pypi/simple" >> ~/.pip/pip.conf
在腳本中,主要分為兩部分,先是將Ubuntu系統的源換成阿里云的源,并按照Ubuntu系統codename的不同,形成有針對性的apt源文件;再將pip的源也換成的阿里云的源。換源后,安裝速度快了幾十倍。
接著,就是對binwalk完整版的安裝了,binwalk的安裝文件和它的相關插件,我已從github上下載完成(在后文的工具中,已集成),如下圖所示。
binwalk的安裝文件和它的相關插件
安裝腳本為: install_binwalk.sh,如下所示,即是按照官方的安裝方案編寫的腳本(官方雖然有./deps.sh自動安裝腳本,安裝很慢,表示不太好用),該腳本目前只適用于Python2.7。
#!/bin/bash
#dependencies
sudo apt -y install python-lzma python-crypto
sudo apt -y install libqt4-opengl python-opengl python-qt4 python-qt4-gl python-numpy python-scipy python-pip
sudo pip install pyqtgraph
sudo pip install capstone
# Install standard extraction utilities(必選)
sudo apt -y install mtd-utils gzip bzip2 tar arj lhasa p7zip p7zip-full cabextract cramfsswap squashfs-tools sleuthkit default-jdk lzop srecord
#Install binwalk
#sudo apt-get install binwalk
cd binwalk
sudo python setup.py install
cd ..
# Install sasquatch to extract non-standard SquashFS images(必選)
sudo apt -y install zlib1g-dev liblzma-dev liblzo2-dev
cd sasquatch && sudo ./build.sh
cd ..
# Install jefferson to extract JFFS2 file systems(可選)
sudo pip install cstruct
cd jefferson && sudo python setup.py install
cd ..
# Install ubi_reader to extract UBIFS file systems(可選)
sudo apt -y install liblzo2-dev python-lzo
cd ubi_reader && sudo python setup.py install
cd ..
# Install yaffshiv to extract YAFFS file systems(可選)
cd yaffshiv && sudo python setup.py install
cd ..
#install unstuff (closed source) to extract StuffIt archive files
|