BinWalk固件提取分析

一、 实验目的
1.理解binwalk工具的作用
2.掌握binwalk固件分析的常用命令

二、 实验环境
 虚拟机环境:VMware Workstation Pro
 操作系统:Kali linux
 实验工具: BinWalk相关软件

三、 实验原理及背景
1.固件(Firmware)
固件(Firmware)一般存储在设备中的电可擦除只读存储器、带电可擦可编程读写存储器(Electrically Erasable Programmable Read Only Memory,EEPROM)或者Flash中,它是嵌入式系统或者物联网产品中最为接近底层的软件。固件是一个系统最基础和最底层的软件。
在嵌入式硬件或者物联网设备中,固件是硬件设备的灵魂和大脑,用户通过固件安装软件,并控制设备。嵌入式设备和物联网设备除固件外,还有密钥和安装在固件中的其他软件,因此固件的安全性在嵌入式系统和物联网系统中起到至关重要的作用。固件升级变得越来越简单,固件程序与程序的区别也越来越小。

2.Binwalk
Binwalk是基于Kali Linux提供的一款固件分析工具。它内置了强大的特征码文件。用户可以借助其特征码扫描并识别固件中的各个文件,提取固件并进行分析。Binwalk还支持压缩数据的提取和解压。对于不能识别的固件,可以使用Binwalk提供的熵分析功能,帮助用户获取有价值的信息。同时,Binwalk还提供固件比对功能,帮助用户发现不同版本固件的差异。

四、 实验核心思路
1.利用BinWalk命令对固件进行分析
2.保存固件扫描结果

五、 实验步骤及截图
1.利用BinWalk命令对固件进行分析
打开kali linux虚拟机终端:

输入命令执行对固件firmware.bin的自动扫描:“binwalk code/firmware.bin”,“code/ /firmware.bin”是实验中固件的存放地址:

运行结果:

在终端输入“binwalk -e code/firmware.bin”,“-e”表示提取已知的文件及系统类型。这个命令可以按照预定义的配置文件中的提取方法从固件中提取探测到的文件及系统:

在终端输入“binwalk -Me code/firmware.bin”,“-Me”表示根据magic签名的扫描结果对固件进行递归提取:



选项“-d”和“–depth==”用于限制递归提取的深度,默认深度为8,仅当“-Me”选项存在时有效。在终端下输入“binwalk -Me -d 5 code/firmware.bin”,这个命令可以限制递归的提取深度为5:


终端输入“binwalk -I code/firmware.bin”。选项“-I”用于显示所有的扫描结果,包括扫描过程中被定义为“invalid”的项:




















终端输入“binwalk -W code/firmware.bin code/firmware2.bin”。选项“-W”对给定的文件进行字节比较,可以指定多个文件,这些文件的比较结果会按dexdump方式显示,绿色表示在所有文件中这些字节都是相同的,红色表示在所有文件中这些字节都是不同的,蓝色表示这些字节仅在某些文件中是不同的。该选项可以与“–block”、“–length”、“–offset”及“–terse”选项一起使用,由于对比时间过长,可选择按“Ctrl+C”终止对比:


选项“-W”与“–block”和“–length”一起使用时,可以对指定模块中某一固定长度的数据进行比较,从而节省不必要的比较时间。输入“binwalk -W --block=8 --length=64 code/firmware.bin code/firmware2.bin”这个命令用于对模块8中前64字节的数据进行比较:


BinWalk执行结果的内容通常是很多的,所以它往往是以文件方式来保存记录。选项“-f”和“–log=”用于将扫描结果保存到一个指定的文件中。如果不与“-q”或“–quit”选项合用,会同时在屏幕以及日志文件中输出。在终端下输入“binwalk -f code/firmware.log -q code/firmware.bin”后,仅在code/binwalk.log文件中可以看到结果:

2.保存固件扫描结果
打开binwalk.log文件,可以看到已保存的扫描结果:


六、 实验总结
binwalk是一个可靠且流行的工具,用于处理运行某种操作系统的设备的固件。它被谈论的很多,binwalk虽然不是固件分析工具的全部,但却非常有用和简单。
默认情况下, binwalk会在高层级中遍历二进制文件中的所有字节,寻找魔术字节。如果找到一个,它将在打印到stdout的表上进行报告。
它还可以“分割”或“提取”它找到的每个片段,因此可以单独查看它。使用-e标志指定它应该提取文件,而不是将它发现的所有内容打印到stdout。根据运行binwalk的文件的文件名,提取的文件全部进入名为_filename.extracted(或_filename- [int] .extracted,如果该文件夹已存在)的目录中。
由于它的性质,几乎肯定会遇到误报。文件越大,得到误报的可能性就越大。巧合的是,文件将包含给定顺序的魔术字节,以防binwalk的魔术字节解析器把所报告的内容都误认为是有效的。
所以,当使用binwalk时,通常可以根据运行的环境估计出能看到什么文件类型。如果正在查看的设备运行的是嵌入式Linux,那么就会获得某种ROM文件系统,不过也可能是squashfs、cramfs或jffs2。还可以假设你将看到zImage或uImage块,通常情况下可能还希望看到引导加载程序映像。
本次的binwalk固件提取分析实验,帮助我理解了binwalk工具的作用与功能,并对binwalk固件分析的常用命令和对应的结果有了一定的掌握,这些都为未来的关于固件分析的深入学习打下了基础。

