2014年11月18日星期二

Android/Malware(二)Xposed恶意插件可自动安装激活

(2014年11月18日发在AVLTeam blog Xposed恶意插件可自动安装激活

0x0 概述

AVL移动安全团队在之前的《Xposed恶意插件》一文中分析了一个Xposed恶意插件,但是由于Xposed模块需要手动勾选重启后才能生效,导致应用场景有限。之后网友MindMac提供了一个可自动安装激活的Xposed恶意插件demo(需Root权限),以下是对此恶意插件的详细代码分析。

0x1 详细分析

安装开启该demo后在后台会自行安装Xposed,并勾选自身AutomaticXposed,之后自动重启系统使模块激活生效:
启动样本即进入Xposed的安装和激活:

检查是否安装了Xposed

首先检查是否安装过Xposed,若未安装则安装样本内嵌的Xposed。

静默安装Xposed插件

释放Xposed安装apk到sdcard:

获取su权限,通过pm来静默安装Xposed:

自动激活Xposed插件功能

启动Xposed的InstallService服务,通过Intent参数设置“Enable module”激活样本:
此服务原本实际上并不含有Xposed插件,属于作者重打包添加,所以此处demo的激活方式只适用于未安装Xposed的手机,若已安装则无法生效。

修改内嵌子包,添加InstallService激活插件并重启动系统

样本内嵌子包属于Xposed框架的安装包,但作者修改过,添加了一个InstallService用来激活插件以及重启动系统。
包结构主要差异对比,左为原版Xposed框架安装包,右为样本内嵌Xposed:

作者修改过的XposedInstall添加了InstallService,并使其导出以至于可以被外部调用:

服务运行之后首先检查手机系统版本和Xposed版本的兼容性,之后则设置勾选插件、重启系统激活插件:

复现原版Xposed的正常启动流程,因是样本直接激活没有通过正常的Xposed启动,故需如此:

调用原版ModuleUtil类的setModuleEnabled方法。修改Xposed配置文件,设置插件可用:

配置文件位于:/data/data/de.robv.android.xposed.installer/shared_prefs/enabled_modules.xml,将样本包名com.mindmac.xposed置值为1
原版ModuleUtil类的updateModulesList方法 给/data/data/de.robv.android.xposed.installer/conf/modules.list文件写入样本完整路径:
配置完成之后,重启系统以便使设置生效:

0x2 总结

该样本虽然只是一个demo,但实现了自动安装Xposed及其插件,并自动勾选重启激活插件的功能。但若被恶意代码利用,可能会导致更严重的损害,请谨慎使用。
不过该样本目前只适用于未安装Xposed的手机,已经安装Xposed后则无法激活,而且内嵌的Xposed属于重打包需要另外添加模块。如果已经安装了Xposed,在Root权限下通过修改Xposed的配置文件来进行激活会更合适。
最后感谢MindMac 对AVL Team的关心和帮助,用户可以使用AVL Pro对此类工具进行检测。
附:网友MindMac提供的demo来源:https://github.com/MindMac/XposedAutomation

2014年11月8日星期六

iOS/Malware(一)wirelurker-iOS样本分析

(发布于安天官网 “破界”木马(WIRELURKER)综合分析报告,主要分析了其中iOS部分样本)

4.4         “破界”运行于iOS平台核心文件(sfbase.dylib)分析

1.         start启动apps应用程序后,该应用程序会将其文件中的sfbase.dylibCydia插件的形式运行。
2.         窃取隐私:sfbase.dylib通过MSHookMessageExhook sendEvent函数,用于获取UIWindow相关的数据,电话、短信、浏览器、移动储存挂载、搜索、系统偏好等。
3.         通过getPhoneUser将通信录数据库拷贝到tmp临时空间,再通过查询语句获取内容。
4.         通过getSMSUser将短信数据库拷贝到tmp临时空间,再通过查询语句获取内容,其中包括了iMessage信息。
5.         最后使用getLoaclInfo将获取到的本地信息调用uploadFromFile函数通过POST上传信息,地址为:www.comeinbaby.com/app/saveinfo.php
6.         检查更新:sfbase.dylib通过CheckUpdate调用CheckUpdate2检查是否有新版本,下载到临时空间并释放CheckUpdate2函数会检测样本是否有版本更新,地址为:http://www.comeinbaby.com/app/getversion.php?v=%@&adid=%@,其中参数v值为getCurrentVersion数据,即版本号;参数adid值为sharedManager+advertisingIdentifier+UUIDString数据;目前该域名已经不可访问。


CVE/CNVD list

报告记录&poc: 最近fuzz出了不少crash,提交记录git: https://github.com/gandalf4a/crash_report 其中CVE记录如下: (不定期持续更新) 2025 CVE-2025-22134:heap-buffer-o...