固件安全评估(一)
本文首发于公众号:
固件安全评估(一)
一、概述
近年来,随着科技的飞速发展,物联网技术逐渐走向成熟,并在安防、医疗、零售、教育、办公、家居、能源等多个领域得到应用。特别是随着5G 时代的到来,也极大推动了物联网技术的进一步发展和应用,其安全性也越来越受到人们的关注。本篇以物联网的固件入手,进行固件的安全评估。
二、环境版本与工具
环境版本与工具
系统/工具 | 用途 | 来源 |
---|---|---|
kali | 攻击机 | 官网 |
IoTGoat | 靶标 | https:// github.com/OWASP/IoTGoa t/releases |
binwalk | 分析工具 | kali自带 |
firmwalk | 分析工具 | https:// github.com/craigz28/fir mwalker.git |
nmap | 端口、服务扫描 | kali自带 |
nc | 远程链接 | kali自带 |
hydra | 暴破 | kali自带 |
RSAS | 漏扫 | 绿盟 |
三、安全评估
评估固件的靶标选择:IOTGoat
项目github链接:
https:// github.com/OWASP/IoTGoa t
3.1.介绍
IoTGoat 项目是一个基于OpenWrt的故意不安全的固件由OWASP维护(就是说OWASP提供测试靶标),现在进行测试发掘其中存在的安全问题。
3.2.固件 准备
首先进行固件下载,我选择下载了IoTGoat-raspberry-pi2.img的这个,
下载链接:
https:// github.com/OWASP/IoTGoa t/releases
使用binwalk-Me命令,解压使用上面链接下载的固件文件。
binwalk -Me IoTGoat-raspberry-pi2.img
运行后会在固件同级目录创建_IoTGoat-raspberry-pi2.img.extracted目录。
进入_IoTGoat-raspberry-pi2.img.extracted目录可以看到squashfs-root文件系统,这就是固件的文件系统了。
3.3.固件测试 环境
在刚才固件下载的链接下面下载固件vmdk虚拟磁盘文件。
这里选择的是vmware安装虚拟机的方式模拟运行固件,这一步主要是为了验证漏洞,也可以使用一些固件模拟软件或者真实设备进行漏洞验证。
首先vmware点击文件新建虚拟机,选择自定义高级。
默认下一步。
选择稍后安装操作系统,然后点击下一步。
这里客户机操作系统选择linux版本选择ubuntu64,然后点击下一步。
填写虚拟机名称与安装路径,点击下一步。
设置处理器,这里设置为两处理器。
设置内存为4096Mb。
设置网络连接为网络地址转换(NAT)模式。
连续使用使用默认设置。
选择使用现有虚拟磁盘。
选择磁盘文件,为上面下载的vmdk文件。
这里选择保存现有格式。
点击完成。
如下图第二张所示虚拟机正常运行。(记得在界面回车下,要不然不到这个界面)
使用ifconfig查看ip,出现问题。
打开虚拟机设置发现没有添加网卡,于是添加网卡
重新获取IP成功获取了IP地址。
在kali系统浏览器中输入:
https:// 192.168.239.135/cgi-bin /luci
输入密码root登录成功。
SSH登录:ssh root@192.168.239.135
到此为止固件仿真环境搭建成功。
3.4 信息收集
3.4.1 系统信息
系统信息:
直接在IoTGoat系统输入
uname -a
可以看到系统的信息
端口和web服务信息:nmap -sS -Pn -A -p- 182.168.239.135
可以看到开启了22、80、443和5000四个端口。分别是 SSH、DNS、http、https、upnp等服务
3.4.2 自动化分析分析
使用 工具firmwalker分析这是一个简单的 bash 脚本,用于搜索提取或挂载的固件文件系统。
它将在提取或挂载的固件文件系统中搜索感兴趣的内容,例如:
etc/shadow and etc/passwd
列出 etc/ssl 目录
搜索 SSL 相关文件,如 .pem、.crt 等。
搜索配置文件
查找脚本文件
搜索其他.bin文件
查找关键字,例如管理员,密码,远程等。
搜索 IoT 设备上使用的常见 Web 服务器
搜索常见的二进制文件,如 ssh、tftp、dropbear 等。
搜索网址、电子邮件地址和 IP 地址
使用 Shodan CLI 调用 Shodan API 的实验性支持
git clone https:// github.com/craigz28/fir mwalker.git
cd firmwalker
./firmwalker.sh /root/LOT/_IoTGoat-raspberry-pi2.img.extracted/squashfs-root
3.5 漏洞扫描
漏洞扫描:
因为没有LOT的漏扫工具,于是拿绿盟RSAS扫描了一把。
发现了30个漏洞,
3.5.1按服务分类:
3.5.2按应用分类:
3.5.3漏洞信息:
可以看到大部分是DNSmasq服务的漏洞
3.6漏洞挖掘
挖掘思路:根据项目的提示
3.6.1.弱口令
在信息收集firmwalk分析中可以看到/etc目录存在shadow文件。
查看固件中/etc/shadow文件保存的信息。
加密密码格式: $id$salt$encrypted ,id为1时表示采用md5进行加密,id为5时,表示采用SHA256进行加密,id为6时,表示SHA512进行加密,该固件使用的加密方式为md5加密。
使用以下命令创建password.txt(用于破解的文件)。
git clone git:// http:// github.com/danielmiessl er/SecLists.git
结果失败了,于是直接安装:
apt -y install seclists
cd Malware #看图找到seclists 如果找不到使用如下命令:
which seclists
awk '{print $2}' mirai-botnet.txt > password.txt
使用hydra九头蛇进行如下命令爆破:成功活动密码:7ujMko0vizxv
hydra -l iotgoatuser -P password.txt ssh://192.168.239.135
进行SSH成功登录固件系统:
ssh iotgoatuser@192.168.239.135
3.6.2.web命令注入
搜寻lua脚本所在目录,在其中找到了iotgoat.lua文件,发现在其中可以执行系统命令。和SSH命令一样可以获取系统信息。
https:// 192.168.239.135/cgi-bin /luci//admin/iotgoat/webcmd?cmd=uname -a
执行pwd和ls命令,命令注入无疑了。还可以看端口链接。
3.6.3.程序后门
在SSH界面查看端口情况,发现一个可疑程序
直接尝试nc链接成功,执行了ls命令
3.6.4.任意备份更新 漏洞
在后台登陆页面的system存在backup选项,页面中有备份、恢复、刷新固件的操作选项。翻译一下:
说明存在可能被恶意刷新固件的风险。(由于本人收到没有合适的其他固件并未进行实际操作,如果需要操作记得先进行快照)
3.6.5 含有已知漏洞的组件
3.6.5.1 busybox
在SSH登录命令行中输入:
busybox ls -fssdfdsf
可以看到BusyBox v1.28.4 () multi-call binary.也就是BusyBox 的版本信息
在CVE中搜索
https:// cve.mitre.org/cgi-bin/c vekey.cgi?keyword=BusyBox+v1.28.4
可以看到比较多的漏洞。
3.6.5.2 dnsmasq
查看组件dnsmasq版本信息:
dnsmasq -v
发现版本为2.73,在CVE搜寻下。同样看到大量漏洞
https:// cve.mitre.org/cgi-bin/c vekey.cgi?keyword=dnsmasq+2.73
四、参考
OWASP固件安全性测试指南 - Firmware Security Testing Methodology (gitbook.io)
https:// m2ayill.gitbook.io/firm ware-security-testing-methodology/v/zhong-wen-fstm/