首页 > 安全 > 网络安全 >

黑客的日常:Hacking网络摄像头(Part1)

2015-10-20

最近几个月我家里的购物习惯发生了一些变化,不再到大型超市转而奔向了折扣店。我的另一半看此情形,以为我勤俭节约是居家必备的好男人。然而事实上只是我对浏览折扣店中成堆的产品上瘾了。 虽然说大部分折扣店的

最近几个月我家里的购物习惯发生了一些变化,不再到大型超市转而奔向了折扣店。我的另一半看此情形,以为我勤俭节约是居家必备的好男人。然而事实上只是我对浏览折扣店中成堆的产品上瘾了。

虽然说大部分折扣店的电子产品都是一堆应该丢进垃圾桶的东西,但是偶尔一些产品还是存在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账号。在下一篇文章中,我们将把重点转移到云功能上。

相关文章
最新文章
热点推荐