欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

海思0day漏洞分析

来源:本站整理 作者:佚名 时间:2020-02-11 TAG: 我要投稿

研究人员在基于海思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。
 

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载