固件分析和解包
拿到固件后,第一步是对其进行解包分析。我们通常查找 busybox
可执行文件来判断固件的 CPU 架构(如 MIPS、ARM)、端序(大端或小端),以及是否开启了安全机制(如堆栈保护、NX)。busybox
一般位于 /bin
目录中。通过如下命令我们可以快速获取架构信息,本例中结果显示为 MIPS32 小端架构。
binwalk -Me WN579A3-WAVLINK-WO-2022-03-23-854d73f.bin
file busybox
用于识别可执行文件类型。通过这个命令我们可以判断 busybox
是哪种架构(如 MIPS、ARM)、位数(32/64位),以及是否为静态或动态链接。本例结果显示为:MIPS、32位、小端、静态链接的 ELF 可执行文件。
file busybox
readelf -h busybox
查看 ELF 文件头,进一步确认架构信息、字节序、入口点等关键信息。比如:
Class
显示是 ELF32Data
显示是 Little endian(小端)Machine
显示是 MIPS
这确认了我们之前用file
得出的结论。
readelf -h busybox
checksec busybox
用于检查二进制文件的安全特性是否开启,例如:
NX
(No eXecute,是否启用不可执行栈)PIE
(位置无关执行)Stack Canary
(堆栈保护)
这些信息可以帮助我们判断程序是否容易受到缓冲区溢出等攻击。本例中,大多数保护机制未启用,表明存在潜在的利用空间。
checksec busybox
我们使用自动化工具firmAE起不来考虑系统模拟或者用户模拟
系统模拟
启动项分析
启动项是指设备启动后自动执行的程序或脚本,通常用于初始化系统服务或前后端程序。我们一般在 /etc/init.d/
目录中查找这些启动脚本(以 .sh
为后缀)。在嵌入式设备中,常见的 Web 服务启动程序有 httpd
、lighttpd
、mini_httpd
等。发现相关脚本后,应进一步检查其配置文件路径和依赖项。
![image.png](/api/image/v2/20250616/danr2oh