
前言
firmwalker这个小工具在工作中也一直在用,正好领导说要写一篇这个工具的分析说明文章,经过询问可以发表博客。由于一直在用,所以末尾优劣势部分存在一些主观想法。
编写不易,如果能够帮助到你,希望能够点赞收藏加关注哦Thanks♪(・ω・)ノ
PS:文章末尾有联系方式,交个朋友吧~
本文链接:https://hollk.blog.csdn.net/article/details/129039641
防爬链接,未经允许请勿转载
概述
Firmwalker是一个纯shell语言编写的脚本工具项目,主要适用于物联网中固件文件系统检索扫描工作。可以在https://github.com/craigz28/firmwalker中下载项目源码,项目目录结构如下:

使用方法
首先下载firmwalker项目至本地并进入项目目录:
git clone https://github.com/craigz28/firmwalker && cd firmwalker-master
为firmwalker.sh赋予执行权限:
chmod +x firmwalker.sh
使用格式如下:
./firmwalker.sh {被测试文件系统根目录} {扫描结果输出路径}
例:./firmwalker.sh ~/work/squashfs-root/ ~/work/result/firmwalker.txt
功能介绍
在实际物联网、车联网渗透测试过程中,firmwalker主要在前期信息搜集阶段进行使用。根据在文件系统中进行关键字检索,获取可能具有价值的敏感数据或文件。其中firmwalker可以实现的主要功能有:
检索etc/shadow和 etc/passwd
根据data目录中passfiles文件记录的passwd、shadow、*.psk进行关键字检索。

检索Unix-MD5 hashes
根据firmwalker.sh中提供的正则表达式检索文件系统中的Unix-MD5 hashes。

枚举etc/ssl目录下内容。
根据firmwalker.sh中提供的ls命令枚举etc/ssl目录下内容。

搜索 SSL相关文件,例如.pem、.crt 等。
根据data目录中sslfiles文件记录的*.crt、*.pem、*.cer、*.p7b、*.p12、*.key进行关键字检索。

搜索 SSH相关文件
根据data目录中sshfiles文件记录的authorized_keys、 *authorized_keys*、host_key、*host_key*、id_rsa、*id_rsa*、id_dsa、*id_dsa*、*.pub进行关键字检索。

搜索配置文件
根据data目录中files文件记录的*.conf、*.cfg、*.ini进行关键字检索。

寻找数据库文件
根据data目录中dbfiles文件记录的*.db、*.sqlite、*.sqlite3进行关键字检索。

寻找脚本文件
根据firmwalker.sh中提供的*.sh作为关键字进行检索。

搜索其他 .bin文件
根据firmwalker.sh中提供的*.bin作为关键字进行检索。

查找关键字,例如 admin、password、remote 等
根据data目录中patterns文件记录的upgrade、admin、root、password、passwd、pwd、dropbear、ssl、private key、telnet、secret、pgp、gpg、token、api key、oauth进行关键字检索。

搜索物联网设备上使用的常见网络服务器
根据data目录中webservers文件记录的apache、lighttpd、alphapd、httpd进行关键字检索。

搜索常见的二进制应用,例如 ssh、tftp、dropbear等
根据data目录中binaries文件记录的ssh、sshd、scp、sftp、tftp、dropbear、busybox、telnet、telnetd、openssl进行关键字检索。

搜索 URL、电子邮件地址和 IP地址
根据firmwalker.sh中提供的正则表达式进行检索URL、电子邮件地址和IP地址。

支持使用 Shodan CLI调用 Shodan API(实验性)

优劣势(主观)
优势
通过在实际工作中对firmwalker的使用,得出如下四点优势说明:
l 可移植性强
由于firmwalker项目是纯shell脚本,因此具备多平台可移植性特点。在无法获取固件文件系统的情况下,firmwalker可以直接拷贝至设备内部终端使用。
l 体积小
去除不必要的eslintrc扩展json文件、项目logo、README文件,主体功能文件仅占86k存储空间,如果将/data/目录下匹配字段写进firmwalker.sh主执行文件中,整体存储空间占比可以压缩至更小。在存储空间有限的物联网设备中,小体积工具更容易在设备终端中直接运行。
l 速度快
由于firmwalker为脚本工具,因此不需要调用复杂的动态链接库进行功能实现,大部分工作仅依靠系统命令直接完成,因此扫描整个文件系统的速度很快。
l 正常情况下敏感数据文件检索相对全面
在firmwalker.sh工具中集成了多种敏感文件的检索功能,相比于手动逐个敏感文件检索,firmwalker检索范围更加全面。可以在车联网渗透测试中的系统安全以及数据安全部分发挥巨大作用。
遇到的问题
Firmwalker在具备如上四点优势的同时,也存在一下五点劣势点:
l 非正常情况下存在漏报
Firmwalker从技术实现的角度来看,主要原理是对关键字匹配。当关键字被开发者有意修改为其他字符时,firmwalker由于没有启发式算法协助,将无法对修改后的关键字进行扫描检索,导致漏报。
当关键字在二进制文件中不以字符串数组形式存储,而是以字符拼接形式存储的情况下,firmwalker无法检索完整关键字,导致漏报。
l 存在误报情况
Firmwalker常用grep命令进行关键字检索,当非敏感二进制文件的字符串表中存在部分关键字时,firmwalker仍判定该二进制为敏感文件,导致误报。
l 部分功能鸡肋
Firmwalker具备静态代码分析功能,但静态分析的主体功能并不是在脚本中,而是调用eslint工具进行实现。在设备终端中可能没有足够容纳eslint的空间,如果可以容纳eslint,安装和执行的限制都很大,这和firmwalker轻量化的特点背道而驰。并且有更加强大的开源工具可以替代执行静态分析功能,例如FACT。
l 检索IP、URL、Email时间过长
由于IP、URL、Email是根据正则表达式进行检索,匹配速度低,导致整体扫描时间增加。个人在车联网测试过程中会将这三项扫描注释掉。
l 无单项敏感数据文件操作功能
在单独增加、修改、删除/data/目录下某文件中的关键字后,无法对操作的关键字进行单独检索扫描,只能整体执行一遍。当然,可以通过注释的方式去掉不需要检索扫描的部分来缩短扫描时间,但实际上增加了工作量。
总结
Firmwalker作为一个脚本工具,具备轻量化、多平台适配、检索敏感文件全面等特点。虽然存在一些小问题,但也都是在极特殊情况下才会显现而出。整体来开,firmwalker在车联网渗透测试中,可以大大缩减工作量,从而快速定位敏感数据文件,在系统安全以及数据安全方面具有独特的作用。
交个朋友吧~
扫描下方二维码,一起讨论研究👇👇👇



















