Tenda AC15路由器仿真——IDA+QEMU

环境
• 虚拟机:AttifyOS3.0(Ubuntu18)
• 固件版本:US_AC15V1.0BR_V15.03.1.16_multi_TD01.bin
• 工具:IDA、binwalk、Firmadyne

仿真过程

  1. 工具准备
  2. 提取固件文件系统
  3. 尝试开启网络服务
  4. IDA调试程序并修改代码
  5. 开启服务并验证

工具准备

百度云盘AttifyOS下载地址:https://pan.baidu.com/s/1Vracsnlt5uNbdmfYK4dp8Q
密码:tvoh
固件(文章顶部)
链接:https://download.csdn.net/download/The54No1/87539787?spm=1001.2101.3001.9500
Linux内核和硬盘映像
下载地址:https://people.debian.org/~aurel32/qemu/mips/

提取固件

进入固件所在位置,使用binwalk提取固件文件系统。可发现该文件系统为小端存储。

binwalk -Me US_AC15V1.0BR_V15.03.1.16_multi_TD01.bin 

在这里插入图片描述

尝试开启网络服务

QEMU仿真

进入提取的文件系统中的squashfs-root目录下,使用qemu-arm-static进行模拟Tenda路由器的网络服务一般是名称为/bin/httpd,开启命令如下:

cp (which qemu-arm-static) .#保证已经安装QEMU的前提下执行
sudo chroot ./ ./qemu-arm-static  ./bin/httpd

此时界面停在了welcome。
在这里插入图片描述

IDA调试httpd

在本机中打开ida,在ida中打开httpd,定位到sub_2CEA8函数即为main函数。

在这里插入图片描述
选择sub_2CEA8函数后在代码出按F5可展示伪代码。在代码32行设置断点。

在这里插入图片描述
在虚拟机中使用qemu-arm-static开启httpd服务,并-g 指定调试接口,命令如下:

sudo chroot ./ ./qemu-arm-static -g 23946 ./bin/httpd

使用ida开始远程调试,按F9选择Remote gdb debugger,输入虚拟机ip,httpd在虚拟机中位置和服务端口。

在这里插入图片描述

分析后发现httpd服务开启有两个检测条件:
1.check_network()<=0时则会陷入sleep
2.ConnectCFM() 不符合条件则会提示”connect cfm failed”
开启调试后发现程序会停留在以下界面。

在这里插入图片描述
使用keypatch对httpd进行修改并保存为httpdpatch,将httpdpatch放入虚拟机中httpd相同文件夹中(需配合root身份对文件进行移动),并执行httpdpatch发现运行出现变化。
在这里插入图片描述

在这里插入图片描述

mv httpdpatch /home/oit/tools/firmadyne/_US_AC15V1.0BR_V15.03.1.16_multi_TD01.bin.extracted/squashfs-root/bin/httpdpatch

在这里插入图片描述
在这里插入图片描述
此时发现httpd listen ip后ip有问题,查阅资料可知httpd 想要获取的网卡名称是 “br0”。直接在宿主机上新建一个名为 “br0” 的网卡,再执行。

sudo brctl addbr br0
sudo ifconfig br0 192.168.254.139/24

在这里插入图片描述
将webroot_ro中的文件复制到web_root目录下,最后就可以在本机中访问模拟出的路由器网站。

cp -r /home/oit/tools/firmadyne/_US_AC15V1.0BR_V15.03.1.16_multi_TD01.bin.extracted/squashfs-root/webroot_ro/* /home/oit/tools/firmadyne/_US_AC15V1.0BR_V15.03.1.16_multi_TD01.bin.extracted/squashfs-root/webroot

仿真验证

打开浏览器输入192.168.254.139:81即可访问。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值