海思0 day漏洞分析 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

海思0 day漏洞分析

ang010ela 漏洞 2020-02-11 11:20:00
814588
收藏

导语:研究人员在基于海思SOC的DVR、NVR和IP摄像机等设备固件中发现一个0 day漏洞。

研究人员在基于海思SoC的DVR、NVR和IP摄像机等设备固件中发现一个0 day漏洞(后门)。攻击者利用该漏洞可以获取root shell权限,并完全控制设备。

技术细节

有漏洞的DVR/NVR/IP摄像机设备运行在busybox提供的最小工具集的Linux上。BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。硬件是基于ARM的CPU,大小在数十到数百兆之间。

有漏洞的固件中运行着macGuarder或dvrHelper进程,会接收TCP 9530端口的连接。代码和日志字符串表明macGuarder之前是一个单独的进程,之后其功能合并到了dvrHelper进程中,并作为一个单独的线程。

之前版本的固件将dvrHelper编译进了busybox中,作为一个额外的applet。这可能违反了GNU GPL licence。

后门激活过程如下:

· 客户端打开到设备TCP 9530端口的连接,发送字符串OpenTelnet:OpenOnce和表明整个消息长度的字节。这一步在所有版本的后门中都是有的。这一步之后如果没有响应,那么telnetd可能已经打开了。

· 服务器(设备)会用字符串randNum:XXXXXXXX进行响应,其中XXXXXXXX是8位随机十进制数。

· 客户端使用其预共享的密钥,构建加密密钥。加密密钥是接收到的随机数和PSK的连接。

· 客户端用加密密钥解密随机数,并在字符串randNum:后发送。整个消息前面会加上表明整个消息长度的字节。

· 服务器会从文件/mnt/custom/TelnetOEMPasswd加载预共享的密钥,如果该文件不存在就使用默认密钥2wj9fsa2。

· 服务器对随机数进行加密,并验证结果与来自客户端的字符串是否相同。如果验证成功,服务器发送字符串verify:OK,如果验证失败,服务器发送verify:ERROR。

· 客户端加密字符串Telnet:OpenOnce,并加上完整的长度字节和CMD: string,并发回给服务器。

· 服务器提权和解密接收的命令。如果解密的结果与字符串Telnet:OpenOnce相同,就响应Open:OK,启用debug 端口9527,并开启telnet daemon。

除了使用对称加密外,整个认证过程使用了一些HMAC 挑战-响应认证。对称密文对长度大于8字节的密钥使用了3DES-EDE2,对短密钥使用了简单DES。

研究人员分析发现成功认证需要了解PSK和实现对称块密文。研究人员发现telnet daemon激活后,会接收以下login/password对之一:

Login       Password
root xmhdipc
root klv123
root xc3511
root 123456
root jvbzd
root hi3518

这些口令既可以从固件中恢复,也可以通过暴力破解/etc/passwd文件中的哈希值来得到。使用hashcat和GPU只需要几小时就可以获得。

Debug端口9527也接收相同的login/password对,同时提供一些shell访问和功能来控制设备。对Web UI账户来说,攻击者可能可以重置口令或获取/mnt/mtd/Config/Account*文件的口令哈希值。

受影响的设备

有数十个品牌和上百个型号的产品受到该漏洞的影响,具体参见https://github.com/tothi/pwn-hisilicon-dvr#summary。研究人员预计受影响的联网设备可能在数十万到上百万之间。

检查设备是否受影响的最简单方式是利用下面的PoC代码进行检测。

PoC

PoC代码参见 https://github.com/Snawoot/hisilicon-dvr-telnet

会话示例:

$ telnet 198.51.100.23
Trying 198.51.100.23...
telnet: Unable to connect to remote host: Connection refused
$ ./hs-dvr-telnet 198.51.100.23 2wj9fsa2
Sent OpenTelnet:OpenOnce command.
randNum:46930886
challenge=469308862wj9fsa2
verify:OK
Open:OK
$ telnet 198.51.100.23
Trying 198.51.100.23...
Connected to 198.51.100.23.
Escape character is '^]'.
LocalHost login: root
Password:

如果出现以下情况,那么设备就受到该漏洞的影响:

· Telnet端口在 hs-dvr-telnet运行后打开了。

· 设备响应hs-dvr-telnet的查询。即使由于错误的PSK,验证失败了,但可以从固件中提取出正确的PSK。

· hs-dvr-telnet 等待响应,但telnet端口打开了。

安全建议

从之前的经验来看,可能固件厂商并不会及时发布安全补丁。因此,研究人员建议限制这些设备对不可信用户的网络访问,关闭受该漏洞影响的端口,包括23、9530、9527。


本文翻译自:https://habr.com/en/post/486856/如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务