最近正在看物联网安全,
所以做了一个测试的记录。
一、概述
近年来,随着科技的飞速发展,物联网技术逐渐走向成熟,并在安防、医疗、零售、教育、办公、家居、能源等多个领域得到应用。特别是随着5G 时代的到来,也极大推动了物联网技术的进一步发展和应用,其安全性也越来越受到人们的关注。本篇以物联网的固件入手,进行固件的安全评估。
二、环境版本与工具
系统/工具 |
用途 |
来源 |
kali |
攻击机 |
官网 |
IoTGoat |
靶标 |
https://github.com/OWASP/IoTGoat/releases |
binwalk |
分析工具 |
kali自带 |
firmwalk |
分析工具 |
https://github.com/craigz28/firmwalker.git |
nmap |
端口、服务扫描 |
kali自带 |
nc |
远程链接 |
kali自带 |
hydra |
暴破 |
kali自带 |
RSAS |
漏扫 |
绿盟 |
三、安全评估
评估固件的靶标选择:IOTGoat
项目github链接:
https://github.com/OWASP/IoTGoat
Bash
3.1.介绍
IoTGoat 项目是一个基于OpenWrt的故意不安全的固件由OWASP维护(就是说OWASP提供测试靶标),现在进行测试发掘其中存在的安全问题。
3.2.固件准备
首先进行固件下载,我选择下载了IoTGoat-raspberry-pi2.img的这个,
下载链接:
https://github.com/OWASP/IoTGoat/releases
Batch
使用binwalk-Me命令,解压使用上面链接下载的固件文件。
binwalk -Me IoTGoat-raspberry-pi2.img
Bash
运行后会在固件同级目录创建_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
Bash
输入密码root登录成功。
SSH登录:ssh [email protected]
到此为止固件仿真环境搭建成功。
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/firmwalker.git
Bash
cd firmwalker
./firmwalker.sh /root/LOT/_IoTGoat-raspberry-pi2.img.extracted/squashfs-rootBash
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://github.com/danielmiessler/SecLists.git
结果失败了,于是直接安装:
apt -y install seclists
cd Malware #看图找到seclists 如果找不到使用如下命令:
which seclists
awk '{print $2}' mirai-botnet.txt > password.txBash
使用hydra九头蛇进行如下命令爆破:成功活动密码:7ujMko0vizxv
hydra -l iotgoatuser -P password.txt ssh://192.168.239.135
Bash
进行SSH成功登录固件系统:
Bash
3.6.2 不安全的网络服务
搜寻lua脚本所在目录,在其中找到了iotgoat.lua文件,发现在其中可以执行系统命令。和SSH命令一样可以获取系统信息。
https://192.168.239.135/cgi-bin/luci//admin/iotgoat/webcmd?cmd=uname -a
Bash
执行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/cvekey.cgi?keyword=BusyBox+v1.28.4
Bash
可以看到比较多的漏洞。
3.6.5.2 dnsmasq漏洞
查看组件dnsmasq版本信息:
dnsmasq -v
发现版本为2.73,在CVE搜寻下。同样看到大量漏洞
https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=dnsmasq+2.73
Bash
四、参考
OWASP固件安全性测试指南
https://m2ayill.gitbook.io/firmware-security-testing-methodology/v/zhong-wen-fstm/
Bash
推荐阅读:
原文始发于微信公众号(安全猎人):固件安全评估(一)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论