物联网设备的固件模拟环境搭建

阅读量410773

|评论5

|

发布时间 : 2018-07-10 15:00:54

x
译文声明

本文是翻译文章,文章来源:https://blog.attify.com/

原文地址:https://blog.attify.com/getting-started-with-firmware-emulation/

译文仅供参考,具体内容表达以及含义原文为准。

在这篇文章中,我们将演示如何模拟一个给定Iot设备的固件。
固件仿真可以用于许多不通的目的,比如提供一个更好的方法来分析固件,测试利用,完成远程调试等。基于这个技术,再没有一个物理Iot设备的情况下,你可以模拟一个不同架构的固件并进行交互。早期,完成一个固件仿真需要创建一个Qemu镜像,然后复制到固件的文件系统里,才能启动固件。现在,存在一种更简单的替代方案,在模拟固件的时候也更容易出现较少的问题,让我们一探究竟。

 

需要的工具

 

配置

准备好上面三个工具之后,第一步我们需要做的就是设置固件分析工具包。

固件分析工具包其实就是对Firmadyne的简单的封装,自动化了模拟新固件的过程。

下载并安装FAT,只需要跟随下面代码所示,递归的clone一个git项目就可以:

git clone --recursive https://github.com/attify/firmware-analysis-toolkit.git

接下来,我们需要安装几个单独的工具,比如:Binwalk,Firemadyne和Firmware-Mod-Kit.

 

安装Binwalk

安装Binwalk只需要安装依赖就可以了,例如:

cd firmware-analysis-toolkit/binwalk
sudo ./deps.sh
sudo python setup.py install

如果一些顺利的话,我们就可以运行binwalk,然后看到下面的输出了:

 

安装Firmadyne

要安装Firmadyne,需要进入Firmadyne目录,然后打开firmadyne.config,里面的内容如下:

找到 FIRMWARE_DIR=/home/vagrant/firmadyne/这一行,然后修改Fireadyne的地址为当前的全路径,我这里修改完之后是这样的:

修改完之后,下一步就可以下载Firmadyne需要的其他文件了,如果网络状态好的话,这个过程需要1-2分钟,这时候我们可以喝杯咖啡或者吸根烟了。

下载完成之后,下一步就需要安装Firmadyne剩余的依赖文件了:

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

接下来,我们还需要安装PostgreSQL数据库,这一步直接按照官方Firmadyne wiki提供的指令就可以了:

sudo apt-get install postgresql
sudo -u postgres createuser -P firmadyne
sudo -u postgres createdb -O firmadyne firmware
sudo -u postgres psql -d firmware < ./firmadyne/database/schema

当提示数据库密码的时候,我们设置为firmadyne就可以了(为了避免后面不必要的问题)。

到这里我们已经全部安装完Firmadyne了。

 

安装Firmadyne Analysis Tookit

首先我们需要把fat.py和reset.py移动到firmadyne目录里。如
然后打开fit.py,修改root的密码(当运行这个脚本的时候就不会再需要输入密码了)和指定firmadyne的目录,例如:

到这里安装工作就完成了,请确认postgresql数据库启动并正常运行。

。。看样子我们一切顺利。

 

模拟一个固件

现在你需要做的就是指定一个固件名称然后运行fat.py来模拟一个固件,这里我们运行的是WNAP320.zip固件。
对于Brand参数,你可以指定任意brand,这个参数仅仅是为了数据库方便的目的。
输出的内容应该像下面所示:

当我们完成了固件的初始化过程之后,会得到一个IP地址,这种情况下是固件运行了一个web服务,你可以通过SSH访问这个web接口,然后就可以完成其他基于网络的利用了。
让我们打开firefox来验证一下是否我们可以访问这个web接口。

祝贺!!! – 我们已经成功的模拟了一个固件(最初用于MIPS Endian架构),并且得到了一个可以访问固件内部的web接口。

这就是这篇文章的全部,如果有任何问题,请联系我们

审核人:yiwang   编辑:边边

本文翻译自https://blog.attify.com/ 原文链接。如若转载请注明出处。
分享到:微信
+11赞
收藏
0A3D6G
分享到:微信

发表评论

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66