HackingTeam源码泄漏——语音监控分析

发布者:wyzsk
发布于:2020-08-19 17:34
作者: 猎豹移动安全中心 · 2015/07/13 19:12

author:猎豹安全中心

0x00 前言


在HackingTeam泄漏的文件,我们发现了有针对主流聊天软件中的语言进行监控的代码,其中包括国内常用的微信。下面就以微信为例,来分析一下HackingTeam是如何实现语言监控的。

语音监控的相关代码在core-android-audiocapture-master文件夹下,通览全部源码之后,我们发现,语音监控的实现,主要是通过ptrace实现代码注入,将一个动态库注入到微信的进程中实现的。由于Android系统对权限的控制,要实现该目的,必须要拥有管理员权限才可以。也就是说,恶意软件需要先获取root权限,之后才能进一步实现语音监控。

0x01 实现


下面进入主题,说说是如何实现语音监控的。

core-android-audiocapture-master\dbi_release文件夹里面是程序主要代码,包括的文件如下

enter image description here

其中,hijack文件夹下包含了一份进程注入的代码,该代码的主要功能就是通过ptrace将一个动态链接库(*.so文件)注入到指定的进程里面,并执行。实际上关于进程注入的代码,之前已经有过很多个版本了,关于细节就不再赘述。相信在不久之后,基于HackingTeam泄漏版进行改写的hijack将会大量的出现。

当动态链接库文件被注入到微信进程之后,会直接调用初始化函数,该函数即为libt.c中的my_init函数。

在my_init函数开始部分,首先对系统版本进行了判断,并根据不同的版本采取不同的措施。

enter image description here

为了更容易理解,我们选取android 4.0的环境,看看my_init都做了写什么事情。

enter image description here

可以看到很多HOOK_coverage_XX形式的变量,这实际上是函数调用的宏定义。相关的定义在hijack_func\hooker.h文件中

enter image description here

根据上图可以知道,HOOK_coverage_XX实际上是调用了help_no_hash函数。那么我们先来总结一下help_no_hash函数都做了些什么,该函数在libt.c文件中定义。

首先,help_no_hash调用find_name来获取指定函数地址。find_name的实现在util.c文件中,过程就是通过指定的pid读取/proc/


声明:该文观点仅代表作者本人,转载请注明来自看雪