反窃听、反偷拍、反定位技术检测;防护、干扰、屏蔽设备销售、租赁。请点击上方蓝色字体关注我们
昨天的推文,引起了朋友圈很大的反响。在我们以后的推文中,会不断推送行业内各路大神遇到的各种情景,旨在告诉大家,防范政企机密泄露,个人隐私泄露,是一场持久、而且时刻都要注意的事情,而并不是仅限于一时。。
原文:斯诺登:关机窃听原理与实现
本文非保密知行原创,转载请联系原作者
前言
斯诺登此前在接受采访时曾指出美国安全局(NSA)可以对手机进行窃听,即使是在关机的情况下也不能幸免。
在3年前的GeekPwn大赛上,来自KeenTeam的高手现场演示了Android手机在关机状态下被黑客通过听筒进行窃听的全过程。
视频地址:关注移动安全——关机窃听_腾讯视频
"没有想不到,只有做不到"。在强烈的好奇心的驱使下,笔者根据猜想,分析和模仿实现了一个类似的场景。技术原理就是在Android手机上安装用于窃听的程序伪装成关机状态后实现监听、偷拍等操作,并远程发送给坏人。
先看看效果,手机虽然被"关机"了,但是电话仍然可以拨通,这时声音会通过电话传给黑客而让用户毫不察觉。
安卓系统源码分析
要对关机做手脚,先要了解它到底是怎么关机的。来看下Android源码对关机事件的处理。从按电源键开始,下面是PhoneWindowManager.interceptKeyBeforeQueueing方法的部分代码:
nterceptKeyBeforeQueueing方法主要做一些对特殊按键的处理,这里可以看到当电源键按下时做一些处理,最后进入了interceptPowerKeyDown。
在interceptPowerKeyDown中,判断参数handled,如果为false就延时500ms触发一个Runnable,这里主要负责检测长按事件。
进入LONG_PRESS_POWER_GLOBAL_ACTIONS这个case,分别执行以下动作:
1. 发起振动;
2. 请求关闭所有窗口;
3. 显示关机对话框。
关注一下第三步,这里调用showGlobalActionsDialog显示一个关机选择对话框,进入这个方法后后直接转入GlobalActions.showDialog
在showDialog中再调用createDialog创建一个对话框列表供用户选择"关机"、"飞行模式"、"静音"等操作,以下为createDialog的部分代码
注意的onPress方法,这里调用mWindowManagerFuncs.shutdown。代码执行到这里framework层的工作基本就结束了,再往下分析就是关闭系统服务,还有Power.cpp中实现的电源管理,执行系统调用关闭内核等。要实现之前说的关机窃听不用再往下看,只要了解到这一步就够了。
不过还有个问题,mWindowManagerFuncs这个引用是怎么得到的,从刚才的代码开始向上回溯,最终找到了PhoneWindowManager类的init方法
Xposed模块实现
了解了Android处理关机的流程以后,想一想怎么关机窃听呢?断电了还怎么窃听?你问我,我也不知道。不过要实现看上去像是"关机窃听",这我倒是知道怎么做。无非就是播放关机动画,然后让手机装死,让用户以为它真的关机了,其实只是屏幕黑了、声音没了、按键没反应了而已。
要对手机的关机过程做手脚,首先要了解它到底是怎么关机的。正常关机步骤如下:
1、长按关机键;
2、提示用户是否关机;
3、结束所有程序;
4、播放关机动画;
5、关闭屏幕;
6、关闭电源。
要实现我们的伪装关机目的,我们得在第6步之前进行劫持,添加以下这些新的功能:关闭系统音量、关闭震动、屏蔽按键,来电自动挂断。
此时,对于用户来说:正常按电源键关机,看到系统的关机动画,看到屏幕变黑,手机没有任何声音、按任何键都没有反应。用户觉得“嗯,没错,是关机了”。但事实上,正常应有的第6步是没有执行的,虽然手机没反应了,但是电源依旧开着,黑客在默默地控制着手机,他们可以随意偷取短信、发短信、拍照上传、语音窃听、地理位置监控等。
现在要做的是当用户要关机的时候阻止用户关机,并且实施自己的"关机窃听"计划。劫持关机动作只需要挂钩mWindowManagerFuncs对象的shutdown方法。挂钩的话这里我们采用的是xposed框架。
之前说到mWindowManagerFuncs的引用是在PhoneWindowManager的init中传过来的,从这里入手吧,Hook之
在init方法结尾处插入一段代码,把this对象(即phoneWindowManager的引用)保存下来,取到this.mWindowManagerFuncs,反射它,利用它再次Hook它自己的shutdown方法。
在shutdown执行之前保存一个关机flag,然后显示关机动画,直接返回方法,阻止系统真实关机。在播放关机动画的同时还延时5秒抛了一个Runnable。
关机时保存的flag主要用来阻止一些系统事件,如按键、屏幕唤醒等,使伪装关机更加真实
5秒以后关闭关机窗口,关闭系统音量,休眠机器,放一个Recriver监听来电,一有来电自动接听
发现与防御
要发现这种攻击其实也很简单,只要抓住他的弱点——关机状态下检查手机和SIM卡的使用情况,如通话记录、流量记录等,实在有强迫症的同学可以把手机电池抠出来。
至于防御,要及时更新系统,不要安装未知来源的APP。总之还是一句话:珍爱Android,远离root。
山东知行信息安全技术有限公司为您提供一下服务!
1、有线、无线窃听偷拍检测服务
2、特殊场所信号防护屏蔽服务
3、环境安全检测评估服务
4、反跟踪定位(汽车)检测服务
5、手机、计算机泄密安全检测服务
政企安全防护:18653681316 微信同号 QQ:583865188
个人隐私安全:18364643355 微信同号 QQ:850885221