智能设备固件分析的常用方法

获取和分析固件

获取固件

  • 从供应商下载网站
  • 在设备更新期间抓包捕获
  • 直接从硬件提取

分析固件文件

在* .bin文件上运行“file”命令

我们正在寻找文件返回作为“数据”

验证MD5签名,如果你有它

在*.md5文件上运行“cat”命令在*.bin文件上运行“md5sum”命令

对* .bin文件运行“strings”

“strings -n 10 xyz.bin> strings.out”“less strings.out”运行字符串可以更深入地了解文件

对* .bin文件运行“hexdump”

“hexdump -C -n 512 xyz.bin> hexdump.out” “cat hexdump.out” 运行hexdump可以帮助识别固件版本的类型

“binwalk”将是用于分析,反向工程和从固件映像中提取数据的主要工具之一

“binwalk xyz.bin”我们正在寻找binwalk来识别正在使用的文件系统的类型,例如。 squashfs文件系统

从固件文件中提取文件系统

对固件文件运行binwalk

“binwalk xyz.bin” 同样,我们正在寻找binwalk来希望识别文件系统

使用“dd”提取filesystme

假设binwalk已经识别了一个有效的文件系统,例如squashfs,我们可以使用“dd”作为一种方式来提取文件系统 “dd if = xyz.bin bs = 1 skip = 922460 count = 2522318 of = xyz.squashfs”注意:跳过和计数值将因具体的bin文件而异

假定文件系统是squashfs,提取文件系统后,我们可以通过运行“sasquatch”来扩展内容,

“sasquatch xys.squashfs” 通过“cd”命令进入“squash-root”,并且看看能不能发现一些有趣的事情 *一些例子包括: /etc/ssl /etc/passwd /etc/shadow .ssh/authorized_keys

使用固件修改套件

固件修改工具包可用于尝试提取不是传统squashfs文件系统的文件系统

通常,如果在固件文件上运行hexedit,您将在文件的开头看到“sqsh”,但是如果您看到类似“shsq”的内容,文件系统可能已被修改。

在我们dd固件文件解压缩squashfs文件系统后,我们可以尝试运行“unsquashfs”

“unsquashfs xyz.squashfs如果这不工作,我们还可以尝试命令“unsquashfs_all”“unsquashfs_all.sh xyz.bin”假设成功,您可以查看文件系统在“fmk / rootfs”您也可以简单地运行fmk目录下的extract-firmware.sh脚本

提取和运行二进制

我们可能想要查看二进制文件如何识别,而不是在设备上运行它们

识别潜在有趣的二进制文件的一种方法是检查从设备启动脚本,我们可以通过提取文件系统发现

QEMU仿真也是另一种检查二进制文件的方式

提取jffs2文件系统

使用固件修改工具包一部分的“unjffs2”批处理文件。在下面的目录:

/firmware-mod-kit/src/jffs2/unjffs2

您也可以使用binwalk提取jffs文件(假设已安装Jefferson )( https://github.com/sviehb/jefferson )

从CPIO归档文件提取

cpio -ivd –no-absolute-filenames -F {filename}

从UBI文件系统提取

在UBI Reader安装前,先安装Python Setuptools (sudo apt-get install python-setuptools)

确保已安装ubi_reader(https://github.com/jrspruitt/ubi_reader)

运行binwalk –e  {filename}

安装.ext2文件

创建安装目录(例如mkdir rootfs)

sudo mount -t ext2 {filename} rootfs

安装或解压缩文件系统后需要检查的事情

  • “/etc / passwd”和“/etc/ shadow”
  • “/etc/ssl”
  • grep -rnw’/ path / to / somewhere /’-e“模式”像密码,admin,root等。
  • 找。-name’* .conf’和其他文件类型,如* .pem,* .crt,* .cfg,.sh,.bin等。
  • 您还可以运行Firmwalker脚本,在提取的文件系统中搜索这些项目(https://github.com/craigz28/firmwalker )

动态测试设备的Web管理界面

这部分内容比较多和杂,后续专门开辟章节讲解。

发表在 嵌入式系统, 物联网安全 | 标签为 | 留下评论