最近在研究路由器固件,若是分析一个拆一个路由器,这样子难免有些过分了,那么如何在模拟环境中运行固件呢?查阅了大量技术文章之后发现几乎没有一个平台能够完全模拟所有硬件设备。
IoT产品的架构也不尽相同,基于QEMU的仿真平台也比较多,最终在漏洞银行的Hackshow上看到@H4lo师傅利用Firmadyne来模拟固件,因此便看了两天这个GitHub项目。Firmadyne可以用来模拟不少固件设备,当然,对于一些自研程度较高的固件,支持还是不够友好的。
在经历了二月下旬好几天的折腾之后,终于在多次坑槽中寻找到了基于Firmadyne的固件模拟环境搭建的正确配置方式。腾讯云(失败),阿里云(失败-原因是python库是最新版),华为云(成功),具体入坑教程参见此篇文章入坑IOT仿真模拟平台
言归正传,经过数天的入坑后,在失败后的第N次,成功模拟出固件仿真环境。本文仅供参考,仅限带人入坑。
Firmadyne介绍
Firmadyne 是一个自动化和可扩展的系统,用于对基于Linux的嵌入式固件执行仿真和动态分析。
https://github.com/firmadyne/firmadyne(项目地址)
环境搭建
Firmadyne 项目本身搭建并不复杂,但是运行特定的固件,稍稍有点麻烦,为此我们使用 firmware-analysis-toolkit。
该项目集成了以下四个关于固件分析的项目。我开始入坑FAT的第二天,原作者更新了项目,但是对国内网友并不友好,在CSDN上有大佬保存了该项目的原始版本。本文依旧使用原始版本,以为新版本真的不友好。这是我测试失败几十次得到的教训。
旧版FAT地址:https://github.com/liyansong2018/Old-Firmware-Analysis-Toolkit(来自CSDN姑苏城外的江枫师傅整理)
(来自CSDN姑苏城外的江枫师傅整理)
项目中的脚本 fat.py 能够帮助我们一键仿真固件。推荐使用 Ubuntu 系统,我测试成功使用的是 Ubuntu 18.04(华为云ARM架构,但是因为ARM架构较为复杂,所以目前正在测试阿里云Ubuntu18.04),在 Kali Linux 2020,Ubuntu14.04,Ubuntu16.04,Centos7--虚拟机环境下N次均测试失败,这里强烈推荐使用云服务器搭建。另外听闻docker下也有镜像,后面更新...
若有大佬在本地VMware虚拟机测试成功欢迎交流。
下载 Firmware Analysis Toolkit
https://github.com/liyansong2018/Old-Firmware-Analysis-Toolkit (下载旧版 来自CSDN姑苏城外的江枫师傅整理)
等待下载完成之后,我们即可进行安装Binwalk,Firmware Analysis Toolkit内部含有四个文件,具体可参见上图。
安装binwalk
下载完成后,Ubuntu内按理来说,仅有Firmware Analysis Toolkit这一个主文件夹(推荐使用纯净系统测试)
进入到Firmware Analysis Toolkit的二级目录下cd /Firmware Analysis Toolkit/binwalk
sudo ./deps.sh
sudo python setup.py install
进行依赖以及部分文件的安装,受各版本系统的不同,setup.py内文件可能执行不完,apt-get install安装即可。
安装Firmadyne
同样Firmadyne位于Firmware Analysis Toolkit的二级目录下,此时的坑点是,Firmadyne内包含的下载脚本down.sh因为代码架构在亚马逊云上,因此对于墙内网友多有不便(另外及时安装python依赖)。
贴地址:https://github.com/liyansong2018/Firmadyne-binaries(来自CSDN姑苏城外的江枫师傅整理)
git后替换Firmadyne目录内的binaries即可。
配置数据库
sudo apt-get install postgresql
sudo -u postgres createuser -P firmadyne (密码默认firmadyne)
sudo -u postgres createdb -O firmadyne firmware
sudo -u postgres psql -d firmware < ./firmadyne/database/schema (schema具体路径可以在文件内pwd查找)
安装部分依赖
sudo -H pip install git+https://github.com/ahupp/python-magic
sudo -H pip install git+https://github.com/sviehb/jefferson
sudo apt-get install qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils
配置环境
修改 Old-Firmware-Analysis-Toolkit/firmadyne/firmadyne.config,主要是将以下第四行改成相应的绝对路径(pwd即可)
将 Old-Firmware-Analysis-Toolkit根目录下的两个脚本文件 fat.py、reset.py,拷贝到 firmadyne 目录下,并修改 fat.py。
主要修改如下root-pass对应当前系统用户的密码对应firmadyne_pass 是其在 postgresql 数据库中的账号密码
固件环境模拟
模拟固件之前,需要开启 postgresql 数据库
service postgresql start
下载一个固件,进行模拟,这里以较为通用的一个固件为例:
RB-1732_TC_v2.0.43.bin(芝诺科技ZENO公众号回复“固件”下载)
进入二级目录直接运行 firmadyne 目录下的 fat.py 即可。
(服务器信息打马赛克)
端口转发(内网-公网的转发)
ssh -D 7878(云服务器映射端口) root@服务器IP 【此处注意7878为服务器开启的端口,在云服务器内需要配置安全组打开7878端口】
(红色圈出的部分为目前服务器内的内网IP)
利用火狐浏览器设置端口代理。查看模拟路由固件的WEB端。
(火狐浏览器代理配置)
(模拟出的路由器固件操作面板)
开始挖掘路由器漏洞ing
参考链接:
https://blog.csdn.net/song_lee/article/details/104393933
https://github.com/firmadyne/firmadyne
NDSS: http://www.internetsociety.org/events/ndss-symposium
https://github.com/attify/firmw
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/4812.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~