Sadstrot木马分析报告

木马行为及危害

  • 一旦运行,该木马立即申请root权限,为之后各种恶意行为做好铺垫;
  • 创建一个detect进程,此进程下的模块插件与主进程进行通信,通过回调Java层代码、hook等方式收集用户隐私;
  • 监听键盘输入,用户所有敲入的字符都会被窃取,包括银行账号密码、社交APP账号密码等;
  • 接收云端指令,执行模块更新、删除指定文件等操作,给系统安全带来极大安全隐患。

木马执行流程

该木马的执行流程如下:
执行流程

本地进程间通信协议

运行在com.sec.android.service.powerManager进程的libnativeLoad.so、libPowerDetect.cy.so,会创建大量的服务监听。当接收到来自detect进程中的插件模块发来的socket通信请求时,通过判断buffer的前2个字节作为魔术字进行匹配,执行相应操作。
本地进程间通信协议

详细分析

申请root权限,运行cInstall可执行文件

  1. cInstall文件会在应用的私有路径下创建工作目录与数据存储目录,将cache缓存中detect、plugin.dat、dtl.dat、glp.uin拷贝到指定的目录下。
  2. 读取plugin.dat,解析获取指定id模块对应的插件名称,据此改名写入”/data/data/com.sec.android.service.powerManager/cores/Users/All Users/Intel”目录。

以上目录与文件均被赋予可读可写可执行权限,为之后各种恶意行为做好铺垫。
将cache缓存下的super拷贝到/system/bin/目录,并提权。之后将libPowerDetect.cy.so、libnativeLoad.so等文件拷贝到指定目录,并静默安装substrate hook框架。

**cInstall文件执行流程**
![](Sadstrot木马分析报告/27.png)
**将super拷贝到/system/bin目录下,并提权**
![](Sadstrot木马分析报告/28.png)
**静默安装substrate框架**

调用Substrate框架,hook键盘输入

运行substrate框架,libPowerDetect.cy.so在init_array段进行初始化时,便会调用Substrate框架提供的api,对输入法操作中的字符输入、结束输入、隐藏键盘等方法进行hook,并发送至detect进程。

创建大量的监听服务,运行detect可执行文件

libnativeLoad.so会调用以下jni方法,创建大量的监听服务,并运行detect可执行文件。

初始化主插件

detect可执行文件查找主插件下Initialplugin、NetWorkStateChanged这两个符号,并调用进行初始化。

主插件加载调用其他模块

WSDMoo.dat会调用执行其他模块下的SetCallbackInterface方法,并将一组函数指针作为参数传入,使其能够通过回调相应函数获取工作目录、插件配置等信息,且能为主插件添加一个上传任务。
获取winbrrnd.dat、sxwreg.dat插件中以下符号的地址,并调用。

收集QQ账户、好友等隐私信息

winbrrnd.dat插件的SetCallbackInterface方法会创建startListernQQMsgThread线程,获取QQ和微信账户、好友列表、消息记录等信息,输出到指定文件,并回调主插件的CbAddUploadFileTask函数添加一个上传任务。

Socket联网上传,获取指令,执行相应远控操作

Socket联网58.221.44.198:36895发送手机固件、插件信息、记录了从其他模块收集的隐私信息的文件。接收从服务器发来的消息,解析指令,执行相应操作。。

附录

附录1:指定ID模块对应的插件名

解析plugin.dat文件,获取assets目录下指定ID模块对应的插件名称,并将其改名写入到应用的工作目录。

pluginId PluginName
0 reltdy.dat
1 WSDMoo.dat
2 winbrrnd.dat
3 zipflldr.dat
4 sxwreg.dat

附录2:远控指令列表

远程指令 功能
“UPL” 更新插件模块
“PLI” 对插件模块进行初始化
“DIR” 查询指定目录下的信息
“DTK” 上传指定目录列表
“OSC” 在指定目录下进行检索操作
“OSF” 结束掉一个检索操作
“DEL” 删除指定文件
“SCP” 全屏截图
“BGS” 进行环境录音
“GPRS” 发送地理位置信息
------ 本文结束 感谢阅读 ------