斯诺登此前在接受采访时曾指出美国国家安全局(NSA)可以对手机进行窃听,即使是在关机的情况下也不能幸免。
目前创新互联已为千余家的企业提供了网站建设、域名、网页空间、网站托管维护、企业网站设计、古城网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
就在不久前的GeekPwn大赛(一个旨在演示智能设备安全漏洞利用、宣传安全意识的会议)上,来自KeenTeam的高手现场演示了Android手机在关机状态下被***通过听筒进行窃听的全过程,如此炫酷的神技原来果真存在。
视频地址:http://v.qq.com/page/v/e/x/v0141kvwrex.html
“没有想不到,只有做不到”。在强烈的好奇心的驱使下,笔者根据猜想,分析和模仿实现了一个类似的场景。技术原理就是在Android手机上安装用于窃听的程序伪装成关机状态后实现监听、偷拍等操作,并远程发送给坏人。
先看看效果,手机虽然被“关机”了,但是电话仍然可以拨通,这时声音会通过电话传给***而让用户毫不察觉。
安卓系统源码分析
要对关机做手脚,先要了解它到底是怎么关机的。来看下Android源码对关机事件的处理。从按电源键开始,下面是PhoneWindowManager.interceptKeyBeforeQueueing方法的部分代码,如图1。
图 1
interceptKeyBeforeQueueing方法主要做一些对特殊按键的处理,这里可以看到当电源键按下时做一些处理,最后进入了interceptPowerKeyDown。
图 2
如图2,在interceptPowerKeyDown中,判断参数handled,如果为false就延时500ms触发一个Runnable,这里主要负责检测长按事件。
图 3
如图3,进入LONG_PRESS_POWER_GLOBAL_ACTIONS这个case,分别执行以下动作:
1. 发起振动;
2. 请求关闭所有窗口;
3. 显示关机对话框。
关注一下第三步,这里调用showGlobalActionsDialog显示一个关机选择对话框,进入这个方法后后直接转入GlobalActions.showDialog,如图4。
图 4
如图4,在showDialog中再调用createDialog创建一个对话框列表供用户选择“关机”、“飞行模式”、“静音”等操作,以下为createDialog的部分代码,如图5。
图 5
注意图5的onPress方法,这里调用mWindowManagerFuncs.shutdown。代码执行到这里framework层的工作基本就结束了,再往下分析就是关闭系统服务,还有Power.cpp中实现的电源管理,执行系统调用关闭内核等。要实现之前说的关机窃听不用再往下看,只要了解到这一步就够了。
不过还有个问题,mWindowManagerFuncs这个引用是怎么得到的,从刚才的代码开始向上回溯,最终找到了PhoneWindowManager类的init方法,如图6。
图 6
Xposed模块实现
了解了Android处理关机的流程以后,想一想怎么关机窃听呢?断电了还怎么窃听?你问我,我也不知道。不过要实现看上去像是“关机窃听”,这我倒是知道怎么做。无非就是播放关机动画,然后让手机装死,让用户以为它真的关机了,其实只是屏幕黑了、声音没了、按键没反应了而已。
现在要做的是当用户要关机的时候阻止用户关机,并且实施自己的“关机窃听”计划。劫持关机动作只需要挂钩mWindowManagerFuncs对象的shutdown方法。挂钩的话这里我们采用的是xposed框架。
之前说到mWindowManagerFuncs的引用是在PhoneWindowManager的init中传过来的,从这里入手吧,Hook之,如图7。
图 7
如图8,在init方法结尾处插入一段代码,把this对象(即phoneWindowManager的引用)保存下来,取到this.mWindowManagerFuncs,反射它,利用它再次Hook它自己的shutdown方法。
图 8
如图9在shutdown执行之前保存一个关机flag,然后显示关机动画,直接返回方法,阻止系统真实关机。在播放关机动画的同时还延时5秒抛了一个Runnable。
图 9
关机时保存的flag主要用来阻止一些系统事件,如按键、屏幕唤醒等,使伪装关机更加真实,如图10。
图 10
5秒以后关闭关机窗口,关闭系统音量,休眠机器,放一个Recriver监听来电,一有来电自动接听,如图11。
图 11
发现与防御
要发现这种***其实也很简单,只要抓住他的弱点——关机状态下检查手机和SIM卡的使用情况,如通话记录、流量记录等,实在有强迫症的同学可以把手机电池抠出来(要是你是高大上的iPhone系列那就把手机放远点,再远一点)。
至于防御,要及时更新系统,不要安装未知来源的APP。总之还是一句话:珍爱Android,远离root。
文中提到的工具可以在“腾讯安全应急响应中心”的实验室中下载到
地址:http://security.tencent.com/index.php/opensource/detail/14
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。