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

2023-10-26

20201206 -

1. 引言

机缘巧合,自己居然有生之年又接触到了这个东西。但是多学点东西也没什么坏处,就当扩宽视野了;不过,以前这种事情,都没有记录,挺可惜的,所以这次记录一下。

关于物联网固件的分析,涉及的东西还是很多的,可能某个领域的小伙伴会专门去攻击他web方面的漏洞,通过这个角度来找到信息泄露,远程执行的一些漏洞。但是完整的固件分析并不是这么片面,涉及的东西还是很广的。

所以,这里简单记录一些,学习到的一些东西,不是专业认识,仅仅是在看了几篇文章,几篇论文,记录下自己的学到的东西。

2. 固件分析的目的

那么首先来分析一下,固件分析有什么目的呢?本质上,不管是geek自己有兴趣想玩一玩这个固件,或者安全人员为了分析这个产品是否存在漏洞,我觉得都是固件分析的目的。当然,作为安全的从业人员,分析固件是否安全,上层的应用程序是否存在漏洞,这些是主要的目的。

但是这种笼统的分析太概念化了,我们都是知道是为了安全,即使是有人为了破解某些功能,这也应该算是厂商对自己的产品限制的一种安全;所以,单单说是为了安全,还是不够的;应该再进行细分。这里,我就我了解的东西,来列举一下,当然肯定是不全的,后续再看到有关的内容的时候(有生之年),再继续添加上,这里按照从底层到上层的角度来进行划分。

  • 查看厂家对固件的保护,是否封闭了UART及JTAG等引脚,这部分从硬件物理上防护了固件内容
  • 固件是否加密,例如使用了简单的XOR加密方式
  • 固件文件系统是怎么组织的,是否可以直接提取一些敏感信息,例如密码等
  • 固件使用的某些通用库,例如openssl是否存在漏洞;Telnet
  • 固件所支持的某些协议库,例如物联网的一些协议,是否存在漏洞,例如通过fuzz测试可以发现一些拒绝服务的漏洞
  • 固件所支持的web服务,密码是否可窃取,是否存在漏洞,例如远程执行,信息泄露

以上,就是结合我自身的经验和理解,总结的一些问题,肯定还有其他的东西。

3. 固件分析的流程

从前文中可以看到,固件分析,或者说固件的漏洞挖掘这种过程,从最开始的提取固件到上层应用的分析,这是一个整体的流程,可能你可以直接通过网站上下载的方式拿到固件,那么也就省去了从硬件(路由器,摄像头)的层面上进行提取;但这里还是要记录一下,有时候也不是那么简单就能拿到。

3.1 固件分析的大致流程

在文章[1]中,列举了三个目标,可以解释为大致的工作流程:

  • 硬件拆解,了解构造
  • 固件分析,了解执行
  • 逻辑测试,查找缺陷

再展开来说,那就是:

  1. 硬件拆解,了解构造,从UART中取出固件(应对无法下载固件的情况)
  2. 固件分析,了解执行,了解所使用的文件系统、内核等信息,并从中取出完整的固件
  3. 逻辑测试,查找缺陷,这部分包括固件本身使用的通用库的漏洞,或者说IOT设备功能上的漏洞

本文中,将具体针对流程1,2进行分析,关于上层的漏洞,暂时不进行展开。

3.2 硬件拆解(获取固件)

4. 固件分析环境搭建

Getting started with Firmware Emulation for IoT Devices
该文章,利用FAT(firmware analysis toolkit)搭建了一个web的模拟环境,在百度上搜索也能看到非常多的这种文章,可以具体进行搜索。

一个系列文章,从二进制模拟到固件模拟,然后最后模糊测试。
Emulating Embedded Linux Devices with QEMU
利用Qemu模拟嵌入式设备的二进制程序(qemu的用户模式)
Emulating Embedded Linux Systems with QEMU
通过将固件分解出来,然后将其转移到QEMU虚拟机中,而且此时使用的内核和文件系统都是预编译的,不一定时固件自带的。(这里涉及到模拟固件运行的多种方式)

Fuzzing Embedded Linux Devices
模糊测试网页。

(未完待续)

参考文献

[1]小米路由器3C固件逆向与测评-新手向

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

物联网固件逆向分析记录(初步概念记录) 的相关文章

  • Request和ThreadLocal

    Web容器中有三个周期 request Httpsession application 其中request是客户端发出的一个请求 这个request的载体就是一个 线程 实际等同于一个线程的生命周期 Request是封装在线程上面一个抽象概

