路由器仿真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>

这里的是指的版本,例如我要仿真D-Link的DIR820L就运行下面的命令

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则证明模拟成功

[image-20231214174715988](https://springbird3.oss-cn-chengdu.aliyuncs.com/lianxiang/20221022230518.png)

使用浏览器访问http://192.168.0.1

出现如下界面则表明我们成功模拟了一台D-Link路由器

[image-20231214174836425](https://springbird3.oss-cn-chengdu.aliyuncs.com/lianxiang/20221022230518.png)

socat tcp-l:888,reuseaddr,fork TCP:目标:目标端口,然后使用上述命令映射出去就可以物理机访问了

参考链接

https://www.anquanke.com/post/id/288053

https://www.anquanke.com/post/id/248740#h3-3

https://www.ctfiot.com/82596.html