IP摄像头安全漏洞挖掘:全球未授权访问风险分析

本文深入分析了IP摄像头存在的安全漏洞,包括DDNS服务导致的摄像头枚举风险、UPnP自动端口映射问题,以及通过Nmap脚本进行全球摄像头扫描的技术细节,揭示了物联网设备的安全隐患。

IP Camera Finder

当我女儿出生时,我决定购买一个IP摄像头放在她的婴儿床上方,以便晚上可以随时查看。我选择的是Storage Options的产品。在查看随附信息时,我注意到了这一行:

随附软件可为您管理设置过程。支持动态IP地址和DDNS,通过无线连接,您无需担心在家中或办公室布线。

还有关于“自动注册”和“轻松远程监控”的提及,我不喜欢这些声音,因此决定深入挖掘。

设备可以在有线或无线网络上运行,因此我设置所有流量通过我的笔记本电脑,启动Wireshark并开机。有两个突出的点:发往路由器的UPnP流量和发往域名ipcam.hk的Web流量。UPnP流量试图让我的路由器打开一个PAT洞,基本上允许外部世界完全访问摄像头的Web界面——这不好!分析Web流量,发现那是DDNS设置。

设备带有一个唯一的6字符代码,手册说可用于外部查看,例如,如果我的代码是abcdef,则浏览http://abcdef.ipcam.hk即可查看我的摄像头。DDNS的设置方式很有趣,不是让子域名返回摄像头的外部IP,而是所有子域名都解析到ipcam.hk域。如果您浏览子域名,页面会进行302重定向到摄像头的IP。这是一个巧妙的想法,因为摄像头使用默认端口81而不是通常的80,因此用户必须知道在URL中添加:81,这与他们追求的易用性背道而驰。

那么,这有什么问题?摄像头枚举。每个成功注册服务的摄像头,其IP和端口对任何查询服务的人都是可用的。如果我想查看代码为xxxxxx的摄像头是否注册,我只需浏览xxxxxx.ipcam.hk,看看重定向到哪里。如果对该用户路由器的UPnP请求成功,我将最终进入其摄像头的Web界面。请求一堆URL并不难,问问HD Moore!

因此,我写了一个脚本扫描一系列代码,查看返回的IP,并检查是否需要身份验证。我发现了不少开放摄像头,大多数很无聊,但有几个有趣的。

几个月过去了,不幸的是我没有时间写下所有工作,后来我被邀请在OWASP Leeds演讲,认为这是发布信息的完美机会。我决定获取新数据,但不幸发现ipcam.hk服务已死,因此我只有之前收集的数据。我演讲并指出,作为研究人员,您的发现通常只在短时间内有效,因此应尽快发布。我以为就这样了,继续前进。

所有这些都在两年前,我们现在有了第二个孩子,决定也给他买一个摄像头。最终我买了一个非常相似的,因为事实证明有很多公司重新品牌相同的基本摄像头。这个摄像头也吹嘘与第一个相同的功能,但这次使用不同的DDNS提供商tenvis.info。这次我不会让数据溜走。

凭借先前的知识,我决定放弃之前的Ruby脚本,用Lua编写我的第一个nmap脚本。这相对容易,并且有一个很大的优势,即让别人担心线程、网络和所有其他我不真正关心的底层问题。我将脚本设置为向tenvis.info域发出HTTP请求,然后解析结果。对于已注册的摄像头,我对一个受密码保护的页面进行HEAD请求,该页面如果在线应存在于摄像头上。这告诉我摄像头是否存在,以及是否需要身份验证。如果我选择,检查非常可猜测的默认凭据“admin”且无密码将是一个相当简单的补充。

所有这些都记录到一个漂亮的文本文件中,以便稍后处理。

结果

文本很好,但图片更好,而完全交互式的Google地图甚至更好,因此我决定将摄像头的IP地址通过geo-ip服务抛出,看看结果如何。我测试的每个摄像头都返回了一个位置。最后一步是将所有数据操作到JavaScript中,看看效果如何,即使我自己这么说,它看起来真的很棒!看看您怎么想…

世界

这里的数据来自从aaaa到zzzz的各种范围扫描,全球共有616个摄像头分布。

英国

注意小红标记,那是一个没有密码保护的摄像头

德国、比利时和荷兰

几个摄像头和另一个未受保护的摄像头

更多信息

我为标记添加了气球弹出窗口,以便点击它们并了解更多关于摄像头的信息。

发布代码和数据

我考虑过发布我收集的代码和数据,并决定不发布。虽然对于有一定编码技能的人来说,复制我所写的内容相对容易,但我想至少设置一个入门级障碍,以阻止人们完全滥用这个相当脆弱的生态系统。然而,我很乐意与任何我认为可以信任的人深入讨论这个问题。

结论

这些可以分为三类…

用户

确保您知道放在网络上的任何产品的功能,如果您不知道如何查找,请询问。我知道这说起来容易做起来难,但如果您找到了这个博客,那么您可能至少对安全有一定的兴趣,因此查看论坛和邮件列表。

如果您要将某些东西放在互联网上,请确保它受到适当保护。始终更换默认密码,如果可能,更换用户名。如果开发人员留下了未记录的后门账户,这并不总是有帮助,但至少尽您所能。

如果您有这些摄像头之一,请检查您的路由器,看看是否设置了漏洞。如果您不使用它,请删除它;如果您使用,请考虑添加额外保护,也许增加一些 obscurity 并将其移动到高随机端口。我的摄像头允许禁用DDNS和UPnP功能,因此我建议也这样做。

开发者

考虑您创建的任何功能的潜在攻击面。添加功能以使最终用户的生活更轻松,不幸的是通常会降低安全性,但这不应该。在这种情况下,在操作之前询问用户是否希望将摄像头开放到整个互联网,将解决许多问题,我怀疑大多数拥有这些摄像头的人远程访问它们,因此不需要该功能。

强制用户在首次使用设备时设置管理员用户名和密码,将消除默认账户的问题。

为您无法直接预防的事情制定缓解策略。这里的例子是对DDNS服务的请求进行速率限制。单个IP不需要在一小时内发出超过1000个请求,早期检测并阻止它。

研究人员

如果您进行研究,请发布它。我很幸运这一切再次出现,我能够发布它,否则它只会丢失在源代码目录中的某个地方。

支持网站

我不会为网站上的任何项目获得报酬,因此如果您想支持我的工作,可以通过使用下面的联盟链接来做到,我 either 获得账户积分或现金返还。通常只有几分钱,但它们都会累加。

请我喝一杯冰沙


所有内容由Robin Wood创建,除非另有说明。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计