最近不少新闻说FBI能够不开摄像头指示灯的情况下打开摄像头。一些研究人员发表文章称在一些老版本的Macbook上测试成功了。可以参考破解苹果MacBook摄像头进行秘密监控。不过苹果是高富帅玩的啊,我们吊丝还是搞搞windows吧。
硬件,固件,驱动,软件
理论上来说,指示灯应该是一个硬件功能。当电源提供给摄像头的时候,也会提供电力到指示灯上。这样的话要想黑指示灯几乎是不可能的了。不过我不认为有人会这样来设计。
在有些情况下,指示灯是固件控制的功能。摄像头会有自己的微处理器来执行代码,控制指示灯只是固件的一个小功能。但是,固件依然是某种形式的软件,这就给了我们进行篡改的机会。
在有些情况下,是驱动控制着指示灯。可能是直接控制硬件的底层内核模式驱动,也可能是面向软件的高层的DLL文件。
逆向工程
作为逆向工程师,我们收集了这些可能控制指示灯的软件/固件/驱动,然后在IDApro中调试,很快就发现了一些关键的地方。
拿一个戴尔笔记本举例,我们发现摄像头的RealTek驱动中有一个函数“TurnOnOffLED()”
简单的修改了一下,让这个函数不执行打开指示灯,直接返回。下面是录制的一个演示视频:一开始是正常的,然后替换掉驱动的dll文件,打开摄像头之后,指示灯就不亮了。
关于USB设备
基本上所有的摄像头,包括笔记本内置的摄像头都是USB设备。对于usb摄像头,有一个标准叫UVC。按照这个标准,大部分设备可以在不使用 厂家定制驱动的情况正常运行在标准操作系统上(windows,linux,mac)。只有在使用一些高级特性才需要厂家提供的专用驱动。
这个标准中同样也规定了led指示灯是由主机软件控制的。linux平台上,有一套UVC工具集,安装之后可以直接使用命令来控制指示灯的打开和关闭。包括在摄像头打开的情况下关闭指示灯。
windows上要想实现的话看起来需要自己写一个过滤驱动。我们太懒了就没写,这也是上面的视频演示直接修改DLL文件的原因。不过我们认为FBI应该做了这件事,完成了一个针对UVC标准的过滤驱动,这样一个程序可以控制不同厂家的大部分摄像头指示灯。不然的话FBI就得针对不同的摄像头单独修改驱动。
USB还有很多有趣的特性。它的设计理念是一个用户不需要root/administrator权限就可以安装使用。因此,有了”用户模式“的驱动这样的思想,非管理员用户可以安装USB设备的驱动来使用它。
这个可以通过设备固件升级(Device Firmware Update,DFU)标准来实现。这意味着大多数情况下,没有管理员权限的用户可以更新摄像头的固件。文章开头提到的研究人员在2008 Macbook上就使用了这种方式。理论上来说,在现在的大部分windows 7笔记本上也是可行的。问题在于这种方式需要事先修改好各种摄像头芯片的固件。
结论
上面的视频可以证明至少我们已经在一台windows机器上实现了不开指示灯的情况下录像。而我们的研究表明,在常见操作系统上的大部分不同厂家的摄像头都可以实现秘密录像。
PS
现在的MacBooks已经不使用USB摄像头了。所以UVC和DFU的方式在最新的macbook上是无效的。
via blog.erratasec.com翻译整理 by litdg@freebuf
相关讨论:
noname 2013-12-30 1楼
楼主你这么叼,你父母知道不?
90 2013-12-30 2楼
吧摄像头驱动卸载了呢或者禁用掉 可以不
whitemonty (1级) 2014-01-04
@90 我有创可贴,嘛嘛再也不用担心我的avi了
可是爸比还是担心我的麦克风……
是谁抢走了我的麦克风
没关系 我还有我的喉咙
是谁看扁了我没有观众
我自己第一个被感动……动……动……
黑黑的白猫 (1级) 2013-12-30 3楼
玩逆向的,为啥头那么光????
pinnnk。 (1级) 2013-12-30 4楼
完了… 马上粘住摄像头
Hlly_M风迷 (1级) ID:Heee 2013-12-31 5楼
麻麻再也不用担心我偷看远程黑阔被发现了
lanmse 2013-12-31 6楼
哈哈,这次又有大量摄像头偷拍.avi了~~~
留言评论(旧系统):