運行環境安裝配置之前須了解你所使用的Linux系統的版本以及Qemu的版本,因為這直接影響著你后續選擇安裝各種依賴包、mips qemu鏡像等的版本,各種版本都對應上,最終系統才能正確運行。本次漏洞分析的基礎環境為前期的Ubuntu18.04虛擬機和基于qemu-4.0.0源碼編譯安裝的Qemu運行環境:
從站點https://people.debian.org/~aurel32/qemu/mips/下載debianmips qemu鏡像,由于虛擬機是Ubuntu linux,下載debian_squeeze_mips_standard.qcow2和vmlinux-2.6.32-5-4kc-malta即可:
MIPS系統網絡配置
使用QEMU 模擬運行MIPS系統,需要將ubuntu虛擬機設置成橋接,這樣以來ubuntu系統就可以和QEMU虛擬機進行通信和數據傳輸(此操作類似配置VMware Workstation的橋接用以與物理機的通信)。
獲取安裝依賴,執行以下命令:
sudo apt-get install bridge-utils uml-utilities
修改ubuntu主機網絡配置,將ubuntu的網絡接口配置文件 /etc/network/interfaces 修改為如下內容并保存、關閉:
sudo gedit /etc/network/interfaces
修改QEMU的網絡接口啟動腳本,重啟網絡使配置生效,執行以下命令:
sudo gedit /etc/qemu-ifup
在腳本文件/etc/qemu-ifup結尾增加如下內容:
保存文件/etc/qemu-ifup 以后,賦予可執行權限,然后重啟網絡使所有的配置生效:
sudo chmod a+x /etc/qemu-ifup
sudo /etc/init.d/networking restart
QEMU啟動配置
Qemu運行之前先啟動橋接網絡,在本地ubuntu命令行終端執行以下命令(注意:ens33為ubuntu默認網卡):
sudo ifdown ens33
sudo ifup br0
QEMU MIPS虛擬機啟動
進入前面下載的mips鏡像目錄,執行以下命令:
sudo qemu-system-mips -M malta -kernelvmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append"root=/dev/sda1 console=tty0" -net nic,macaddr=00:16:3e:00:00:01 -nettap
輸入root/root便可登入qemu mips虛擬機,為了更便操作mips虛擬機,可在unbuntu中新開啟一個終端,ssh連接到qemu mips:
固件模擬運行
從DLink官網下載包含漏洞版本的路由器固件:ftp://ftp2.dlink.com/PRODUCTS/DIR-859/DIR-859_REVA_FIRMWARE_v1.05B03.zip,使用binwalk -Me直接解壓固件可得到文件系統文件:
固件模擬運行由兩種方式可以考慮:① 將文件系統上傳到qemu mips虛擬機中運行;② 借助firmadyne工具運行固件(當然也可以嘗試使用AttifyOS VM):
① 使用scp命令將squashfs-root目錄上傳到qemu mips虛擬機:
chroot /root/squashfs-root sh
② 借助firmadyne工具運行固件
Firmadyne是一款自動化和可裁剪的嵌入式Linux系統固件分析框架,它支持系統固件逆向QEMU嵌入式系統模擬執行,使用其可模擬路由器固件、執行路由器。安裝和使用方法詳見https://github.com/firmadyne/firmadyne。注意:Firmadyne安裝之前,先安裝firmware-analysis-toolkit,安裝方法詳見https://github.com/attify/firmware-analysis-toolkit,安裝完成之后在firmware-analysis-toolkit目錄中創建firmadyne目錄并下載安裝Firmadyne。各自全部安裝完成后如下所示(注意兩個工具須完全按照步驟安裝完成,否則后續固件運行會出錯):
首先將firmware-analysis-toolkit目錄下的fat.py和reset.py文件移動到firmadyne目錄;接著進入firmadyne修改firmadyne.config設置路徑如下:
將固件bin文件拷貝至firmadyne目錄,繼續執行以下命令:
rm -rf images*
python3 reset.py
sudo -u postgres createdb -O firmadyne firmware
sudo -u postgres psql -d firmware < ./database/schema
./sources/extractor/extractor.py -b Dlink -sql 127.0.0.1 -np-nk "DIR859Ax_FW105b03.bin" images
./scripts/getArch.sh ./images/1.tar.gz
./scripts/makeImage.sh 1
./scripts/inferNetwork.sh 1