首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >路由器固件解包打包与后门防御

路由器固件解包打包与后门防御

作者头像
逍遥子大表哥
发布2025-07-28 14:56:42
发布2025-07-28 14:56:42
1.2K0
举报
文章被收录于专栏:kali blogkali blog

路由器已经是我们生活中必不可少的网络设备之一了。有不少的小伙伴喜欢捣腾路由器系统。喜欢在路由器系统中安装各种插件来丰富“网络生活”,但是你知道吗?你的路由固件真的安全吗?本文就让我们一起来看看如何反编译路由器的固件吧。

实验环境

  • kali2022.4
  • 华硕路由器固件RT-ACRH17

Binwalk介绍

Binwalk是一款快速、易用,用于分析,逆向工程和提取固件映像的工具。在CTF的MISC类题型和IOT安全的固件解包分析中应用比较广泛。

🌈查看帮助

代码语言:javascript
复制
binwalk -h
🐼扫描固件

binwalk的主要功能 - 也是迄今为止最受欢迎的功能。Binwalk可以扫描许多不同嵌入式文件类型和文件系统的固件映像,通过扫描能够智能的发现目标文件中包含的所有可识别的文件类型。

代码语言:javascript
复制
binwalk RT-ACRH17_3.0.0.4_982_Merlin_v1.3.2.trx

通过扫描固件,我们可以看到主要有三部分。Flattened 目录树、LZMA压缩数据、 Squashfs文件系统。

🐻解包

我们可以通过binwalk -e命令对固件进行解包,效果如下。

代码语言:javascript
复制
binwalk -e RT-ACRH17_3.0.0.4_982_Merlin_v1.3.2.trx --run-as=root

进入到对应提取后的目录查看提取后的文件,对lzma压缩后的数据解压后得到120这一个文件,再对120进行binwalk操作。

当然解包后,路由器的系统文件我们也能一目了然。

🐮搜索字符串
代码语言:javascript
复制
binwalk -R "ASUS" RT-ACRH17_3.0.0.4_982_Merlin_v1.3.2.trx
🧸打包固件

如上,我们可以对路由器的固件进行自我修改。如添加相关远程ssh登录的代码。或者修改了路由器中logo或者图片等信息。这时我们就需对固件重新打包了。具体操作如下:首先我们需要将Flattened LZMA这两个分区的数据提取出来。因为这两个数据是不能修改的,只有Squashfs的数据是可以修改的。命令如下

代码语言:javascript
复制
dd if=RT-ACRH17_3.0.0.4_982_Merlin_v1.3.2.trx of=head.bin bs=1 skip=0 count=2139456

🎉命令说明

if是原固件,of是输出文件,bs是单位长度,skip是偏移量,count是分区大小(一般为Squashfs的大小。)

切好之后生成head.bin文件,我们就有了一个头,只需要再把我们编辑的部分打包后,和头拼到一起就行了。

代码语言:javascript
复制
mksquashfs squashfs-root rootfs.bin -comp xz

最后将编译好的rootfs.bin的文件和切好的head.bin文件放到一起

代码语言:javascript
复制
cat head.bin rootfs.bin > asus.bin

到此固件修改完成。同样的理论上openwrt都是一样的。

总结

binwalk的功能总体来说是比较强大的。在CTF比赛中,我们可以分离出藏在图片中的相关信息。在路由固件打包方面相对比较麻烦,这时我们可以利用firmware-mod-kit这款工具快速的完成。在下期文章中,我们将为你呈上firmware-mod-kit的使用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 kali笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验环境
  • Binwalk介绍
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档