Dropcam是多功能的无线网络视频监控摄像头。具备网络直播、网络存储、双向通话等功能,还可以把动态物体出现的时间标记下来。2014年6月,谷歌旗下的Nest公司宣布,以5.55亿美元的现金价格收购Dropcam。目前Dropcam是亚马逊网站上最畅销的安全摄像头,并且已经进入了苹果和百思买公司的零售商店。Dropcam已经成为一种流行的婴儿监控摄像头。当然目前中国版的“dropcam”也开始有了,比如小度i耳目、联想看家宝、小蚁智能摄像机(前阵子躺枪,被称为Dropcam在中国的"合伙人",发现小蚁用的Ambarella(安霸)A7LS处理器,dropcam用的A5系列)、360智能摄像机。
智能设备或者说物联网设备正在快速的被研究开发出来,给用户带来很好的用户体验,但是另一方面,体验的同时,安全隐私性缺令人担忧,下面整理Synack团队在2014年黑帽大会上的作品—Implanting a dropcam
企业安全研究公司 Synack 对 16 个常见的物联网设备进行了测试,从 SmartThings 的设备,到 Nest 和 Lyric 恒温器等。结果发现,它们都存在不同程度的安全问题,其中,联网摄像头是最不安全的。
虽然他们是通过物理接触方式进行攻击,但不排除以后有人可以截获物联网设备,然后更换其中的配件。将来此类攻击可能会不断增加。尤其注意二手货或者返修产品哦~~
下面是他们对dropcam的逆向攻击步骤:
- 物理打开摄像机,通过对dropcam的串口、USB接口进行探测,在物理上连接上dropcam.
- 然后启动dropcam,尝试进入bootloader。这里有两种方式
- 上电然后点击“enter”键
- 将串口tx/rx的管脚(pin3 &pin 4)短接
- 进入boot后,输入help命令,一般嵌入式开发中使用help可以显示系统可以支持的命令。研究者发现了以下命令:setenv ,同时对setenv进行命令帮助追踪setenv help 。最终实现对dropcam的boot启动参数的修改如下:
(该命令表明,设置boot参数到 /bin/sh下)amboot>setenv cmdline DCSECconsole=ttyS0 ubi.mtd=bak root=ubi0:rootfs rw rootfstype=ubifs <span style="font-family: KaiTi_GB2312;">init=/bin/sh</span>
- 尝试删除root密码
# ls -l /etc/shadow /etc/shadow ->/mnt/dropcam/shadow # more /etc/fstab <filesystem> <mount pt> <type> /dev/root / ext2 … NFS configurationfor ttyS0 /dev/mtdblock9/mnt/dropcam jffs2 # mount -tjffs2 /dev/mtdblock9/mnt/dropcam # vi /mnt/dropcam/shadow root:$1$Sf9tWhv6$HCsGEUpFvigVcL7aV4V2t.:10933:0:99999:7::: # more /mnt/dropcam/shadow root::10933:0:99999:7:::
- 查看dropcam的arm系统环境
#uname -a Linux Ambarella 2.6.38.8 #80 Aug 2013 armv6l GNU/Linux # ps aux | grepconnect 821 root 0:10/usr/bin/connect 823 root 0:13 /usr/bin/connect dropcam specific binaries 824 root 0:00/usr/bin/connect
- 发现dropcam的opensssl使用了之前的漏洞版本1.0.1e。使用heartleech 获取摄像头的私有证书,这样就可以利用该证书做坏事了。 (注:Heartleech 可利用 Heartbleed 漏洞自动提取 OpenSSL 私钥信息。
- 发现dropcam的远程代码执行漏洞。
- Dropcam使用嵌入式linux,里面有busybox.BusyBox是一个可执行程序,它把很多标准Linux工具的简版组合成在一起。 BusyBox 1.20.0之前版本中的DHCP客户端(udhcpc)没有从DHCP服务器响应中正确转义某些shell元字符,导致存在代码执行漏洞。远程攻击者可通过欺骗DHCP服务器以超级用户权限执行任意代码。攻击者可以进行反汇编出dropcam的代码。
- 修改IOS 上的Dropcam APP。发起Mitm(man in the middle ) 攻击。
- 克隆dropcam的音频
思想是:所有的音视频流都得从系统的API接口和IOCTL接口流出到dropcam的云端。 因此尝试连接音频卡: # arecord (ALSA声卡驱动的录音程序) #LD_PRELOAD=./injectMe.so /usr/biin/connect ALSA(Advanced Linux Sound Architecture)可以用来读取读取音频,例如: Get audio via snd_pcm_readn() 通过这种方式,研究者写了一段注入代码,里面读取音频数据,并把它发送到自己的服务器中。
- 获取视频
A) 打开设备/dev/iav B) 通过ioctl获取h264的参数, IAV_IOC_GET_H264_CONFIG_EX C) 通过ioctl 找到系统构建(BSB)内存映射图 IAV_IOC_MAP_BSB D) 通过ioctl 找到DSP 内存映射图 IAV_IOC_MAP_DSP E) 通过ioctl 获取流的状态 IAV_IOC_GET_ENCODE_STREAM_INFO_EX F) 最后,通过ioctl读取流数据,IAV_IOC_READ_BITSTREAM_EX
- 控制视频