物理网安全-文件系统

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 物理网安全-文件系统

接口识别/调试


工具:SDR、万用表、烙铁、热风枪、烧录座等等,土豪可以再买个示波器、电子显微镜;一些使用的命令行级别的工具,如file、hexdump、strings、dd、lzma、7z等

接口有UART、JTAG、I2C、SPI等


UART(通用异步接收器发送器)


通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,通常称作UART) 是一种串行异步收发协议,可将要传输的数据在串行通信与并行通信之间加以转换,应用较为广泛;

UART是一种硬件组件,允许两个硬件外围设备之间的异步串行通信。它们可以位于同一块电路板上,也可以位于两个不同的设备之间,可以允许通过串行读取/写入设备;

UART主要是用于主机与辅助设备之间通信,如:音响and外接ap之间;

数据包:

数据包由以下几个部分组成:

1、起始位:表示传输数据开始。通常是低脉冲(0),可以在逻辑分析仪中查看。

2、消息:要以八位格式传输的实际消息,如:传输值为A(十六进制-0X41),在消息中被传递为0、1、0、0、0、0、0、和1。

3、奇偶校验位:根据情况,大多数现实生活中无关紧要,设备都是未使用校验位。奇偶校验位用于通过计算消息中1或0的数量,来执行错误和数据损坏的检查,并根据奇校验和偶校验来表明数据传输是否正确。注:校验位仅用于数据损坏检查和验证,而不用于实际校验。

4、停止位:表示结束的标志。通常是高脉冲(1)实现,但也可以由多个高脉冲实现。

大多数设备都是使用8N1配置,此配置代表8个数据位、无验证位、有一个停止位。

在分析的时候也会用到一些设备,逻辑分析仪;

逻辑分析仪是一种可以显示数字电路中各种信号的电平的设备。

如:Salesa逻辑分析仪、Open Workbench逻辑分析仪等

 

为了方便调试,很多iot的设备都会把UART引脚引到PCB上,

 

上图标注的四个就是UART的四个引脚位置, 每个引脚都是有自己的作用;

VCC:供电引脚,通常电压为3.3-5V,如设备没有供电保护,这个引脚一般不接电源,通过转接口进行供电,相对安全一些;

GND:接地引脚,表示负极;

Rx:接收引脚,从另一端接收数据至设备;

Tx:发送引脚,将数据从设备传输到另一端;

注:通过对芯片具有不同功能的引脚输入不同的高低电平,完全对主设备的控制和调试;


JTAG 介绍


JTAG属于微控制器调试接口。微控制器具有在运行期间使用指定引脚进行调试的规定,这些引脚连接到电路板上的引脚。这些引脚(端口)由开发人员和设计人员用于调试,读/写固件和微控制器内部存储器,生产后控制/测试微控制器引脚。这使得调试端口成为最关键的攻击面之一,因为它为攻击者提供了强大的功能和访问权限。除了JTAG之外,还包括cJTAG、SWD。

TAP包含5个信号接口:

1、TCK:为TAK操作提供一个独立的基本的时钟信号

2、TMS:用来控制TAP状态机的转换

3、TDI:是JTAG指令和数据的串行输入端。

4、TDO:是JTAG指令和数据的串行输出端

5、TRST:是JTAG电路的负位输入信号,低电平有效

注:TAP控制器共有16种状态。

JTAG提供多种接口标准,常见的有10针、14针、16针、20针

注:除了这两种还有一些其它的可以参考我以前的文章;


调试UART


方法大同小异,不在此阐述;

参考链接:https://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458297913&idx=1&sn=7a62e83aeb03466e113fd9cbdee7b024&chksm=b18196b386f61fa510f01f7605d3446145dedac15e9891ab3ab5ae9ac9c0c109fbaece62dbd6&scene=27


文件系统


我们将固件逆向以查看其内部组件。固件中的内部组件包括 boot-loader、内核、文件系统以及其他内容。其中我们最感兴趣的是文件系统也是作为突破口的地方,因为文件系统中保存了我们需要的所有信息;

固件是一个二进制文件压缩包,而文件系统只是其中的一个组件,存储在二进制文件的特定偏移地址中,且具有一定的尺寸。然而,此时我们还不知道关于固件中文件系统的任何信息,包括其偏移量和尺寸。为了找到这些信息,需要使用 hexdump 和 grep 等工具来搜索我们所关注内容的特征信息;


