物联网设备固件分析:Firmadyne固件模拟环境搭建
0x01 前言
本文介绍了在对固件进行分析的环境准备部分,主要是对Firmadyne这个工具的环境搭建,最后搭建完用Netgear的路由器固件进行测试。
更新:直接看评论,用配好的docker镜像:
在docker hub中搜索镜像:https://hub.docker.com/search?q=firmadyne&type=image
# pull image
# e.g. sudo docker pull mborgerson/firmadyne:auto
docker pull image:Tag# run
sudo docker run -it mborgerson/firmadyne:auto
最好还是直接看官方github的readme吧…
安装完后测试了一下,在我测试的几个固件中(Tenda路由器,Cisco交换机、防火墙、路由器,D-Link路由器),目前只能运行大部分的路由器的固件,交换机和防火墙的固件都运行不起来。
Firmadyne是一款自动化分析嵌入式Linux系统安全的开源软件,由卡内基梅隆大学的Daming D. Chen开发完成的。它支持批量检测,整个系统包括固件的爬取、root文件系统的提取、QEMU模拟执行以及漏洞的挖掘。
实验环境及需要的工具:
- 系统:Ubuntu14.04
- 在Kali最新版和Ubuntu16.04LTS上都会有奇奇怪怪的问题,后来在issue中找到作者的实验环境为Ubuntu14.04
- 下载:http://mirrors.ustc.edu.cn/ubuntu-releases/14.04/
- 工具:
- Firmadyne
- 项目地址:https://github.com/firmadyne/firmadyne
- README.md中有详细的配置和安装步骤
Firmware Analysis Toolkit
- 项目地址:https://github.com/attify/firmware-analysis-toolkit
- 该工具集包含了
binwalk
、Firmadyne
等必须的工具。这里我们只需要克隆该仓库到本地即可
qemu
- 可以直接用apt-get安装,只安装一部分
- 也可以从github的仓库编译安装所有的模块
- Firmadyne
0x02 环境配置
2.1 克隆Firmware Analysis Toolkit
工具集仓库
# 1. 安装依赖
sudo apt-get install busybox-static fakeroot git dmsetup kpartx netcat-openbsd nmap python-psycopg2 python3-psycopg2 snmp uml-utilities util-linux vlan# 2. clone
git clone --recursive https://github.com/attify/firmware-analysis-toolkit.git
2.2 安装binwalk
# 1. 安装依赖和binwalk
cd firmware-analysis-toolkit/binwalk
sudo ./deps.sh
sudo python setup.py install# 2. 对于 python2.x,还需要安装以下的库
sudo -H pip install git+https://github.com/ahupp/python-magic
sudo -H pip install git+https://github.com/sviehb/jefferson
测试是否安装成功:
hzy@ubuntu:~$ binwalk Binwalk v2.1.2-c036535
Craig Heffner, ReFirmLabs
https://github.com/ReFirmLabs/binwalkUsage: binwalk [OPTIONS] [FILE1] [FILE2] [FILE3] ...Disassembly Scan Options:-Y, --disasm Identify the CPU architecture of a file using the capstone disassembler... ...-s, --status=<int> Enable the status server on the specified porthzy@ubuntu:~$
2.3 安装Firmadyne
- 进入Firmadyne目录,然后打开
firmadyne.config
,修改 FIRMWARE_DIR的路径为当前Firmadyne目录的绝对路径
cd firmware-analysis-toolkit/firmadynevim firmadyne.config# 以下为firmadyne.config中的内容
#!/bin/sh# uncomment and specify full path to FIRMADYNE repository
FIRMWARE_DIR=/home/hzy/firmware-analysis-toolkit/firmadyne/# specify full paths to other directories
BINARY_DIR=${FIRMWARE_DIR}/binaries/
TARBALL_DIR=${FIRMWARE_DIR}/images/
SCRATCH_DIR=${FIRMWARE_DIR}/scratch/
SCRIPT_DIR=${FIRMWARE_DIR}/scripts/# functions to safely compute other paths... ...
- 安装Firmadyne
sh ./download.sh
2.4 安装postgresql数据库
sudo apt-get install postgresql# 用户的密码设置为:firmadyne
sudo -u postgres createuser -P firmadyne, with password firmadynesudo -u postgres createdb -O firmadyne firmware# 注意这里的数据库文件是在firmadyne/目录下,也就是该命令要在根目录firmware-analysis-toolkit/目录下执行
sudo -u postgres psql -d firmware < ./firmadyne/database/schema
启动postgresql数据库,确认其正在运行。
- 这里我在kali测试的时候,如果没有先启动数据库,就进行添加用户的命令会报错。
- 还遇到了一个问题,明明数据库服务在运行,但是添加用户的时候一直报的错也是服务没有运行的错,这种情况下我是直接重装了一遍postgresql
- 具体出现的错大家可以在网上搜索解决方案即可。一般还是有现成的方法的。
sudo service postgresql startsudo service postgresql status
2.5 安装qemu
QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台上使用广泛。
这里有两种安装方法:
- 直接通过apt-get安装
sudo apt-get install qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils
- 编译安装
git clone git://git.qemu.org/qemu.git cd qemu git submodule init git submodule update --recursive apt install libglib2.0 libglib2.0-dev apt install autoconf automake libtool ./configure make make install
在执行命令./configure
以后可能会报错:
ERROR: pixman >= 0.21.8 not present.Please install the pixman devel package.
可以通过执行命令:apt-get install libpixman-1-dev
解决
0x03 测试运行
- 将firmware-analysis-toolkit/目录下的fat.py和reset.py移动到firmadyne/目录下:
mv fat.py ./firmadyne
mv reset.py ./firmadyne
- 修改fat.py中的执行权限、firmadyne的路径
firmadyne_path
以及root密码root_pass
chmod +x fat.pyvim fat.py
# 以下是fat.py中的内容#!/usr/bin/env python2.7import os
import pexpect
import sys# Put this script in the firmadyne path downloadable from
# https://github.com/firmadyne/firmadyne#Configurations - change this according to your system
firmadyne_path = "/home/hzy/firmware-analysis-toolkit/firmadyne"
binwalk_path = "/usr/local/bin/binwalk"
root_pass = "123456"
firmadyne_pass = "firmadyne"... ...
- 下载要模拟的路由器固件
要模拟的路由器为:WNAP320
在
https://www.netgear.com/support/product/WNAP320.aspx#Firmware%20Version%203.7.11.4
中下载固件文件假设我这里将固件文件重命名为 netgear.zip,并放在/home/hzy/firmware/目录下
- 测试运行
hzy@ubuntu:~/firmware-analysis-toolkit/firmadyne$ sudo ./fat.py
[sudo] password for hzy: __ _ / _| | | | |_ __ _ | |_ | _| / _` | | __|| | | (_| | | |_ |_| \__,_| \__| Welcome to the Firmware Analysis Toolkit - v0.2Offensive IoT Exploitation Training - http://offensiveiotexploitation.comBy Attify - https://attify.com | @attifyme[?] Enter the name or absolute path of the firmware you want to analyse : /home/hzy/firmware/netgear.zip
[?] Enter the brand of the firmware : Netgear
[+] Now going to extract the firmware. Hold on..
[+] Firmware : /home/hzy/firmware/netgear.zip
[+] Brand : Netgear
[+] Database image ID : 2
[+] Identifying architecture
[+] Architecture : mipseb
[+] Storing filesystem in database
[!] Filesystem already exists
[+] Building QEMU disk image
[+] Setting up the network connection, please standby
[+] Network interfaces : [('brtrunk', '192.168.0.100')]
[+] Running the firmware finally
[+] command line : sudo /home/hzy/firmware-analysis-toolkit/firmadyne/scratch/2/run.sh
[*] Press ENTER to run the firmware...
从[+] Network interfaces : [('brtrunk', '192.168.0.100')]
可以看到,启动了一个服务,可以通过192.168.0.100访问
接下里按Enter
键运行该固件,等运行完了以后就可以从浏览器访问了:
0x04 总结
主要还是参考了参考资料1,但是中间踩了很多坑,可以查阅参考资料3。
这个firmadyne还有其他的用法,可以参考下参考资料2。这篇文章就点到为止啦。
为了装这个分析环境,前前后后折腾了三个虚拟机。装软件和配环境是我的一生之敌!!(ಥ_ಥ)
By:hzy
0x05 参考资料
- 物联网设备的固件模拟环境搭建
- 嵌入式Linux固件模拟与安全分析系统Firmadyne交流
- Error:Traceback.
物联网设备固件分析:Firmadyne固件模拟环境搭建相关推荐
- 路由器逆向分析------路由器固件分析和动态调试环境搭建简述
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/70140865 01.路由器固件分析和动态调试环境搭建简述的原文 <Emula ...
- 路由器固件模拟环境搭建(超详细)
路由器固件模拟环境搭建 0X01 想说的话
- 物联网安全专题 | 浅谈物联网设备安全分析方法 — 软件篇
✦前 言✦ • 物联网(Internet of Things,IoT)是互联网的延伸,是智能设备.移动网络及社交网络的结合体,可以给使用者提供更优质的应用体验.物联网时代的到来引入了大量的物联网设备, ...
- 13、SRS4.0源代码分析之GB28181实验环境搭建
前言 严格的说SRS4.0正式发布版本中已经去掉了GB28181相关的代码(主要时因为该特性还有一些Bug需要修复),本文目的是记录之前学习和使用SRS GB28181推流处理的一些心得. 内容 一. ...
- 虹科物联网设备安全分析与防护平台——更智能的工业通信协议黑盒模糊测试
工业控制系统 (ICS) 可能成为大型工业企业的重大漏洞.攻击者如果发现系统中的漏洞,可以将其作为攻击向量,也可以将其用于受攻击网络中的横向运动,在不同系统之间传播攻击. 传统上,连接工业控制系统的计 ...
- 高通android智能平台环境搭建_编译流程分析,高通平台环境搭建,编译,系统引导流程分析参考...
高通有两个cpu,他们分别跑不同的系统,应用程序(ap)端是android系统,modem 端是高通自己的系统. 要编译出可供烧写使用的镜像文件需要三部分代码: 1) 获取经过高通打补丁的 andro ...
- php模拟环境搭建,PHP环境搭建最新方法
很多朋友对PHP环境很为难,经过多次尝试都无法正确配置 其实配置PHP环境并不难,掌握要领就会很轻松 对于初级用户和想简单配置PHP环境的朋友,本人提供一种方法和PHP环境文件 就会让您轻松拥有高性能 ...
- 01-数据可视化分析工具dataease-开发环境搭建
github拉取源码: https://github.com/dataease/dataease idea打开: 修改为本地maven环境: 等待依赖安装完成: 创建数据库: CREATE DATA ...
- 流媒体分析之srt 测试环境搭建
本文主要用ffmpeg 与srs 服务器大环境支持srt 测试: 1. 编译 ffmpeg 支持srt 协议,我们采用libsrt 编译libsrt库 git clone https://github ...
最新文章
- 10 过滤器和监听器
- 前端学习 -- Css -- 内联元素的盒模型
- Android官方开发文档Training系列课程中文版:Android的安全建议 .
- 二叉排序树与文件操作的设计与实现_堆排序就这么简单
- [css] 如何使用css实现鼠标跟随?
- BNUOJ 1207 滑雪
- 面试官真是搞笑!让实现线程安全的单例,又不让使用synchronized!
- 20170923在线编程之输入年、月、日输出这是一年的第几天
- Windows Phone开发(12):认识一下独具个性的磁贴 转:http://blog.csdn.net/tcjiaan/article/details/7313866...
- 软件测试论坛_进阶测试攻略——价值驱动的软件测试
- 微博android源码,新浪微博客户端源码 android
- socks5协议(rfc1928)
- 【zhasite】托业英语阅读技巧有哪些
- python写生日祝福语大全_【Python 1-6】Python教程之——数字
- Orge配置Debug - 在Mac上利用Homebrew安装指定版本的Cmake
- java libraries在哪_java.library.path在哪? | 学步园
- Multisim基础 示波器 波形沿Y轴正方向上移一格
- 学人工智能需要什么基础?
- 2011年华为企业业务的15件大事
- 签入/签出是什么意思?