Hacking Team 武器库研究(三):core-android-audiocapture

泄露的core-android-audiocapture一款Android平台下基于DBI Hook框架的语音窃取工具,可窃取当前国内外流行的即时聊天工具,比如wechat、whatsapp、skype等等。

##【源码分析】

1、搜索 mediaserver 进程,然后注入libt.so,并将窃取的语音文件dump到指定目录。

2、查看libt.c源码,其动态链接库的构造函数为my_init,这里参数和返回值都必须为空。

3、检测当前的Android系统是否为4.x版本,然后分不同的子版本进行处理。

4、比如对于Android 4.0版本,会指定mStramType和mname的偏移量,不同系统版本对应的偏移量不同,同时也定义一些将被hook的函数,这些Hook_coverage_x是定义在hijack_func/hooker.h中,对应的函数名在注释代码中已经写得很清楚,主要是Hook Android系统的audio接口提供库libaudiofinger.so里的函数,以用于实现录音(RecordThread)和放音(PlaybackThread)功能。


5、以Hook回调函数recordTrack_getNextBuffer3_h为例分析下它的修改行为,该函数定义在hijack_func/hooker_thumb.c中,原getNextBuffer获取的缓冲区主要是用于存放录音数据,而录音的开始、停止动作的相关函数也是被hook掉。在recordTrack_getNextBuffer3_h函数中先调用原始函数,得到返回后的结果,然后获取帧大小、采样率、帧数以及原始的AudioBufferProvider::Buffer地址。

6、创建指定格式的文件名,将语音数据dump出来写入到前面创建的文件:

7、录音Hook的日志记录如下,其它hook动作类似,此处就不一一分析。

8、生成的dump文件,会再调用decode.py去转换成wav语音文件

##【结语】

网上有人说这工具会去解密微信的语音格式,其实它根本没有做这方面的处理,也没必要,因为它Hook的Android系统的Audio库,当你使用一些即时聊天工具进行语音对话时,就会触发放音的函数,此时语音数据早就可以拿到,而decoder.py只是作一些wav的格式化处理,使得dump出来的文件能够转换成可播放的wav文件。在decoder目录下的一些聊天工具目录,只不过是Hacking Team成员在作一些测试而已。