安卓手机间谍软件正利用生成式AI进入一个新阶段

admin 2026-03-03 07:38:04 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: ESET揭露安卓恶意软件PromptSpy,首创利用生成式AI辅助攻击。它滥用辅助功能服务,通过AI解析UIXML结构指导操作,实现跨设备自适应的应用锁定持久化。该软件具备VNC远程控制、密码拦截及防卸载功能,用户需通过安全模式清除。这标志着移动威胁进入AI自动化新阶段。 综合评分: 90 文章分类: 恶意软件,移动安全,AI安全,威胁情报,逆向分析


cover_image

安卓手机间谍软件正利用生成式AI进入一个新阶段

原创

黑鸟 黑鸟

黑鸟

2026年2月20日 23:28 广东

随着生成式人工智能(GenAI)技术的普及,其在网络攻击领域的武器化应用正进入新阶段。

此前,恶意软件多借助 AI 生成诈骗文案或辅助代码编写,少数机器学习模型被用于广告欺诈等自动化场景,但尚未有将生成式 AI 深度嵌入运行时执行流程的案例。

ESET 研究团队在 2025 年 8 月发现首款 AI 驱动的勒索软件 PromptLock 后,于 2026 年 2 月又揭露了全新的安卓恶意软件家族 PromptSpy, 这是首个在执行过程中直接调用生成式 AI 实现上下文感知型 UI 操控的移动威胁,标志着安卓恶意软件正式迈入生成式 AI 赋能的新纪元。

传统安卓恶意软件依赖硬编码的屏幕坐标或 UI 元素标识符实现自动化操作,然而面对三星 One UI、小米 MIUI 等不同厂商的定制系统,以及多样的屏幕尺寸和系统版本,这类固定逻辑极易失效,导致恶意软件的持久化能力大幅受限。PromptSpy 的出现彻底打破了这一桎梏,它创新性地整合谷歌 Gemini 模型,将生成式 AI 的上下文理解能力转化为跨设备的自适应攻击优势,为移动安全领域带来了全新的挑战与警示。

PromptSpy通过各种手段,让受害者安装并启动后,会显示一个提示,敦促用户安装看似是应用程序的更新版本。这个“更新”实际上是 PromptSpy 的payload,用户必须手动安装。

PromptSpy 安装并启动后,会请求辅助功能服务权限,使恶意软件能够读取屏幕内容并执行自动点击操作。

辅助功能服务(Accessibility Service) 是安卓系统原生的系统级核心权限,最早为视障、肢体障碍等有操作困难的残障用户设计,是安卓无障碍体系的核心能力。

它的核心原生能力包括:

全量读取当前屏幕的所有 UI 元素信息(文本、类型、坐标、层级、状态等),可导出完整的 UI XML 结构;

全局监听界面交互事件,跨应用、跨界面无沙盒限制;

无用户感知地模拟用户的所有触摸操作:点击、长按、滑动、手势、文本输入等;

实现界面覆盖、窗口拦截等系统级界面操控。

该权限默认处于关闭状态,必须由用户手动进入系统设置主动开启,开启时系统会强制弹出高风险提示,明确告知用户:授予该权限的应用将获得设备的完全控制权,可查看屏幕所有内容、代表用户执行任意操作。

然后,PromptSpy 会在前台显示一个简单的加载界面作为诱饵。

与此同时,在后台,它开始与 Gemini AI 通信,以获取将其进程锁定在“最近使用的应用”列表中所需的指令,这是一种简单的持久化技术,即使设备重启后,PromptSpy 也能保持活动状态并锁定在原位。

黑鸟解释一下,应用固定(App Pinning)该功能是安卓 5.0(API 21)就加入的官方原生能力,设计初衷是安全场景的前台应用限制(比如借他人使用手机时,仅允许对方使用指定单一应用)。开启后,目标应用会被固定在前台与最近任务列表,无法被滑动清除,也不会被系统内存回收机制杀死,必须通过用户验证锁屏密码 / 手动退出固定才能解除。

最近任务列表锁定(后台锁定),绝大多数安卓厂商,都在自家定制系统中对该能力做了扩展,推出了更轻量化的多任务卡片锁定 / 后台锁定功能:用户在最近任务(多任务)界面,长按应用卡片即可触发锁定,锁定后卡片会显示锁形标识,应用无法被一键清理、滑动清除,也不会被系统后台查杀,是普通用户常用的 APP 保活手段。

这正是 PromptSpy 核心滥用的功能,不同厂商、不同系统版本、不同屏幕尺寸的设备,该锁定操作的 UI 入口、触发手势、步骤完全不同,传统硬编码坐标的恶意脚本极易失效,因此攻击者才引入生成式 AI 做动态 UI 识别与适配。