随机推荐

  • windows下pip安装mysqlclient失败

    环境 windows8家庭版 python3 6 7 在虚拟环境中pip install mysqlclient报错 解决方案 下载地址 ctrl f键入mysqlclient 找到对应的版本即可 博主是python3 6 7 所以选择了倒
  • 2021 程序媛跳槽记:学习计划篇

    三妹跳槽系列文章 2021 程序媛跳槽记 百度阿里字节等各大厂面经篇 2021 程序媛跳槽记 必刷LeetCode算法题 附解题报告 坦白说 我这个人不算聪明 基础也不咋样 这次跳槽我一开始是很没信心的 甚至想把这次尝试当做试水 如果受打击
  • Go_数组遍历、最大值、求和、多维数组

    数组 数组就是用来存储数据的容器 存储多个数据时数据类型要一致 如果想要保存任意类型数据 需要声明为接口类型数组 数组定义完成后 可以对数组进行赋值操作 数组是通过下标来进行操作的 下标的范围是从0开始到数组长度减1的位置 特点 数组是一种
  • 关闭windows defender教程

    由于windows自带的防护软件在后台占用大量内存 然后可以使用其他第三方软件来 然后本人使用的是火绒 这里平时的内存占用了不到100MB 然后其实这里本来应该插入一个windows defender的占用内存 我记得是在200 MB 反正
  • git 上传 github报错 (Permission denied)

    文章目录 结论 起因 新建github仓库 本地仓库初始化 结论 ssh config 中 Host 值可以随意写 cat git config 中 remote origin url git B test demo git url 值 后
  • 微服务讲堂--【5】系统自举

    这里的 系统自举 借用了操作系统的概念 在操作系统启动之前 计算机要先加载自举程序 再由自举程序加载操作系统的启动程序 整个详细过程不在这里描述 可以在网络查阅相关资料 为什么要在微服务系统中特别提及系统自举这个概念呢 因为这内容很重要 而
  • Unity 勾选development Build 区别,引起的Bug,记录一下

    Unity 勾选development Build 区别 引起的Bug 记录一下 问题 编辑器运行正常 安卓真机 Build And Run 就出现了奇怪的问题 类似数组数据出现了误差 勾选development Build 想要真机调试的
  • 第十四届蓝桥杯校内模拟赛(第二期) C++题解分享

    本人是在学校机房参加的第二期模拟赛有些题目没有忘海涵 若有什么好的建议可以提出来来分享这是本小白第一篇CSDN希望能帮助到大家 第一题没啥好说的就是直接暴力枚举 这边直接上代码 稍微注释 答案 2048 include
  • CTF—web题库笔记(难度2)

    CTF web题库笔记 难度1 CTF web题库笔记 难度4 本篇文章共12道题 目录如下 目录 1 warmup 2 supersqli 3 Web php include 4 php rce 5 Web php unserialize
  • HDFS分布式文件系统(2)Java API操作HDFS

    文章目录 1 创建Maven项目 2 添加相关依赖 3 创建日志属性文件 4 启动集群HDFS服务 5 在HDFS上创建文件 6 写入HDFS文件 6 1 将数据直接写入HDFS文件 6 2 将本地文件写入HDFS文件 7 读取HDFS文件
  • Java中使用this调用构造方法

    在 Java 中 可以使用this 关键字来调用同一个类中的其他构造方法 这种方式通常被用于避免代码重复 或者在构造方法中需要进行额外的初始化操作时 在一个类中 可以定义多个不同参数列表的构造方法 如下所示 public class MyC
  • Submitting multiple batch scripts to LSF

    原文链接 https hpc ncsu edu Documents lsf scripts php Many workflows involve submitting multiple compute jobs with slightly
  • D盘新建删除移动文件需要管理员权限怎么办?

    问题描述 好像是我在进行一次d盘大瘦身之后 Program Files中的进行新建 删除时候就变得需要管理员权限了 但是d盘的其他文件夹就可以正常操作 唯独这一个Program Files 这让我很不爽 所以就想办法解决嘛 解决办法 网上说
  • 支付宝商户支付接口接入流程

    支付宝商户支付接口接入流程 详细说明支付宝商户支付接口接入流程和注意事项 便于大家在对接过程中少走弯路 实现快速对接 目前网上也有资料 这些资料不够完整全面 导致在对接过程中也会出现一些问题 其中支付功能主要包括 支付 APP支付 WAP支
  • linux如何获得宝塔账号密码信息

    在ssh终端输入 etc init d bt default 会得到如下信息
  • 14 Binder通信之应用层AIDL实现示例

    Binder通信之应用层AIDL实现示例 一 什么是AIDL AIDL Android Interface Definition Language 即Android接口定义语言 Android系统中 每个进程都运行在一块独立的内存中 在其中
  • 最小生成树的权值之和-Prim算法

    问题描述 已知含有n个顶点的带权连通无向图 采用邻接矩阵存储 邻接矩阵以三元组的形式给出 只给出不包括主对角线元素在内的下三角形部分的元素 且不包括不相邻的顶点对 请采用Prim算法 求该连通图从1号顶点出发的最小生成树的权值之和 输入形式
  • 8-NodeJS基础

    Node Node是一个基于Chrome V8引擎的 javaScript代码运行环境 什么软件可以运行javaScript 它就是javaScript的运行环境 Node js是运行在代码环境之上的语言 由ECMAScript 和模块的A
  • go template使用

    示例 func tmpl w http ResponseWriter r http Request t1 err template ParseFiles test html if err nil log Fatal err t1 Execu
  • 物联网固件逆向分析记录(初步概念记录)

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