我是如何黑入我的IP摄像头并发现后门账户的
明显的安全问题
我打开包装盒,迎接我的是一个四位数字密码。这是"admin"用户的密码,可以配置设备、观看输出视频等。大多数人根本不在乎更改这个密码。
这个摄像头支持以太网线或WiFi通信。幸运的是它支持WPA2,但人们当然可以将其配置为开放的不受保护的WiFi。
嗅探摄像头和桌面应用程序之间的流量很容易发现它在81端口通过HTTP通信。会话管理简直是"天才"设计。用户名和密码在每个GET请求中发送。通过HTTP。通过希望不是开放的WiFi。如果你忘记了密码,这真的很方便,但幸运的是桌面应用程序已经以明文形式将密码保存在:
C:\Users\<USER>\AppData\Local\VirtualStore\Program Files (x86)\<REDACTED>\list.dat
这个不错的摄像头通过UDP与云通信。目标服务器位于香港 - user.ipcam.hk/user.easyn.hk - 和中国 - op2.easyn.cn/op3.easyn.cn。如果你想知道为什么IP摄像头需要云连接,很简单。这个IP摄像头有Android和iOS移动应用程序,通过云,用户不必费心配置端口转发或动态DNS来访问摄像头。很好。
端口扫描
让我们对这个设备运行快速nmap扫描:
|
|
有已知的HTTP服务器、通过BusyBox的telnet服务器和8600端口(到目前为止尚未检查)。27页的在线手册没有提到任何Telnet端口。我们该如何命名这个端口?调试端口?还是后门端口?我们会看到。我手动尝试了3个root用户的密码,但由于这些密码不起作用,我继续前进。
双重盲命令注入
IP摄像头可以按计划将照片上传到配置的FTP服务器。当我配置它时,不幸的是它根本不起作用,我在服务器上收到了无效的用户名/密码。经过一些调试,发现问题是我在密码中有一个特殊的$字符。这就是真正旅程开始的地方。我确信这是一个命令注入漏洞,但不确定如何利用它。有多个问题使利用变得更加困难。我称这个漏洞为双重盲命令注入。第一个"盲"来自我们无法看到命令输出的事实,第二个"盲"来自命令在与Web服务器不同的进程中运行的事实,因此任何涉及sleep的基于时间的注入都不是真正的解决方案。
但第三个问题是最糟糕的。它限制在32个字符。我能够通过DNS泄漏一些信息,比如使用以下命令我能够看到当前目录:
$(ping%20-c%202%20%60pwd%60)
或URL解码后清理:$(ping -c 2 \pwd`)`
但每当我尝试从/etc/passwd泄漏信息时,都失败了。我尝试了$(reboot),这是一个相当糟糕的主意,因为它将摄像头变成了无限重启循环,摄像头上的硬重置按钮也无法工作。有趣的时光。
以下是我拼命尝试获取shell访问权限的一些例子。这是时候感谢EQ在黑客会话之夜的帮助,以及他的好主意。
|
|
在我最终黑入摄像头后,我看到了问题。这个设备上没有head、tr、less、more或cut……也没有netcat、bash……
我还尝试了commix,因为它在YouTube上看起来很有希望。把commix想象成像sqlmap,但是用于命令注入。但不幸的是,这种双重盲黑客对这款自动化工具来说有点太过了。
但在花了太多时间没有进展之后,我终于找到了"芝麻开门"的密码。
$(echo 'root:passwd'|chpasswd)
现在,通过telnet登录:
|
|
哇哦 :) 我很快注意到了命令注入问题的根源:
|
|
每当一个命令被放入FTP密码字段时,它就会被复制到这个脚本中,并且在脚本被调度后,它会被shell解释为命令。在这之后,我开始惊慌,我忘记保存/etc/passwd文件的内容,那么我将如何破解默认的telnet密码?“幸运的是”,重启摄像头恢复了原始密码。
root:LSiuY7pOmZG2s:0:0:Administrator:/:/bin/sh
不幸的是,对于这个任务不需要启动老旧的John The Ripper,因为Google可以告诉你这是密码123456的哈希。它比行李密码安全一点。
总结
是时候回顾一下我们拥有的东西了。IP摄像头上有一个未文档化的telnet端口,默认可以通过root:123456访问,没有GUI可以更改此密码,通过控制台更改它,它只持续到下次重启。我认为可以安全地称这是一个后门。
通过这个控制台访问,我们可以访问FTP服务器的密码、SMTP服务器(用于警报)的密码、WiFi密码(虽然我们可能已经有了),访问摄像头的常规管理界面,或者只是按照我们的意愿修改摄像头。在大多数部署中,幸运的是这个telnet端口在NAT或防火墙后面,因此无法从互联网访问。但总有例外。幸运的是,UPNP没有配置Telnet端口对互联网开放,只有摄像头HTTP端口81。你知道的,默认情况下受4位数字密码保护的那个。
最后但同样重要的是,所有东西都以root身份运行,这并不令人惊讶。
我的加固清单
我将这些行添加到/system/init/ipcam.sh的末尾:
|
|
另外,如果你愿意,你可以通过注释掉/system/init/ipcam.sh中的telnetd来禁用telnet服务。
如果你想禁用云连接(从而使移动应用程序无法使用),将以下行放入/system/init/ipcam.sh的开头:
|
|
你可以使用OpenVPN连接到你的家庭网络并访问摄像头的Web界面。它适用于Android、iOS和任何桌面操作系统。
我的待办事项清单
- 调查脚本/system/system/bin/gmail_thread
- 调查云协议* - 参见2016年10月27日更新
- 购买树莓派,集成一个好的USB摄像头,看着这个IP摄像头烧掉
快速的谷歌搜索显示,我不是第一个在IP摄像头中发现这个telnet后门账户的人,尽管其他人是通过JTAG固件转储发现的。
99%购买这些IP摄像头的人认为使用它们会很安全。现在我明白了随IP摄像头附送的贴纸的含义。
当在《机器人先生》的下一集中,你看到有人通过telnet用root:123456登录IP摄像头时,你会知道,这是可悲的现实。
如果你对保护家庭免受物联网侵害的通用方法感兴趣,请阅读我上一篇关于此主题的博客文章。
更新:正如你在以下截图中看到的,坏人已经开始利用这个问题……https://www.incapsula.com/blog/cctv-ddos-botnet-back-yard.html
更新记录
20161006更新:Mirai源代码上周泄露,这些是你在物联网设备中可能拥有的最糟糕的密码。如果你的物联网设备有开放的Telnet端口(或SSH),请扫描这些用户名/密码对。
2016年10月27日更新:正如我已经在多个会议上提到的,云协议是一场噩梦。它是明文的,即使你在路由器上禁用了端口转发/UPNP,如果攻击者知道(可暴力破解的)摄像头ID,云协议仍然允许任何人连接到摄像头。虽然这只是用户界面,但现在攻击者可以使用命令注入以root权限执行代码。或者只是抓取摄像头配置,包括WiFi、FTP、SMTP密码。
2017-03-08更新:“由于代码重用,漏洞存在于大量摄像头列表中(特别是InfoLeak和RCE),这使我们能够对1250多个具有预认证漏洞的摄像头型号执行root命令。“https://pierrekim.github.io/advisories/2017-goahead-camera-0x00.txt
2017-05-11更新:CVE-2017-5674(见上文)和我的命令注入漏洞被组合在Persirai僵尸网络中。预计很快将有12万台摄像头被感染。如果你家里还有这样的摄像头,请考虑Amit Serper的以下建议:“保证受影响的摄像头免受这些漏洞影响的唯一方法是将其扔掉。说真的。“这个问题可能比Mirai蠕虫更严重,因为这些影响摄像头和其他启用了UPnP的NAT后面的物联网设备。