配合开机广播监听(BOOT_COMPLETED),设备重启后恶意程序可再次自动执行锁定流程,实现长期驻留

当用户看到“正在加载,请稍候”的提示时,PromptSpy 会使用辅助功能服务打开“最近使用的应用”屏幕,并收集详细的 UI 信息:

可见文本、内容描述、类名、包名和屏幕边界。

它会将此动态 UI 快照序列化为 XML,并将其包含在发送给 Gemini 的提示中。

然后,Gemini 会返回分步点击说明,指导用户如何实现“应用锁定”手势。 这个过程形成一个连续循环: PromptSpy 将更新后的 UI 上下文发送到 Gemini 双子座以新的行动回应 PromptSpy 执行这些命令并返回生成的屏幕状态。 循环持续进行,直到 Gemini 确认该应用已成功锁定在最近使用的应用列表中。

以下是一个示例结构:

英文提示词

You&nbsp;are an&nbsp;Android&nbsp;automation assistant.&nbsp;The&nbsp;user will give you the&nbsp;UI&nbsp;XML&nbsp;data of the current screen.&nbsp;You&nbsp;need to analyze the&nbsp;XML&nbsp;and output operation instructions&nbsp;in&nbsp;JSON&nbsp;format to achieve the user's goal.\nNodes&nbsp;in&nbsp;the&nbsp;XML&nbsp;contain 'bounds' attributes&nbsp;in&nbsp;the format '[left,top][right,bottom]'.&nbsp;You&nbsp;need to calculate the center coordinates to generate click instructions.\n\n***&nbsp;Core&nbsp;Judgment&nbsp;Rules&nbsp;***\n1.&nbsp;**Do&nbsp;NOT&nbsp;guess that the task&nbsp;is&nbsp;completed**.&nbsp;Only&nbsp;return&nbsp;'COMPLETED' when you clearly see visual evidence of success&nbsp;in&nbsp;the current&nbsp;UI&nbsp;XML&nbsp;(e.g., text like 'Saved', 'Success' appears,&nbsp;switch&nbsp;status becomes checked=\"true\", or the screen has navigated to the target state).\n2. If you performed the last step but the current XML does not reflect the result yet, return 'IN_PROGRESS' with action 'NONE' (or wait) to check the new UI state in the next cycle.\n3. If unsure, remain 'IN_PROGRESS' and attempt to verify.\n4. If the current UI XML is empty, use 'RECENTS' to access the recent apps list.\n\nYou can use SWIPE to scroll\/slide to find targets:\nWhen action_type =&nbsp;\"SWIPE\", you must provide x1,y1,x2,y2,duration_ms.\ne.g., Scroll UP: slide from bottom to top (y2 < y1).\n\nPlease strictly follow this JSON output format, do not output any Markdown tags or extra text:\n{\n&nbsp;&nbsp;\"status\":&nbsp;\"IN_PROGRESS\"&nbsp;|&nbsp;\"COMPLETED\"&nbsp;|&nbsp;\"IMPOSSIBLE\",\n&nbsp;&nbsp;\"reasoning\":&nbsp;\"Detailed explanation: what specific text or state I saw on the screen to judge the task is completed or needs next <REDACTED>User Goal: Lock the current MorganArgs app in the recent apps list. Device info: <DEVICE MODEL>&nbsp;\n\nCurrent UI XML: <UI>

提示翻译后:

