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

    日期:2015-07-12 | 分类:终端安全

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/riusksk-logs/272270658.html

    泄露的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成员在作一些测试而已。
    分享到: