firmadyne详解
介绍
FIRMADYNE是一个自动化且可扩展的系统,用于对基于Linux的嵌入式固件执行仿真和动态分析。组成部分如下:
(1)修改过的内核(MIPS:v2.6.32,ARM:v4.1,v3.10),用于固件执行的检测;
(2)用户空间NVRAM库,用于模拟硬件NVRAM外围设备;
(3)从下载的固件中提取文件系统和内核的提取器;
(4)一个小型控制台应用程序,用于生成用于调试的附加shell;
(5)还有一个从42多个不同厂商下载固件的爬虫。
依据fiemadyne作者书写了三个重要脚本:
(1)Accessible Webpages;
(2)SNMP Information;
(3)Vulnerability Check;(结果位于analyses/README.md.)
具体实验结果位于作者的论文Towards Automated Dynamic Analysis for Linux-based Embedded Firmware中。
依赖库介绍
busybox:linux中的瑞士军刀。
fakeroot:建立一种环境,在里边运行的命令可以以假的root权限操作文件。
git:不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
dmsetup:有时候会出现类似lvm 删除不掉的lvm分区。我们可以使用dmsetup 去删除。(比lvm更加底层)
loop设备:loop设备是一种伪设备,是使用文件来模拟块设备的一种技术,文件模拟成块设备后, 就像一个磁盘或光盘一样使用。
kpartx:配合losetup却可以来挂载带有分区表的映像文件。
netcap:调试 TCP/UDP 网络连接的利器,常被称作网络调试的瑞士军刀。
nmap:UDP 端口,一般来说都会使用Nmap。用于网络发现和安全审计工具。
psycopg2:赋予python操作数据库的能力。
postgresql:开源对象关系数据库系统。 它是一个多用户数据库管理系统。
snmp:简单网络管理协议。
uml-utilities:该工具包含建立虚拟网络设备(所谓的“TAP interfaces”)的工具。
Util-linux:Linux操作系统的标准软件包,有加载、卸载、格式化、分区等功能。
vlan:实现vlan设备?
binwalk:用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具。
固件的分析工具,旨在协助研究人员对固件非分析,提取及逆向工程用处。运行于python环境。
如何运行
(1)安装
(2)提取
(3)建立数据库
(4)下载预建数据库或者从源码重新编译内核
mipseb是big-endian的mips架构
mipsel是little-endian的mips架构。
什么是QEMU
Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 将这些指令转译给真正的硬件。
QEMU在firmadyne中起的作用
由于firmadyne并不支持所有固件,不能模拟的固件还是需要用QEMU来模拟。
什么是MIPS
在qemu-mips虚拟机在系统模式下能够运行路由器固件的mips程序
使用
运行原理参见github