内容简介:对于许多人来说,都希望通过安装“智能”摄像头,来提高家庭或办公室的安全性。一旦这些设备直接连接到互联网,只需点击几下,用户就可以轻松查看他们的监控视频流。然而,如果摄像头受到安全漏洞的影响,那么这种“便利性”将很快变成薄弱点,会给未经授权的攻击者打开大门。正如ESET智能家居研究团队的研究结果所显示的,D-Link DCS-2132L云端摄像头就正在面临这样的情况。该摄像头存在一系列安全漏洞,允许攻击者可以拦截并查看录制的视频,甚至还允许攻击者操纵设备的固件。D-Link DCS-2132L云端摄像头最严重
概述
对于许多人来说,都希望通过安装“智能”摄像头,来提高家庭或办公室的安全性。一旦这些设备直接连接到互联网,只需点击几下,用户就可以轻松查看他们的监控视频流。然而,如果摄像头受到安全漏洞的影响,那么这种“便利性”将很快变成薄弱点,会给未经授权的攻击者打开大门。正如ESET智能家居研究团队的研究结果所显示的,D-Link DCS-2132L云端摄像头就正在面临这样的情况。该摄像头存在一系列安全漏洞,允许攻击者可以拦截并查看录制的视频,甚至还允许攻击者操纵设备的固件。
D-Link DCS-2132L云端摄像头最严重的问题在于视频流的未加密传输。在摄像头和云端之间,以及云端和客户端浏览器应用之间,流量传输都是未经加密的,这就为中间人攻击(MitM)提供了非常充分的条件,并允许攻击者监视受害者的视频流。
用于观看摄像头画面的应用程序与摄像头通过2048端口借助代理服务器实现通信,使用基于自定义D-Link隧道协议的TCP隧道。但遗憾的是,在通过这些隧道的流量之中,只有一部分会被加密,另外一部分未加密的内容中,包含最为敏感的内容,例如:摄像头IP地址、MAC地址、版本信息、视频流和音频流,以及摄像头的扩展信息,上述内容都没有被加密。
该漏洞与本文后面描述的漏洞,其根本原因都可以归结到request.c文件中的一个条件判断不充分,该文件是D-Link自定义开源Web服务器源代码中的一部分,负责处理对摄像头的HTTP请求。来自127.0.0.1的所有HTTP请求都被提升到管理员级别,从而授予潜在攻击者对设备的完全访问权限。
拦截视频和音频流
作为中间人的攻击者可以拦截客户端应用程序和云端之间的网络流量,也可以拦截云端和摄像头之间的网络流量。具体而言,他们使用服务器(云端)2048端口上TCP连接的数据流,来查看针对视频数据包和音频数据包的HTTP请求。然后,攻击者可以随时构造这些请求内容,并进行重放攻击,以从摄像头获取当前音频流或视频流。在我们的实验中,我们获得了原始格式的视频流内容,具体是M-JPEG和H.264。
要重新组合视频流,需要按照一定的步骤来执行,这也可以通过简单的程序或脚本轻松实现自动化:
1. 识别出代表视频流的流量。该流量由多个数据块组成,每个块具有特定的头部和事先定义的长度。
2. 将数据部分和标头部分分开。
3. 最后,将各个视频(数据部分)合并成一个文件。
要播放以这种方式获取到的视频文件,可能有些棘手,因为它们采用了原始流的格式,而不是容器文件格式。但是,如果使用适当的命令行开关运行,一些媒体播放器可以解析这些原始格式。例如,MPlayer可以解析M-JPEG文件,而VLC可以播放H.264文件。
插件中存在的缺陷
我们在摄像头中发现的另一个严重漏洞,隐藏在“mydlink services”Web浏览器插件中。这是用户可用的客户端应用程序的一种形式,其他形式的移动应用程序不在我们的研究范围之中。
Web浏览器插件负责管理客户端浏览器中TCP隧道的创建和实时视频回放,但它也同时负责通过隧道转发对视频和音频数据流的请求,该隧道监听localhost上动态生成的端口。
这里的隧道,可以用于整个操作系统,因此客户端计算机上的任何应用程序或用户,只需通过向hxxp://127.0.0.1:RANDOM_PORT/发送简单的请求,即可访问摄像机的Web界面,从而查看实时视频流。
由于从摄像头的网络服务器发出的HTTP请求,在从本地主机IP访问时,会自动升级到admin级别。而客户端应用程序的localhost通过隧道连接到摄像头的本地主机,因此该过程无需经过身份验证。
该漏洞还允许攻击者使用自己组装的固件,或存在后门的固件版本来替换合法固件。
下面的视频中,展示了该插件中存在的安全问题:
非法固件替换漏洞
在撰写本文时,厂商已经成功修复了“mydlink services”插件中存在的漏洞。
但是,仍然可以通过本文前面所述的自定义D-Link隧道协议中的漏洞,使用恶意固件替换合法固件。为此,攻击者需要通过将视频流GET请求替换为上传并运行虚假固件“更新”的特定POST请求,来篡改隧道中的流量。
我们需要强调的是,攻击者要执行此类攻击,并非一件易事。因为,攻击者必须遵守隧道协议的所有规则,将固件文件划分为具有特定标头和特定最大长度的块。
但是,在更新过程中,没有验证固件二进制文件的真实性。因此,可以将具有一些附加“隐藏”特征的定制固件(例如:加密货币挖矿 工具 、后门、间谍软件、僵尸网络或其他木马)上传到设备。此外,如果缺乏任何的真实性检查,则意味着恶意行为者有可能会故意破坏设备。
UPnP将HTTP端口暴露到互联网
D-Link DCS-2132L还有一些小漏洞,尽管这些漏洞在严重程度上相对偏低,但仍然会对设备造成风险。该设备可以通过通用即插即用协议(UPnP)在家用路由器上设置端口转发。这样一来,会将80端口上的HTTP界面暴露到互联网中,即使在设置中未选中“启用UPnP演示”(Enable UPnP Presentation)或“启用UPnP端口转发”(Enable UPnP Port Forwarding)字段,也可以在未经用户同意的情况下实现该端口的暴露。
我们尚不清楚为什么这一摄像头设备会具有这种危险的设置。目前,通过Shodan可以发现近1600个暴露80端口的D-Link DCS-2132L摄像头,其中大部分位于美国、俄罗斯和澳大利亚。
要缓解当前风险,最简单的方法是禁用用户路由器上的UPnP功能。
插件已修复,但其他问题仍然存在
我们遵循负责任的漏洞披露原则,ESET在2018年8月22日向D-Link报告了发现的漏洞,包括易受攻击的未加密云端通信、云端消息认证不充分以及未经加密的LAN通信。
D-Link立即作出回应,通知ESET已将漏洞报告转发给他们的研发团队,并承诺采取后续行动。
陆续,一些漏洞已经得到了缓解。根据我们的测试,目前“mydlink services”插件已经修复了此前存在的安全问题,但其他一些问题仍然存在。在撰写本文时,可以下载的最新版本固件是在2016年11月发布的,其中并没有修复允许恶意替换摄像头固件的漏洞以及中间人获取音频和视频流的漏洞。
如今,D-Link DCS-2132L摄像头仍然在市场上销售。我们建议该设备的用户立即检查80端口是否暴露在公共互联网上。并且,如果该摄像头正在用于监控家庭或公司的高度敏感区域,我们建议用户应该仔细考虑是否允许远程访问。
时间节点
·2018年1月-8月 ESET IoT研究团队发现D-Link DCS-2132L中的安全漏洞。
· 2018年8月22日 ESET将发现的漏洞提交至D-Link。
· 2018年8月22日 D-Link接收漏洞信息,并将其转至研发团队。
· 2018年8月28日 D-Link升级myDlink插件,修复上述报告的问题。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- [译] 再看 Flask 视频流
- [译] 用 Flask 输出视频流
- Pixvana开源VR视频流传输技术
- 基于视频流传输:在线教育白板技术
- 光电视频流在html5中展示
- WebRTC 使用之 —— 使用 getUserMedia 获取视频流
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
码出高效:Java开发手册
杨冠宝、高海慧 / 电子工业出版社 / 2018-10 / 99.00元
《码出高效:Java 开发手册》源于影响了全球250万名开发工程师的《阿里巴巴Java开发手册》,作者静心沉淀,对Java规约的来龙去脉进行了全面而彻底的内容梳理。《码出高效:Java 开发手册》以实战为中心,以新颖的角度全面阐述面向对象理论,逐步深入地探索怎样成为一位优秀开发工程师。比如:如何驾轻就熟地使用各类集合框架;如何得心应手地处理高并发多线程问题;如何顺其自然地写出可读性强、可维护性好的......一起来看看 《码出高效:Java开发手册》 这本书的介绍吧!