窃听风云——关机窃听原理与实现
前言
创新互联建站服务项目包括分宜网站建设、分宜网站制作、分宜网页制作以及分宜网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,分宜网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到分宜省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
斯诺登此前在接受采访时曾指出美国国家安全局(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
文章名称:窃听风云——关机窃听原理与实现
网页URL:http://hbruida.cn/article/ijishg.html