最近几个月我家里的购物习惯发生了一些变化,不再到大型超市转而奔向了折扣店。我的另一半看此情形,以为我勤俭节约是居家必备的好男人。然而事实上只是我对浏览折扣店中成堆的产品上瘾了。
虽然说大部分折扣店的电子产品都是一堆应该丢进垃圾桶的东西,但是偶尔一些产品还是存在Hacking价值的。
在超市,正准备阻止我那吃货孩子的时候,我突然发现Maginon的一款“安全”摄像头,这款摄像头具有无线连接,红外模式,云访问,手机App控制等功能。所有的功能汇聚在一起而且价格也不算贵。
买买买!
摄像头单元
该单元使用PoE以太网供电,前端以及接入以太网,同时它还有一个无线接入功能。在最近的测试中发现这些接口同时只允许使用一个,且无线接口优先。说来也奇怪,如果你把无线接口禁用了,那么它将把IP地址复制到以太网上。
用端口搜素看到以太网分配自身的一个静态IP192.168.1.129
C:\Users\dave>nmap -p1-65535 192.168.1.129 Starting Nmap 6.40 ( http://nmap.org ) at 2015-04-08 10:10 GMT Daylight Time Nmap scan report for 192.168.1.129 Host is up (0.013s latency). Not shown: 65532 closed ports PORT STATE SERVICE 23/tcp open telnet 80/tcp open http 8600/tcp open asterix MAC Address: 00:6E:07:87:10:AE (Unknown) Nmap done: 1 IP address (1 host up) scanned in 41.36 seconds
是什么设备占用8600/tcp端口呢?我已经嗅到了摄像头的味道,你呢?
http端口我们用来管理前端,这到不出奇。关键是他使用的是基础的HTTP身份验证(即请求传递的是有Base64进行加密的用户名和密码)来对用户身份进行认证。这就很不安全了啊。而且它还没有SSL选项来对管理信道加密
telnet端口提供了一个凭证提示,但是默认的凭证(admin没有设置密码)完全就是摆设,用户很有可能不会使用telnet
进入网络摄像头
根据我们对摄像头情况的掌握,狡猾的端口,WEB界面默认管理员密码。在搜索引擎进行搜索“8600/tcp camera”我们得到了与之类似的几款网络摄像头:
http://www.drolez.com/blog/?category=Hardware&post=jw0004-webcam http://liken.otsoa.net/blog/?x=entry:entry140322-183809 http://www.asecuritysite.com/subjects/chapter33
他们都来自不同的制造商,但是其所暴露出的问题与我买的这个摄像头毫无差别。这里有一种方法来进行检测;设备的root密码都为“123456”,现在 我们来试试吧。
注意:为了更加方便,这些设备都是在无线网络先运行,所以IP地址有所改变。
[dave@jotunheim ~]$ telnet 192.168.0.23 Trying 192.168.0.23... Connected to 192.168.0.23. Escape character is '^]'. (none) login: root Password: BusyBox v1.12.1 (2012-11-21 22:17:05 CST) built-in shell (ash) Enter 'help' for a list of built-in commands. #
好吧,这比预期的难度更简单。接下来我们就看看固件吧
固件
找遍了网站引用的摄像头相关文档,依旧没找到这个摄像头的固件。
最终,我在摄像头送的那张CD中的App中发现了固件
这里似乎有两个独立的领域:
1)sys_supra – 系统估计本身,其包含了操作系统 2)web_supra – 这是Web前端文件. 这可能是分离出来方便进行定制,或者是厂商接口
将这些统统扔到16进制编辑器
绿色高亮标示的值(0×50, 0×46, 0×03, 0×04; 即“PK”)zip文件模式,以下结构都遵循这一模式(例如使用橙色高亮显示的文件名),蓝色的32位值0x0009bc8e,也就是638094。
[dave@jotunheim ipcam]$ ls -l sys_supra_ipc20c_81.2.1.152.bin -rwxrw-rw- 1 dave dave 638162 Sep 29 2014 sys_supra_ipc20c_81.2.1.152.bin
这也意味着红色标注的东西是一个header,“wifi-camera-sys-get”非常明显,但是其他的就未知了。
同时这样也意味着,我们只需简单的切掉红色和蓝色位就可提取固件。我使用dd来跳过前面的36个字节
[dave@jotunheim ipcam]$ dd if=sys_supra_ipc20c_81.2.1.152.bin of=sys_supra.zip bs=1 skip=36 638126+0 records in 638126+0 records out 638126 bytes (638 kB) copied, 1.28828 s, 495 kB/s [dave@jotunheim ipcam]$ unzip -l sys_supra.zip Archive: sys_supra.zip Length Date Time Name --------- ---------- ----- ---- 0 09-23-2014 20:17 system/ 0 09-23-2014 20:17 system/init/ 203 09-23-2014 20:17 system/init/ipcam.sh
现在我们获得了一个固件的解压版本,虽然我们没找到obvious /etc/passwd文件,但是我们使用grep命令在文件内查找passwd字符,在system/bin/daemon.v5.7中找到相关信息:
[dave@jotunheim system]$ grep -ir passwd * Binary file system/bin/ftp matches Binary file system/bin/encoder matches Binary file system/bin/daemon.v5.7 matches
这可能是它创建的初始化文件,接着使用strings命令
[dave@jotunheim system]$ strings system/bin/daemon.v5.7 [...] ps > /tmp/gps.txt /tmp/gps.txt fopen failed encoder reboot /system/system/bin/encoder & /etc/passwd root:LSiuY7pOmZG2s:0:0:Adminstrator:/:/bin/sh /etc/group root:x:0:admin system:%2x-%2x-%2x this isn't system file
就是它了,但是在这里好像无法进行修改。
出于完整性考虑,我们将passwd文件放到John the Ripper(在虚拟机中我没有安装hashcat)
[dave@jotunheim ipcam]$ echo "root:LSiuY7pOmZG2s:0:0:Adminstrator:/:/bin/sh" >passwd [dave@jotunheim ipcam]$ john passwd Loaded 1 password hash (descrypt, traditional crypt(3) [DES 64/64 MMX]) Press 'q' or Ctrl-C to abort, almost any other key for status 123456 (root) 1g 0:00:00:00 100% 2/3 3.030g/s 6809p/s 6809c/s 6809C/s 123456..magic Use the "--show" option to display all of the cracked passwords reliably Session completed
Web固件
我们已经解开了系统固件,下一步就是web固件了。将header切掉后我们得一个有效的zip文件,但似乎它有密码保护:
[dave@jotunheim ipcam]$ unzip web_supra.zip Archive: web_supra.zip [web_supra.zip] www/appversion.txt password:
当然,如果它是有密码保护的话,那么这个密码应该存储在某个地方,我们首先便要提取这个密码。这个地方我猜想应该是在系统估计之中,作为一个参数传递给unzip命令。再次使用grep命令:
[dave@jotunheim system]$ grep -ir unzip * Binary file system/bin/encoder matches Binary file system/bin/unzip1 matches Binary file system/bin/daemon.v5.7 matches
再次注意system/bin/daemon.v5.7
[dave@jotunheim system]$ strings system/bin/daemon.v5.7 | grep unzip unzip1 -o -P vstarcam!@#$% /tmp/www.zip -d /system unzip -o /tmp/system.zip -x system/system/bin/daemon* -d /. unzip -o /tmp/system.zip system/system/bin/daemon* -d /.
解压结果:
[dave@jotunheim ipcam]$ unzip -P 'vstarcam!@#$%' web_supra.zip Archive: web_supra.zip inflating: www/appversion.txt inflating: www/crossdomain.xml inflating: www/index.htm inflating: www/branding/branding.js
现在我们已经拥有解压的web文件,系统文件,root账号。在下一篇文章中,我们将把重点转移到云功能上。
* 参考来源:pentestpartners,编译/ 鸢尾,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)