教你怎样关闭Windows的摄像头指示灯(含视频)

2013-12-30 +10 1070455人围观 ,发现 31 个不明物体 极客系统安全

最近不少新闻说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

这些评论亮了

  • hety (1级) 回复
    您所说的这个dll文件在哪个位置呢?谢谢啦
    )21( 亮了
  • 玩逆向的,为啥头那么光????
    )12( 亮了
  • whitemonty (4级) 这家伙很懒,就是不肯写个人说明! 回复
    @90 我有创可贴,嘛嘛再也不用担心我的avi了
    可是爸比还是担心我的麦克风……
    是谁抢走了我的麦克风
    没关系 我还有我的喉咙
    是谁看扁了我没有观众
    我自己第一个被感动……动……动……
    )11( 亮了
  • 完了... 马上粘住摄像头
    )10( 亮了
发表评论

已有 29 条评论

取消
Loading...
css.php