物联网安全实验3-BinWalk固件提取分析相关推荐

  1. 【物联网硬件安全】二、固件分析-固件提取

    上节初步介绍一些硬件基础知识和分析硬件所需要的基本工具,本篇将讲述利用编程器直接读取芯片固件的方法. 为了读取 Flash 芯片的内容,有以下两种常用方式: 1.直接将导线连接到芯片的引脚,在通过飞线 ...

  2. Firmware固件提取及分析技术

    概念 固件(firmware)是一种写入硬件设备的软件,作用是对应用和各项系统功能实时控制.固件中包含底层代码,这些代码能实现软件对硬件的操作.运行固件的设备称为嵌入式系统,嵌入式系统的硬件资源在存储 ...

  3. Binwalk固件分析利器

    Binwalk介绍 Binwalk是一个固件的分析工具,旨在协助研究人员对固件非分析,提取及逆向工程用处.简单易用,完全自动化脚本,并通过自定义签名,提取规则和插件模块,还重要一点的是可以轻松地扩展. ...

  4. 物联网固件逆向分析记录(初步概念记录)

    20201206 - 1. 引言 机缘巧合,自己居然有生之年又接触到了这个东西.但是多学点东西也没什么坏处,就当扩宽视野了:不过,以前这种事情,都没有记录,挺可惜的,所以这次记录一下. 关于物联网固件 ...

  5. 拿走不谢!固件逆向分析过程中的工具和技巧(上)

    将固件逆向分析,然后再将逆向分析后的内容转换为有用的东西,这个过程对于所有人来说都是一个耗时又耗力的过程.有时即使文件出现在你面前,你也无能为力,比如你可能会面临专有(几乎没有文档记录)的文件格式.奇 ...

  6. 拿走不谢!固件逆向分析过程中的工具和技巧(下)

    上文,我们讨论了固件逆向分析过程中的部分工具和策略,这篇我们接着介绍如何分析被加密的固件以及分析策略. hex editor的使用 hex editor是一款使用简单的十六进制编辑工具,能快速对数字进 ...

  7. 固件提取-flash芯片

    固件 路由flash 固件提取 固件模拟 flash 固件 固件:也称 firmware, 通常用于嵌入式领域,泛指运行于硬件之上的操作系统软件.刷固件或者更新固件是指删除原系统,更换新的系统软件. ...

  8. 计算机网络协议教案,计算机网络实验教案(6)网络协议分析-IP协议3.pdf

    计算机网络实验教案(6)网络协议分析-IP协议3.pdf (2页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <计算机网络实验> ...

  9. 2017-2018-2 20155228 《网络对抗技术》 实验四:恶意代码分析

    2017-2018-2 20155228 <网络对抗技术> 实验四:恶意代码分析 1. 实践内容 1.1 系统运行监控 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部 ...

最新文章

  1. 工业物联网的应用领域与方向
  2. linux libcurl 库使用方法
  3. thinkphp5 mysql uuid_TP6_基类控制器如何向中间件传参
  4. VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT连接方式)
  5. C++ Primer 5th笔记(chap 15 OOP)继承的构造函数容器
  6. 读取数据库信息构建视图字段的备注信息,方便程序代码生成
  7. sqlserver-事务处理
  8. 机器学习实战(用Scikit-learn和TensorFlow进行机器学习)(九)
  9. 都说不要装箱,那装箱到底带来了什么开销?
  10. SpringBoot中mybatis配置多数据源
  11. MYSQL存储过程中 表名 使用变量
  12. 美食海报设计技巧?有机轻食饮食新趋势!
  13. 【分享】regsvr32 不是内部或外部命令,也不是可运行的程序或批处理文件
  14. 2013-开始新的一年
  15. Git(3):git clone远程GitHub仓库代码出现“Permission Denied (publickey)”问题
  16. 嵌入式系统开发笔记94:使用FlyMcu连接STM32开发板
  17. [ArcPy百科]第一节:何为arcpy
  18. OFD文件在线阅读器
  19. 遗传算法原理和Python实现
  20. 数学建模之SPSS应用——聚类分析

热门文章

  1. python内网传输文件,无需下载其他软件
  2. 铂顿安全手机,高端商务人士的安心之选
  3. 支付宝代志远:HBase系统故障恢复的优化实践分享
  4. 离子交换树脂技术干货
  5. 解决关于笔记本电脑更新后USB接口没有反应的问题
  6. java计算机毕业设计校园周边美食探索及分享平台源代码+系统+数据库+lw文档
  7. 下载Bing动态壁纸
  8. 《富爸爸穷爸爸》书摘-税收的历史和公司的力量
  9. JAVA计算机毕业设计影城票务管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
  10. ELK系列(十)、ES中文分词器IK插件安装和配置远程词库热加载