Sadstrot木马分析报告
木马行为及危害
- 一旦运行,该木马立即申请root权限,为之后各种恶意行为做好铺垫;
- 创建一个detect进程,此进程下的模块插件与主进程进行通信,通过回调Java层代码、hook等方式收集用户隐私;
- 监听键盘输入,用户所有敲入的字符都会被窃取,包括银行账号密码、社交APP账号密码等;
- 接收云端指令,执行模块更新、删除指定文件等操作,给系统安全带来极大安全隐患。
木马执行流程
该木马的执行流程如下:
本地进程间通信协议
运行在com.sec.android.service.powerManager进程的libnativeLoad.so、libPowerDetect.cy.so,会创建大量的服务监听。当接收到来自detect进程中的插件模块发来的socket通信请求时,通过判断buffer的前2个字节作为魔术字进行匹配,执行相应操作。
详细分析
申请root权限,运行cInstall可执行文件
- cInstall文件会在应用的私有路径下创建工作目录与数据存储目录,将cache缓存中detect、plugin.dat、dtl.dat、glp.uin拷贝到指定的目录下。
- 读取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框架。
调用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” | 发送地理位置信息 |
… | … |