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

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

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

  虽然说大部分折扣店的电子产品都是一堆应该丢进垃圾桶的东西,但是偶尔一些产品还是存在Hacking价值的。

  在超市,正准备阻止我那吃货孩子的时候,我突然发现Maginon的一款“安全”摄像头,这款摄像头具有无线连接,红外模式,云访问,手机App控制等功能。所有的功能汇聚在一起而且价格也不算贵。

  买买买!

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

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

  摄像头单元

  该单元使用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”我们得到了与之类似的几款网络摄像头:

  ?

  1

  2

  3

  4

  5

  他们都来自不同的制造商,但是其所暴露出的问题与我买的这个摄像头毫无差别。这里有一种方法来进行检测;设备的root密码都为“123456”,现在 我们来试试吧。

  注意:为了更加方便,这些设备都是在无线网络先运行,所以IP地址有所改变。

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  [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中发现了固件

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

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

  这里似乎有两个独立的领域:

  ?

  1

  2

  1)sys_supra C 系统估计本身,其包含了操作系统

  2)web_supra C 这是Web前端文件. 这可能是分离出来方便进行定制,或者是厂商接口

  将这些统统扔到16进制编辑器

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

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

  绿色高亮标示的值(0×50, 0×46, 0×03, 0×04; 即“PK”)zip文件模式,以下结构都遵循这一模式(例如使用橙色高亮显示的文件名),蓝色的32位值0x0009bc8e,也就是638094。

  ?

  1

  2

  [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个字节

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  [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中找到相关信息:

  ?

  1

  2

  3

  4

  [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命令

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  [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)

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  [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文件,但似乎它有密码保护:

  ?

  1

  2

  3

  [dave@jotunheim ipcam]$ unzip web_supra.zip

  Archive: web_supra.zip

  [web_supra.zip] www/appversion.txt password:

  当然,如果它是有密码保护的话,那么这个密码应该存储在某个地方,我们首先便要提取这个密码。这个地方我猜想应该是在系统估计之中,作为一个参数传递给unzip命令。再次使用grep命令:

  ?

  1

  2

  3

  4

  [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

  ?

  1

  2

  3

  4

  [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 /.

  解压结果:

  ?

  1

  2

  3

  4

  5

  6

  [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账号。在下一篇文章中,我们将把重点转移到云功能上。

发表评论