SquashFS文件系统


简述


SquashFS是一套供linux内核使用的只读压缩文件系统,压缩率高,遵循GPL开源协议;

对于iot等嵌入式设备来讲,使用SquashFS可以降低成本;

使用NAND闪存作为存储介质的嵌入式设备中,使用SquashFS前提是内核要支持SquashFS,同时还要支持MTD字符设备和块设备;

SquashFS适用于长时间开机的设备且对稳定性要求较高的,所以物联网设备多采用SquashFS;


特点


· 数据(data),节点(inode)和目录(directories)都被压缩

· 保存了全部的 32 位 UID/GIDS 和文件的创建时间

· 最大支持 4G 文件系统

· 检测并删除重复文件


标准


标准固件大端序模式为sqsh,标准固件小端序模式为hsqs,LZMA压缩下的大端序模式为sqlz,3.3版本的Squashfs文件系统在LZMA压缩下的大端序模式为qshs,部分非标准固件小端序模式为shsq,DD-WRT固件小端序模式为hsqt,DD-WRT固件大端序模式为tqsh;


SquashFS文件系统判断


binwalk DVRF_v03.bin

 

项目地址:https://github.com/ReFirmLabs/binwalk

工具获取:https://www.123pan.com/s/s0u0Vv-XgRwd提取码:1JsH


JFFS2 文件系统


简述


JFFS2 是 RedHat David Woodhouse 在 JFFS 基础上改进的文件系统,是用于微型嵌入式设备的原始闪存芯片的实际文件系统。。


文件头标识


JFFS2文件系统通常使用"0x1985"作为头部特征标识符;


结构


JFFS2在闪存介质上存在两种类型的结构(jffs2_raw_inode和jffs2_raw_dirent),jffs2_raw_inode包含文件的管理数据,jffs2_raw_dirent用于描述文件在文件系统中的位置;

真正的数据存储在jffs2_raw_inode节点的后面,大部分的数据都是在系统挂载之后建立起来的;这两种类型的结构由公共的文件头结构,jffs2_unknown_node;

jffs2_unknown_node结构中,有一个jint32_t类型和hdr_crc变量,代表了文件头部中其他字段的CRC(循环沉余效验)值;

JFFS2是使用CRC来验证存储数据的正确性的;


特点


· 优点使用了压缩的文件格式。最重要的特性是可读写操作。

· 缺点JFFS2 文件系统挂载时需要扫描整个 JFFS2 文件系统,因此当 JFFS2 文件系统分区增大时,挂载时间也会相应的变长。使用 JFFS2 格式可能带来少量的 Flash 空间的浪费。这主要是由于日志文件的过度开销和用于回收系统的无用存储单元,浪费的空间大小大致是若干个数据段。JFFS2 的另一缺点是当文件系统已满或接近满时, JFFS2 运行速度会迅速降低。这是因为垃圾收集的问题。


加载步骤


· 步骤 1. 扫描整个芯片,对日志节点进行校验,并且将日志节点全部装入内存缓存。

· 步骤 2. 对所有日志节点进行整理,抽取有效的节点并整理出文件目录信息。

· 步骤 3. 找出文件系统中无效节点并且将它们删除。

· 步骤 4. 最后整理内存中的信息,将加载到缓存中的无效节点释放。


注:


因为JFFS2是一种日志文件系统,所以不论电源以那种方式在任何时间停止供电,JFFS2都可以保持数据的文章性;

当系统因为突然掉电重启时候,JFFS2会自动将系统恢复到掉电前的一个稳定状态(文件系统在稳定状态之后的改变将无法进行恢复);

JFFS2针对NOR闪存和NAND闪存设备都提供了掉电保护功能,这可以使用户的数据更加稳定和安全,不用担心数据因为断点丢失和无法恢复;

所以嵌入式系统很适合使用这两种闪存介质;


YAFFS2 文件系统


简述


 yaffs2 是专门为 NAND Flash 设计的嵌入式文件系统。它采用的是日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外掉电对文件系统一致性和完整性的影响。