你是一名安卓自动化助手。用户将为你提供当前屏幕的UI XML数据,你需要对该XML进行分析,并以JSON格式输出操作指令,完成用户指定的目标。 XML中的节点包含格式为[left,top][right,bottom]的bounds(边界)属性,你需要计算其中心坐标,以生成对应的点击指令。  *** 核心判断规则 *** 1.  **严禁臆断任务已完成**。仅当你在当前UI XML中明确看到任务成功的可视化证据时,才可返回COMPLETED(例如:出现“已保存”“成功”等文本、开关状态变为checked=”true”,或屏幕已跳转至目标状态)。 2.  若你已执行上一步操作,但当前XML尚未体现操作结果,请返回IN\_PROGRESS,并将动作设为NONE(即等待),在下一个执行周期中检查新的UI状态。 3.  若无法确定结果,请保持IN\_PROGRESS状态,并尝试进行验证。 4.  若当前UI XML为空,请使用RECENTS指令访问最近应用列表。  你可使用SWIPE(滑动)操作滚动页面以查找目标: 当action_type(动作类型)为SWIPE时,你必须提供x1,y1,x2,y2,duration_ms(持续时长,单位:毫秒)参数。 示例:向上滚动:从屏幕底部向顶部滑动(y2 < y1)。  请严格遵循以下JSON输出格式,请勿输出任何Markdown标签或额外文本: {   "status": "IN_PROGRESS" | "COMPLETED" | "IMPOSSIBLE",   "reasoning": "详细说明:我在屏幕上看到了哪些具体文本或状态,以此判断任务已完成,或需要执行下一步操作<注释掉了这里有兴趣可以自己逆向APP看一下>用户目标:将当前的 MorganArgs 应用锁定在最近应用列表中。设备信息:当前 UI XML:

Gemini 的响应(操作说明):

{“status”:”IN_PROGRESS”,”reasoning”:”我已访问最近应用列表,能看到’MorganArgs’出现在最近应用列表中。下一步需长按’MorganArgs’应用卡片,调出选项菜单,该菜单中应包含应用锁定选项。”,”action_type”:”LONG_CLICK”,”x”:586,”y”:1126,”x1″:-1,”y1″:-1,”x2″:-1,”y2″:-1,”duration_ms”:-1}

&nbsp;status\":&nbsp;\"IN_PROGRESS\",\n&nbsp;&nbsp;\"reasoning\":&nbsp;\"I have accessed the recent apps list. I can see 'MorganArgs' listed in the recent apps. The next step is to long-click on the 'MorganArgs' app card to bring up the options menu, which should include an option to lock it.\",\n&nbsp;&nbsp;\"action_type\":&nbsp;\"LONG_CLICK\",\n&nbsp;&nbsp;\"x\": 586,\n&nbsp;&nbsp;\"y\": 1126,\n&nbsp;&nbsp;\"x1\": -1,\n&nbsp;&nbsp;\"y1\": -1,\n&nbsp;&nbsp;\"x2\": -1,\n&nbsp;&nbsp;\"y2\": -1,\n&nbsp;&nbsp;\"duration_ms\": -1\n)

恶意软件后续更新的屏幕结果:之前的操作已执行完毕。这是新的 UI XML,请判断任务是否完成或提供下一步指令:<当前可见活动>

The previous action has been executed. This&nbsp;is&nbsp;the new UI XML, please determine&nbsp;if&nbsp;the task&nbsp;is&nbsp;complete&nbsp;or&nbsp;provide the&nbsp;next&nbsp;instruction: <CURRENTLY VISIBLE ACTIVITY>

Gemini 建议的所有操作:点击、滑动、导航,都是通过辅助功能服务执行的,这使得恶意软件无需用户输入即可与设备进行交互。

PromptSpy 的主要恶意功能在于其内置的 VNC 服务。这使得攻击者能够远程实时查看受害者的屏幕并完全控制设备。

该恶意软件使用 VNC 协议与其硬编码的命令与控制 (C&C) 服务通信;消息使用硬编码密钥进行 AES 加密。通过此通信通道,该恶意软件可以:

收到 Gemini API 密钥,

上传已安装应用列表

拦截锁屏密码或PIN码,

将图案解锁屏幕录制成视频,

报告屏幕是开启还是关闭状态。

报告当前前台应用程序,

记录服务器指定应用程序的屏幕和用户手势,以及

按需截屏。

PromptSpy 还滥用辅助功能服务作为一种反卸载机制。

当用户尝试卸载有效载荷或禁用辅助功能服务时,该恶意软件会在屏幕特定区域(尤其是包含“停止”、“结束”、“清除”和“卸载”等子字符串的按钮)上叠加透明矩形。

这些叠加层对用户不可见,但会拦截交互,使卸载变得困难。

如图所示,当启用了 PromptSpy 的调试标志(开发者默认启用),该标志会设置透明矩形的颜色,以便可视化它们的具体显示位置。然而,在实际设备上,这些矩形是完全不可见的。

所以感染了该app的用户可能不知道如何去进行卸载清除操作。

由于 PromptSpy 通过在屏幕上覆盖不可见的元素来阻止卸载,因此受害者移除它的唯一方法是将设备重启到安全模式,在该模式下,第三方应用程序会被禁用,并且可以正常卸载。

要进入安全模式,用户通常需要按住电源键,然后长按“关机”,并确认“重启到安全模式”的提示(具体方法可能因设备和制造商而异)。

手机重启进入安全模式后,用户可以前往“设置”→“应用”→“MorganArg”将其卸载,而不会造成任何干扰。

更多内容,有意思的可以查阅⬇️(全年无断更)


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:黑鸟 黑鸟 黑鸟《安卓手机间谍软件正利用生成式AI进入一个新阶段》

评论:0   参与:  0