前言
想学IoT安全,但前置知识过于庞杂,现有的教程往往默认读者有固件分析和逆向基础。我的基础并不好,几乎看不懂文章,不知道每一步在做什么,而系统补基础容易变成空中楼阁且劝退,因此陷入了两难的境地
这篇文章不分析漏洞,主要用于熟悉IoT安全的基本流程、环境搭建、固件解包与分析
环境搭建
固件获取
首先是通过漏洞编号确认路由器型号与固件版本,比如这篇文章的华为HG532 CVE-2017-17215 固件,得到一个二进制文件HG532eV100R001C01B020_upgrade_packet.bin,这就是整个设备的软件镜像
主要工具
固件分析用到的各种工具更适合Linux环境,因此我使用Ubuntu 24.04.4作为宿主机
binwalk:用于解包和分析固件,需要配套工具sasquatch
|
|
qemu:路由器固件大多是一套嵌入式 Linux 系统,适配路由器主机,无法在ubuntu下直接运行。为了让程序真正跑起来,需要用到QEMU。它模拟了固件运行所需的真实设备环境,翻译不同架构的指令
|
|
ida:静态分析
|
|
网络配置
固件分析
固件解包
需要通过解包从固件的二进制文件中中提取出文件系统。使用binwalk进行解包,解包后的文件系统在squashfs-root/目录下
这个命令的意思是binwalk会扫描文件里的特征,找到文件系统后递归扫描里面的内容
-
-e:尝试提取 -
-M: 提取后继续递归扫描里面的内容
|
|
进入 squashfs-root 后,可以看到类似普通 Linux 系统的目录结构。bin 和 sbin 中通常放可执行程序,etc 中通常放配置文件,lib 中通常放动态链接库
参考
Huawei Home Routers in Botnet Recruitment - Check Point Research
CVE-2017-17215-HG532命令注入漏洞分析-先知社区