YAFFS2(Yet Another Flash File System)闪存文件系统,是唯一一个专为NAND闪存设计的文件系统;

YAFFS2使用独立的日志文件来跟踪文件系统内容的变化;

YAFFS有两个版本:YAFFS和YAFFS2;

§ YAFFS只支持页面大小为512B(小页)的NADN闪存

§ YAFFS2是YAFFS的升级版本,向下兼容NADN闪存的情况下,也能很好的支持页面大小为2KB(大页)的NADN闪存;

当系统掉电重启后,YAFFS2和JFFS2不同,YAFFS2不像JFFS2那样使用旧文件对新文件进行覆盖,YAFFS2针对已写入的部分使用新的文件,针对未写入的部分使用旧的文件;

这个方式增强掉电时未写入文件的安全性能,在写入新文件时,不会因为掉电而导致文件丢失等,而是把这部分新写入的文件完好的保存;


优缺点


· 优点专门针对 NAND Flash,软件结构得到优化,速度快。使用硬件的 spare area 区域存储文件组织信息,启动时只需扫描组织信息,启动比较快。采用多策略垃圾回收算法,能够提高垃圾回收的效率和公平性,达到损耗平衡的目的。

· 缺点没有采用压缩的文件格式。当包含的内容相同时, yaffs2 镜像文件要比 jffs2 镜像文件大。


USBIFS 文件系统


简述


懒得写了,对不起,555


CramFS 文件系统


头特征


Cramfs文件系统头部特征字符为"0x28cd3d45"


简述


CramFS文件系统是专门针对闪存设计的只读、压缩的文件系统,它不需要一次性地将文件系统中的所有内容解压到RAM中,而是在系统需要访问某个位置的数据时,马上计算出该数据在CramFS中的位置,并将其解压到RAM中,然后通过内存访问来获取数据。也就是说,在使用CramFS时,如果嵌入式设备需要储存暂时性的数据,就必须另外保留一个闪存空间进行储存。

cramfs 是针对 Linux 内核 2.4 之后的版本所设计的一种新型文件系统,使用简单,加载容易,速度快。


优缺点


· 优点将文件数据以压缩形式存储,在需要运行时进行解压缩,能节省 Flash 存储空间

· 缺点由于它存储的文件是压缩的格式,所以文件系统不能直接在 Flash 上运行。同时,文件系统运行时需要解压数据并拷贝至内存中,在一定程度上降低读取效率。另外 cramfs文件系统是只读的。

文件系统手动提取

系统命令

作用

选项

file

用于文件类型识别

-L:查看链接文件

grep

用于查找文件里符合条件的字符串

-i:忽视大小写 -s:不显示错误信息 -a:不忽略二进制数据

hexdump

将二进制文件转换为ASCII、八进制、十进制、十六进制格式进行查看

-C:输出规范的十六进制和ASCII码 -n length:格式化输出文件的前length个字节 -s:从偏移量开始输出

strings

在对象文件或二进制文件中查找可打印的字符串

-n:显示的最少字符数 -a:扫描整个文件

dd

从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出

if=文件名:指定输入文件 of=文件名:指定输出文件 bs=bytes:设置输入/输出块大小为bytes字节 skip=blocks:从输入文件开头跳过blocks个块后再开始复制

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
存储 算法 Unix
文件系统基础 (二)——文件的物理结构
文件系统基础 (二)——文件的物理结构
149 1
|
6月前
|
SDN
磁盘和文件系统管理
磁盘和文件系统管理
磁盘和文件系统管理
磁盘和文件系统管理实验
磁盘和文件系统管理实验
46 0
|
存储 IDE Linux
|
存储 缓存 固态存储
磁盘存储和文件系统| 学习笔记
快速学习磁盘存储和文件系统
磁盘存储和文件系统| 学习笔记
|
存储 Linux 索引
磁盘文件系统二
磁盘文件系统二
磁盘文件系统二
|
存储 安全 Linux
磁盘文件系统三
磁盘文件系统三
磁盘文件系统三
|
存储 固态存储 索引
磁盘文件系统一
磁盘文件系统一
磁盘文件系统一
|
Linux
磁盘及文件系统管理_学习笔记
时间:2017.12.01作者:李强参考:man,info,magedu讲义,神奇的internet声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好。
1030 0