路由器仿真firmAE
路由器仿真firmAE
前言
其实比起用仿真软件去防真路由器,其实更加推荐的是买一个对应的路由器来复现,省下搭建的环境的时间,z1r0师傅的建议是这样
FirmAE 简介
FirmAE是由国外安全研究团队开发的一款全自动固件仿真工具,FirmAE工具以Firmadyne工具为基础,提出了仲裁仿真的技术方式,将固件仿真成功率由Firmadyne的16.28%提高到了79.36%。经FirmAE团队测试,目前已经成功对来自八家设备供应商的超过1100款无线路由器和网络摄像机固件进行了模拟。
FirmAE工具的官方代码仓库为:https://github.com/pr0v3rbs/FirmAE
FirmAE 工具安装
FirmAE官方推荐使用Ubuntu 18.04系统进行安装部署,FirmAE工具的安装部署十分简单,只需要拉取工具仓库后执行安装脚本即可。
首先运行git clone –recursive https://github.com/pr0v3rbs/FirmAE命令
Clone FirmAE
1 | git clone --recursive https://github.com/pr0v3rbs/FirmAE |
运行download.sh
1 | ./download.sh |
运行 install.sh
1 | ./install.sh |
然后安装binwalk,建议使用FirmAE工具目录下的binwalk安装程序进行安装
1 | cd binwalk-2.3.3/python3 setup.py install |
binwalk安装成功后使用如下命令对固件进行解密提取
1 | binwalk -Me /home/iotsec/DIR820LA1_FW105B03.bin |
FirmAE使用
执行init.sh
脚本。
1 | ./init.sh |
检查仿真
1 | sudo ./run.sh -c <brand> <firmware> |
分析目标固件
- 分析模式,使用FirmAE分析器
1 | sudo ./run.sh -a <brand> <firmware> |
- 运行模式,有助于测试网络服务或执行自定义分析器
1 | sudo ./run.sh -r <brand> <firmware> |
完成run.sh -c
后,可debug固件。
用户级基本调试实用程序
1 | sudo ./run.sh -d <brand> <firmware> |
内核级引导调试
1 | sudo ./run.sh -b <brand> <firmware> |
这里的
1 | sudo ./run.sh -r DIR820L ./firmwares/D-link/DIR-820L/DIR820LA1_FW105B03.bin |
一些固件的下载地址
D-link的固件下载链接为http://www.dlinktw.com.tw/techsupport/download.ashx?file=2663
openwrt固件下载链接https://downloads.openwrt.org/
Hiboy 老毛子下载地址http://opt.cn2qq.com/padavan/
immortalwrt 官方下载地址https://downloads.immortalwrt.org/
综合的一些网站https://iui.su/1789/
firmAE模拟D-Link路由器固件
本文模拟的是设备型号为D-Link DIR-820L,是D-Link的一款企业级无线路由器
首先下载固件到系统中
固件下载链接为http://www.dlinktw.com.tw/techsupport/download.ashx?file=2663
搭建过程
下载后解压得到.bin格式的固件文件
首先执行./init.sh进行初始化
使用binwalk -Me /home/iotsec/DIR820LA1_FW105B03.bin命令对固件进行解密提取
然后执行sudo ./run.sh -r DIR820L /home/iotsec/DIR820LA1_FW105B03.bin命令进行固件模拟
值得注意的是,首次模拟会很慢很慢,做好等待半个小时的准备。日志中出现两个true则证明模拟成功
[](https://springbird3.oss-cn-chengdu.aliyuncs.com/lianxiang/20221022230518.png)
使用浏览器访问http://192.168.0.1
出现如下界面则表明我们成功模拟了一台D-Link路由器
[](https://springbird3.oss-cn-chengdu.aliyuncs.com/lianxiang/20221022230518.png)
socat tcp-l:888,reuseaddr,fork TCP:目标:目标端口,然后使用上述命令映射出去就可以物理机访问了
参考链接
https://www.anquanke.com/post/id/288053