简单的工作室

《窃听风云》关机窃听原理与实现

时间:2014-11-28 08:47来源:未知 作者:简单的工作室 点击:
斯诺登此前在接受采访时曾指出美国国家安全局(NSA)可以对手机进行窃听,即使是在关机的情况下也不能幸免。 就在不久前的GeekPwn大赛(一个旨在演示智能设备安全漏洞利用、宣传安全意识的会议)上,来自KeenTeam的高手现场演示了Android手机在关机状态下被黑客通过听筒

斯诺登此前在接受采访时曾指出美国国家安全局(NSA)可以对手机进行窃听,即使是在关机的情况下也不能幸免。

就在不久前的GeekPwn大赛(一个旨在演示智能设备安全漏洞利用、宣传安全意识的会议)上,来自KeenTeam的高手现场演示了Android手机在关机状态下被黑客通过听筒进行窃听的全过程,如此炫酷的神技原来果真存在。

“没有想不到,只有做不到”。在强烈的好奇心的驱使下,笔者根据猜想,分析和模仿实现了一个类似的场景。技术原理就是在Android手机上安装用于窃听的程序伪装成关机状态后实现监听、偷拍等操作,并远程发送给坏人。

先看看效果,手机虽然被“关机”了,但是电话仍然可以拨通,这时声音会通过电话传给黑客而让用户毫不察觉。

1

安卓系统源码分析

要对关机做手脚,先要了解它到底是怎么关机的。来看下Android源码对关机事件的处理。从按电源键开始,下面是PhoneWindowManager.interceptKeyBeforeQueueing方法的部分代码,如图1。

2

 

interceptKeyBeforeQueueing方法主要做一些对特殊按键的处理,这里可以看到当电源键按下时做一些处理,最后进入了interceptPowerKeyDown。

3

如图2,在interceptPowerKeyDown中,判断参数handled,如果为false就延时500ms触发一个Runnable,这里主要负责检测长按事件。

4

如图3,进入LONG_PRESS_POWER_GLOBAL_ACTIONS这个case,分别执行以下动作:

1.     发起振动;

2.     请求关闭所有窗口;

3.     显示关机对话框。
关注一下第三步,这里调用showGlobalActionsDialog显示一个关机选择对话框,进入这个方法后后直接转入GlobalActions.showDialog,如图4。

5

如图4,在showDialog中再调用createDialog创建一个对话框列表供用户选择“关机”、“飞行模式”、“静音”等操作,以下为createDialog的部分代码,如图5。

6

注意图5的onPress方法,这里调用mWindowManagerFuncs.shutdown。代码执行到这里framework层的工作基本就结束了,再往下分析就是关闭系统服务,还有Power.cpp中实现的电源管理,执行系统调用关闭内核等。要实现之前说的关机窃听不用再往下看,只要了解到这一步就够了。
不过还有个问题,mWindowManagerFuncs这个引用是怎么得到的,从刚才的代码开始向上回溯,最终找到了PhoneWindowManager类的init方法,如图6。

7

Xposed模块实现
了解了Android处理关机的流程以后,想一想怎么关机窃听呢?断电了还怎么窃听?你问我,我也不知道。不过要实现看上去像是“关机窃听”,这我倒是知道怎么做。无非就是播放关机动画,然后让手机装死,让用户以为它真的关机了,其实只是屏幕黑了、声音没了、按键没反应了而已。
现在要做的是当用户要关机的时候阻止用户关机,并且实施自己的“关机窃听”计划。劫持关机动作只需要挂钩mWindowManagerFuncs对象的shutdown方法。挂钩的话这里我们采用的是xposed框架。
之前说到mWindowManagerFuncs的引用是在PhoneWindowManager的init中传过来的,从这里入手吧,Hook之,如图7。

8如图8,在init方法结尾处插入一段代码,把this对象(即phoneWindowManager的引用)保存下来,取到this.mWindowManagerFuncs,反射它,利用它再次Hook它自己的shutdown方法。

9

如图9在shutdown执行之前保存一个关机flag,然后显示关机动画,直接返回方法,阻止系统真实关机。在播放关机动画的同时还延时5秒抛了一个Runnable。

10

关机时保存的flag主要用来阻止一些系统事件,如按键、屏幕唤醒等,使伪装关机更加真实,如图10。

11

5秒以后关闭关机窗口,关闭系统音量,休眠机器,放一个Recriver监听来电,一有来电自动接听,如图11。

12

发现与防御
要发现这种攻击其实也很简单,只要抓住他的弱点——关机状态下检查手机和SIM卡的使用情况,如通话记录、流量记录等,实在有强迫症的同学可以把手机电池抠出来(要是你是高大上的iPhone系列那就把手机放远点,再远一点)。
至于防御,要及时更新系统,不要安装未知来源的APP。总之还是一句话:珍爱Android,远离root。

 

文中提到的工具可以在“腾讯安全应急响应中心”的实验室中下载到
地址:http://security.tencent.com/index.php/opensource/detail/14

简单的工作室本地下载:hijackAndroidPowerOff-master

(责任编辑:简单的工作室)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片