网站首页/网络技术列表/内容

路由器固件不是硬件,而是软件,它的固件

网络技术2023-08-22阅读
网络故障(network failure)是指由于硬件的问题、软件的漏洞、病毒的侵入等引起网络无法提供正常服务或降低服务质量的状态。

1、路由器文件系统

我们通常所说的更新路由器是指更新路由器的固件。不同的路由器使用不同的硬件平台,操作系统和固件。通常,路由器的固件包含操作系统的内核和文件系统。

1. 1、路由器固件

路由器固件不是硬件,而是软件。在路由器中,通常将其固化在只读存储器中,因此称为固件。

在漏洞分析过程中,通常有两种获取路由器固件的方法:

一、从路由器制造商提供的更新网站上下载;

二、通过硬件访问,从路由器的Flash中提取固件。

路由器固件包含路由器中的所有可执行程序和配置文件信息。此信息对于我们分析和挖掘路由器漏洞至关重要。获取固件后,我们可以将文件系统与固件分开。

1. 2、文件系统

文件系统是操作系统的重要组成部分,也是操作的基础。不同的路由器使用不同的文件系统格式。根文件系统将打包为当前路由器使用的文件系统格式,然后组装为固件。

Squashfs是具有超高压缩率的只读格式文件系统,可以达到34%的压缩率。系统启动后,文件系统将保存在压缩的文件系统文件中。该文件可以以换回和访问其中文件的形式安装。当进程需要某些文件时,仅将压缩文件的相应部分解压缩。

Squashfs文件系统的常用压缩格式为GZIP,LZMA,LZO,XZ(LZMA 2)),它们在路由器中普遍使用。路由器的根文件系统通常遵循Squashfs的一种常用压缩格式。文件系统。将其打包以形成完整的Squashfs文件系统,然后与路由器操作系统的内核一起形成更新的固件。

2、手动提取文件系统

要分析路由器漏洞,必须在路由器中获取易受攻击的应用程序。文件系统是操作系统的重要组成部分,也是操作的基础。文件系统包含实现路由器各种功能的基本应用程序。例如,Web服务器是在家用路由器中实现的,因此用户可以通过Web访问路由器并管理路由器。可以从固件中提取文件系统,并且很难从路由器固件中提取文件系统。原因之一是不同的操作系统使用不同的文件系统。另外,路由器的文件系统压缩算法也不同。有些路由器甚至使用非标准压缩算法来打包文件系统。

家用双频路由器有用吗_小型家用榨汁机操作视频展示_家用路由器 操作系统

2. 1、查看文件类型

The

file命令可以通过定义的魔术签名来识别各种格式,包括常用的Linux / Windows可执行文件,DOC,PDF和各种压缩格式。

如果文件firmware.bin -----> firmware.bin:数据

在上面的示例中,file命令未找到与任何文件类型的匹配项,但这并不意味着固件是一种未被触及的文件格式。原因是file命令从给定文件的第一个字节开始。模式匹配将按照已建立的格式进行。

2. 2、手动确定文件类型

如果找不到符合要求的文件格式,则需要使用以下方法进行进一步分析:

文件系统魔术签名标头是指文件系统中包含的可识别字符的字符串。使用此字符串,表示文件可能包含某个文件系统。当然,如果要确定是否包含某个文件系统,则需要使用其他条件进行证明,即需要执行步骤2和3。

Windows应用程序以字符串“ MZ”开头,但并非所有具有此功能的文件都是可执行程序。它也可能是一个文本文件,但是它恰好以“ MZ”开头,因此只有一个功能,只需确定文件的类型是否有偏差即可。

2. 2. 1、检索文件系统魔术签名

基于每个文件系统的前几个字节提取文件系统标头功能。常用的文件系统标头功能如下:

检查是否有cramfs文件系统标头功能和魔术签名“ 0x28cd3d45”。由于我不知道文件组织是大端格式还是小端格式,因此需要进行第二次搜索:

字符串firmware.bin | grep`python -c'print“ \ x28 \ xcd \ x3d \ x45”'`

字符串firmware.bin | grep`python -c'print“ \ x45 \ x3d \ xcd \ x28”'`

如果它不是cramfs文件类型,则可以尝试确定它是否是Squashfs文件系统:

字符串fimware.bin | grep“ sqsh”或“ hsqs”或“ qshs”或“ shsq”或“ hsqt”或“ tqsh”或“ sqlz”等。

在这里,如果您在字符串firmware.bin中打印出hsqs | grep“ hsqs” ----->,我们找到了squashfs文件系统“ hsqs”的魔术签名头,但是我们不确定是否该文件包含squashfs文件系统,需要进一步确定firmware.bin是否为squashfs文件系统。

2. 2. 2、确定文件系统

进入hexdump -C firmware.bin之后| grep -n“ hsqs”,出现:

00240:00160090 68 73 71 73 9d 08 00 00 ab c0 ba 51 00 00 04 00 | hsqs .... ...... Q .......... |

您可以看到在偏移量0x160090(十六进制144193 6))上找到了“ hsqs”。

然后使用dd命令复制从0x160090开始的100字节数据。命令如下:

dd if = firmware.bin bs = 1 count = 100 skip = 1441936 of = squash

复制100字节数据的原因是因为squashfs文件系统的标头校验和不会超过100字节。

最后,使用file命令确认复制的文件南瓜的文件类型。

运行文件压缩:

squash:Squashfs文件系统,小字节序,版本4. 0,6164554字节,2205个inode,块大小:262144字节,

2. 3、手动解压缩文件系统

小型家用榨汁机操作视频展示_家用路由器 操作系统_家用双频路由器有用吗

在上面,我们已经知道firmware.bin包含squashfs文件系统,其偏移量为0x00160090(十进制144193 6),其大小为6164554字节。因此,可以使用dd命令复制数据块。

命令如下:

dd if = firmware.bin bs = 1 count = 6164554 skip = 1441936 of = kernel.squash

运行上述命令后,已成功提取属于squashfs文件系统的数据。下一个任务是在squashfs文件系统中还原根文件系统。

尽管Linux随附的file命令包含与squashfs文件系统有关的魔术签名头信息,但对于我们而言,深入了解文件系统还不够。

使用file命令的“ -m”参数加载自定义魔术签名文件并输出更多详细信息。

命令:file -m filesystems.hsqs hernel.squash

跳过打印,在firmware.bin中提取的kernel.squash使用LZMA压缩。

squashfs-tools工具可以在linux下安装,命令“ apt-get install squashfs-tools”,该工具目前仅支持GIZP,LZO,XZ格式,不支持LZMA格式。

您可以安装firmware-mod-kit进行解压缩。

git clone

sudo apt-get install build-essential zlib1g-dev libz1zma-dev python-magic

./ configure && make

然后在firmware-mod-kit目录中运行unsquashfs_all.sh kernel.squash


本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/tongxingongju/article-373755-1.html


当今,越来越多的业务应用运行于网络架构之上,保障网络的持续、高效、安全的运行,成为网络管理者面临的巨大挑战。

……

相关阅读