资讯详情

资讯详情

Oblivion Android RAT:300美元自动化权限绕过背后的移动威胁

上周四晚上十一点威胁情报面板弹出一条新样本告警投递到公共沙箱的是一个名为Oblivion的Android安装包。我一开始以为又是某个换皮远控随手把包丢进分析队列直到第二天跑完动静分析回到群里看到一堆人在讨论一个“300美元就能买到”的新款Android RAT我才意识到就是它。这个叫Oblivion的东西宣传卖点很粗暴自动权限绕过、图标隐藏、远程控制一条龙配合相对便宜的价格正在把移动远控的门槛进一步拉低。这篇东西我想以从业者的身份把它的技术拆解一遍同时把“300美元接管手机”这个说法里的水分挤一挤。文章会从样本特征、黑产定价逻辑、权限绕过原理、隐蔽控制手法和防御对策几个角度展开。无论你是移动安全工程师、企业管理员还是单纯关心自己安卓手机安全性的普通用户这篇文章都会给你一套可复用的判断标准和防护动作。1. 从公共沙箱里的那条告警说起Oblivion在RAT家族里是什么位置1.1 一句话定义以及它和传统远控的坐标差异广义上的Android远控我大致分成三类传统RAT、银行木马、以及现在越来越流行的“综合型移动控制工具”。传统RAT偏重信息收集常驻后台偷联系人、短信、通话记录翻文件银行木马则把精力放在金融类App上用覆盖攻击和界面劫持骗账号密码。Oblivion不属于其中任何一类它更像把两者的能力缝到了一起再叠加上一套自动化授权引擎。从静态代码看这个样本的核心模块并不复杂复杂的是它把这些旧手法编排成了一个更完整的流水线。比如它内置了无障碍服务监听、节点查找与自动点击逻辑还会在拿到辅助功能权限之后把短信、联系人、地理位置、通话记录这些危险权限一次性“顺手”通过系统弹窗授权。你很难用“技术领先”来形容它但你会很直观地感觉到一个对Android内部机制不怎么了解的人拿到这套东西之后也能完成一次相当专业的攻击。所以我会把Oblivion定义为一个面向低门槛攻击者的商业化Android综合远控。它解决的主要问题是“如何让不会写代码的人也能完成从投递、授权、隐蔽到窃取的全链路操作”。对个人用户来说它比任何一个新出现的零日漏洞都更值得警惕因为零日漏洞需要定向和成本而这种商品化工具走的是量。1.2 横向对比Oblivion与常见Android远控的参数差异为了说清楚它和上一代远控的差距我拉了一张对比表维度不算全面但能覆盖日常分析最关注的点能力项传统RAT银行木马Oblivion类综合远控窃取联系人/短信支持部分支持支持金融App覆盖攻击少见重点能力支持辅助功能自动化授权不支持少数支持核心卖点图标隐藏部分支持支持支持设备管理器防卸载一般支持强支持C2通信伪装弱中较强一键出包/面板管理少见部分支持标配使用门槛高中低这张表能看出一个趋势威胁能力正在从“单一功能”走向“全家桶”。更值得注意的不是它多了一个图标隐藏而是“辅助功能自动化授权”和“面板管理”这两个东西被放到了一起。以前要让受害者授权无障碍服务需要编写大量交互逻辑还要处理各种厂商ROM的差异现在面板上点一下样本自己会去“引导”受害者完成。这大大缩短了攻击者在运营阶段的依赖。1.3 所谓“代际突破”突破的是门槛不是技术圈子里讨论Oblivion时用了不少夸张词比如“横空出世”“下一代远控”。我个人认为“代际突破”这个说法落在技术上有失偏颇落在威胁生态上倒是成立的。代码层面它没有使用未知漏洞核心还是那套无障碍服务、覆盖窗口、设备管理器的组合拳真正的突破在于把攻击能力产品化并且给这套产品定了一个大多数人负担得起的价格。以前一个黑产新人想搞移动远控要自己看开源代码、配VPS、写面板还要能处理不同Android版本和厂商ROM的兼容性问题光是过这一关就能劝退大半人。现在冒出来一个三百美元的全家桶包含生成器、面板、免杀更新和一些运营建议等于把过去需要半年的学习成本压缩成“付款后照文档操作”。所以我会说Oblivion这类工具真正改变的是攻击者的门槛而不是Android平台的安全机制本身。理解这一点很重要它决定了我们后面所有防护思路的优先级。2. 300美元定价背后的黑产商业逻辑便宜不等于低端2.1 为什么恰好是300美元先从价格说起。威胁情报圈子里高端定制远控卖到几千美元并不稀奇低端套件也常见在几十到两百美元之间。300美元正好落在一个微妙的价位比垃圾脚本贵比定制服务便宜属于可以“冲动下单”的范畴。对这个价位感兴趣的人很多并不是专业黑产团伙而是刚刚入行、想试试水的小角色。这背后其实是典型的消费级软件定价策略。卖家把Oblivion包装成“开箱即用”的解决方案而不是单纯卖代码。300美元换回来的是整个运营闭环恶意APK生成、受害者管理面板、指令下发、日志回传甚至还有客服答疑。买家买完之后不需要再找人帮忙部署服务器的配置流程也被简化成“填个地址生成APK”这么简单。价格锚点在这里起到了很大作用——跟动辄上千美元的定制服务比300美元会让人觉得风险低、回本快。但便宜不等于低端。从我们拿到的样本看代码做过混淆字符串做了加密部分关键逻辑在云端或运行期动态解密。至少在自己动手做免杀这件事上作者是用了心的否则这款产品也不可能在渠道里持续被讨论。2.2 商品套件里到底包含哪些模块把商品拆开看大致有这么几个模块APK生成器输入C2地址、面板地址、恶意App伪装名称自动生成一个加固后的安装包。投递模板内置了“系统工具”“电池优化”“阅读器”等伪装场景也会引导使用者修改图标和包名。核心载荷真正干活的DEX运行时解密包含辅助功能滥用、短信窃取、屏幕录制、设备管理器接管等逻辑。控制面板基于网页的受害者管理界面能看到在线状态、通知记录能下发指令。客户支持这是最麻烦的意味着这款工具在持续维护作者会根据杀软查杀情况更新特征码。控制面板的逻辑值得多说一句。它不只是显示“谁在线”还能展示受害者手机的型号、Android版本、已授权权限列表。攻击者可以针对不同机型下不同指令比如对小米系机型走A方案对其他机型走B方案。这种精细度在过去很难想象因为传统远控通常只给一个简洁的指令框。2.3 隐藏成本服务器、免杀迭代与投递渠道300美元这个数字看似不贵但“总拥有成本”并不仅仅是买工具的钱。买家拿到软件之后至少要准备一台服务器用来跑C2和控制面板还要注册一个看着不那么可疑的域名。服务器和域名的费用按月算不贵但一旦被安全厂商封堵重新上线的成本就会累积。更花钱的地方在于免杀迭代。主流杀毒引擎和手机厂商自带的安全引擎都会给这类样本建特征一旦样本被标记作者就需要更新加密壳或混淆方式然后重新出包。有些渠道是按“订阅制”卖的一次买断的版本则往往不带后续更新过几周就可能失效。对于攻击者来说这部分的持续投入才是大头。还有一块隐藏成本是投递渠道。你有了工具和服务器还得想办法把APK送到受害者手机上。常见的做法是发钓鱼短信、在论坛贴吧发链接、伪装成仓库或下载站资源。这些都需要被攻击者自己运营哪怕有各种“一键分发”服务配合也免不了被系统强制校验、被用户举报。300美元买来的是“进攻工具”但进攻机会还得自己制造。3. 自动化权限绕过的核心机理无障碍服务不只是辅助功能3.1 Android权限模型留下的两根“拐杖”Android 6.0之后危险权限要在运行时弹窗授权用户至少会看到一次“允许/拒绝”的界面。这套机制在防普通恶意软件时是有效的但它没法覆盖两类特殊入口无障碍服务和设备管理器权限。这两类权限不走标准运行时权限弹窗必须在系统设置里手动开启因此也更容易被社会工程利用。无障碍服务本来就是给视力障碍用户设计的一套辅助接口能让应用读到屏幕上显示的内容、模拟用户点击、监听窗口变化。它拥有解释“屏幕上在发生什么”的能力也拥有触发“屏幕上发生了什么”的能力这两者一组合基本就是完整的人机交互操作权限。另一个“拐杖”是悬浮窗权限恶意软件拿到它之后可以在任何应用之上叠加伪造界面把受害者的操作劫持到自己的逻辑里。Oblivion把这两根“拐杖”绑到了一起。安卓系统对无障碍服务的限制并不少比如它要求必须由用户在设置列表中手动开启。挑战在于“手动开启”这件事本身可以被诱导而且一旦开启恶意软件就能把后续授权流程“自动化”掉。这是问题的核心系统用一道用户确认的锁防住了程序直接开启无障碍服务却没有考虑到用户自己会被人骗着去开门。3.2 入口无障碍服务是如何被“诱导”授权的从样本行为看Oblivion会在启动后弹出一个伪装成“安全检测”或“系统更新”的界面画面中央放着一个按钮文案大概意思是“需要启用辅助服务才能继续”。点击按钮后系统跳转到辅助功能设置页这时候恶意App是无能为力的必须由用户拨动开关。所以你会看到很多攻击者花大力气做“话术”而不是做“漏洞”。Oblivion的伪装界面会故意把无障碍服务和“信任该应用”“保证系统稳定运行”混在一起。很多用户并不清楚什么是辅助功能看到系统设置里出现这个服务的名字就直接开启了。这个步骤只要有一个人完成后面整个授权链就打开了。一旦辅助功能开关打开系统会立即回调恶意服务的onCreate和onAccessibilityEvent。恶意服务开始接收全局事件包括窗口状态变化、点击位置、文本变更、通知栏变化等等。攻击者不需要再让用户手动去操作任何东西样本自己就能完成剩下的大部分工作。3.3 拿到无障碍权限之后自动点击授权和动态劫持获取无障碍权限之后样本就具备了一个通用能力监听系统中弹出的任何窗口找到“允许”“确定”“下一步”这类按钮并自动执行点击。这相当于用户自己在屏幕上操作但动作是由恶意代码发出的。实际的自动化授权可以这样描述样本先发起短信或定位权限的申请请求系统弹出权限对话框无障碍服务监听到窗口状态变化遍历当前节点的文本内容找到标记为“允许”或者“ALLOW”的按钮调用performClick()完成点击。一个权限通过后它继续申请下一个权限整个过程不需要任何人参与。而且为了应对不同手机厂商的权限弹窗样式样本通常会给文本匹配规则做多语言和关键词冗余匹配不到时还可以退回到坐标点击模式。“动态劫持”则更为隐蔽。恶意应用拿到悬浮窗权限后能在目标App启动时绘制一层透明或接近真实的覆盖层。比如把银行App的登录界面覆盖成相似的钓鱼页面用户输入账号密码时数据直接进入攻击者的后门。这种覆盖攻击不是新玩意但和自动化授权组合在一起攻击效率就完全是另一个量级。3.4 第二道保险设备管理器权限与防卸载搞定无障碍服务之后样本通常还会尝试激活设备管理器权限。这一步仍然可以让无障碍服务自动完成系统弹出“激活设备管理器”的确认框恶意代码自动点击“激活”。刚激活的那几十毫秒用户可能正盯着屏幕但往往来不及反应。设备管理器权限给攻击者提供了三个额外能力重新锁屏、修改锁屏密码、远程擦除数据。Oblivion也把“防卸载”绑定在这个机制上用户想进入设置卸载应用时恶意代码可以立刻弹出叠加界面锁住设置页面或者直接执行锁屏操作把用户挡在外面。说白了只要能拿到设备管理器受害者就很难进入系统设置去撤销权限。“防卸载”并不是绝对无敌的通过安全模式或专业工具仍然可以清理但对普通用户来说这种阻力已经足够大。很多受害者遇到手机被锁屏、密码被改的情况第一反应是刷机或恢复出厂而不会去分析到底是什么App干的。3.5 为什么官方安全机制对这种玩法反应慢半拍从官方的角度看无障碍服务和设备管理器都是合法的系统机制系统无法简单地把它们一刀切禁掉。Android近几个版本确实加强了对辅助功能滥用的约束比如限制一键重启辅助服务的设置、在用户开启高危服务时弹出额外警告但攻击者只需要换个话术让受害者确认警告弹窗就能绕过所有提醒。另外这类样本大量通过“侧载”进入设备也就是绕过官方应用商店的安装来源。官方安全组件能把检查范围覆盖到商店内应用却很难顾及用户在浏览器里下载的APK。样本又做了多轮加固混淆静态检测引擎在未运行前很难看出真实行为。整个检测链条里任何一个环节出现延迟样本都已经完成了设备接管。这就是为什么我不太建议把希望完全寄托在“安卓会自动拦截”上。平台层的努力值得肯定但威胁更愿意利用人的疏忽和生态的开放。防护的重点必须落到用户行为和企业策略上。4. 隐蔽控制实战拆解图标隐藏、流量伪装与无人值守4.1 安装后的“隐身术”细节授权完成后的第一步样本通常会把自己从桌面上藏起来。做法很简单通过包管理接口把MainActivity组件设置为不可用这样系统启动器中就再也找不到这个App的图标。受害者如果不去应用列表里翻基本不会发现刚才安装的“系统工具”已经消失。这还不够。样本发起启动的Activity时会带上FLAG_EXCLUDE_FROM_RECENTS标志从最近任务列表里也把自己移除。于是受害者既不能在桌面看到它也不能在最近的App列表里瞥见它。能发现它的地方只剩设置里的应用管理、权限管理和无障碍列表可大多数用户根本不会主动检查这几个页面。更隐蔽的位置在存储权限和通知栏权限样本可能长期在后台监听通知读取验证码短信后把通知标记为已读也可能申请位置权限周期性上报受害者轨迹。这些动作对用户来说没有任何可见表现系统电池统计里的耗电项又很容易被误认为是“正常后台”隐蔽性很强。4.2 C2通信信道的多层伪装隐蔽控制离不开稳定的控制信道。Oblivion的C2通信不会用一个裸IP频繁连它会在客户端和服务端之间协商出看似正常的HTTPS流量。请求走443端口证书可以配置成自签或普通域名的证书从网络侧观察像是一次普通的业务接口调用。样本还会在请求里做二次加密通常是自定义密钥加密后的JSON体。密钥由设备信息和时间戳动态生成同一时间不同设备密文各不相同。这意味着即使抓到了流量短时间内也不好直接还原指令内容。心跳包也会做噪音处理有的样本会随机延迟到30到60秒一次有的会混合多条无意义请求来稀释检测特征。部分版本还会借用公共即时通讯服务作为“指令下发的信标”客户端周期性去拉取某个公开频道里的加密短消息。这样攻击者省去了自建服务器的费用也把流量混入正常的通讯软件流量中。对有网络检测能力的企业来说反而是个麻烦就算识别出设备在和公共即时通讯服务通信也很难判断这到底是正常用户操作还是远控信标。4.3 屏幕内容抓取与模拟点击的实战危害“看屏幕”和“点屏幕”是这类远控最恐怖的两个能力。XPath式的辅助功能节点遍历可以让恶意代码读取当前界面上的文本内容比如金融App里的余额、转账确认页的收款人信息。如果目标应用把密码框设置成明文模式恶意代码甚至不需要截图就能直接拿到密码。模拟点击的用途更广泛它可以替攻击者在受害者手中完成“确认购买”“确认订阅”“授权转账”等动作。很多App用“长按确认”或“滑动画拼图”来防机器人但这些交互在真实设备里由无障碍服务执行时会被系统当作真实用户操作校验几乎全部通过。屏幕抓取通常走两条路一是无障碍接口文本节点和触控行为都能拿到二是媒体录制接口只要用户授权了屏幕录制恶意代码就能把整个操作过程录成视频。Oblivion的做法是两者都用抓不到图像就抓文本文本不全时就用视频补位。对攻击者来说一台已经授权的手机基本等同于一台有人看着你屏幕的远程桌面的“受害者端”。4.4 无人值守转账一个典型的攻击链路把上面这些能力串起来就能理解为什么很多人会把它和“接管手机”画等号。典型链路是这样的受害者无意中通过聊天链接安装了伪装成办公工具的APK并顺手开启了无障碍服务。攻击者没有马上动手而是先收集联系人、短信和已安装应用列表确认目标手机里装了哪些银行或支付类App。等到深夜受害者手机可能正在充电屏幕也没锁。C2面板下发指令恶意代码启动目标支付应用读取登录账号和密码。如果应用需要短信验证码样本早已在后台同步读取短信如果应用需要人脸或数字证书样本会通过模拟点击触发“下次再录”或“使用备用验证方式”。最后攻击者把转账金额改成小额通过无障碍服务自动完成所有的点击确认。整个过程中受害者可能在看电视或已经睡着手机只会偶尔亮一下。第二天早上醒来看到的是银行发来的转账通知和一堆被标记为已读的验证码短信。这就是所谓“无人值守”的真正含义攻击者要的不是在手机上完成一次即时的按键操作而是利用手机代替受害者完成业务系统里所有需要真人参与的环节。5. 我在隔离环境里复现的一次“接管手机”实验5.1 实验场景模拟器、样本和隔离网络为了验证标题里“接管手机”的描述到底几分真几分假我在隔离环境里搭了一套最小实验。没有用真实手机而是起了一个Android 9的模拟器因为这类样本在低版本Android上的兼容性更好也更容易观察权限弹窗的自动化过程。网络层面完全独立C2地址指向我本地搭建的假控制端避免内网设备被真实攻击影响。样本来自一个威胁情报平台提交的脱壳版本包名伪装成一个带有系统更新字样的工具。我在分析机上把样本装进模拟器同时开着日志抓取和屏幕录制。整个过程严格记录每个事件的触发时间后面复盘时能精确看到哪个操作是系统弹的哪个操作是被恶意代码点掉的。这里要说明一下我的实验只复现了“授权辅助功能后”的行为并没有诱导任何真实用户去开启服务。辅助功能开启这一步是我手动拨动的因为自动绕过这一步没有实际意义恶意代码无法在没有辅助功能的情况下凭空获得辅助功能。5.2 复现链路从授权到指令执行的完整记录实验从授权辅助功能开始记录结果如下第1秒安装APK完成桌面出现“系统更新”图标。第4秒打开应用弹出全屏伪造界面要求点击“开始安全检查”。第15秒点击后跳到系统辅助功能设置页我手动打开恶意服务开关。第28秒恶意服务回调触发同一个服务开始监听窗口变化。第42秒样本依次请求短信、定位、通讯录权限每个系统权限弹窗弹出的1到3秒内节点文本被匹配并自动点击“允许”。三条权限全部在约5秒内到账。第90秒桌面图标消失应用从启动器和最近任务列表里同时隐藏。第180秒C2面板收到设备上线通知能看到型号、系统版本和已授权限列表。第300秒我向该设备下发“读取通讯录”指令约2秒后C2收到加密的通讯录数据包解密后联系人列表完好导出。之后我又依次测试了屏幕截图、短信转发、锁屏和远程卸载指令。锁屏指令生效最快几乎毫秒级完成设备直接进入了一个由攻击者设置的PIN码锁屏界面。这组时间线很清楚地说明了同一件事一旦用户开启了辅助功能剩下的所有“接管”动作都不再需要用户参与。5.3 结果分析“接管手机”这个说法要打几个折扣先说结论标题里的“接管手机”没有彻底说错但要加两个限定词。“可以在已授权设备上以用户身份完成绝大多数操作”这句是准确的而“不接触设备即可任意控制设备”这句则过于夸张。模拟器和真机实验都说明它没有拿到系统底层权限也没有植入到系统分区更做不到在重启后自动持久化到最底层。具体来说以下说法需要打折它不能跳过设备解锁密码。锁屏状态下能收到指令但要在解锁后才能操作界面内容。它不能直接读取受硬件隔离保护的内容比如某些应用的安全键盘、硬件级Keystore里的密钥。如果受害者发现异常并恢复出厂设置恶意App会一并被清除前提是没有额外的系统应用或Root持久化机制。它的“权限绕过”建立在用户已经授权辅助功能的基础上所以本质上是“自动授权”不是“零点击漏洞”。但这并不意味着威胁可以小看。对一笔最终的银行转账来说设备级验证码、应用锁、小额免密这些手段都挡不住一个已经拥有辅助功能权限的客户端。攻击者需要用户动手做的事情只有一件打开那个无障碍开关。这恰恰是大量普通用户最容易做错的事。6. 防御视角普通用户、企业管理员、检测工程师各该怎么做6.1 普通用户三个五分钟内完成的自查动作对普通用户来说不需要去理解漏洞原理只需要养成三个习惯第一定期检查“无障碍服务”列表。打开系统设置找到“无障碍”或“辅助功能”看看里面有没有你不认识的应用在开启状态。凡是不是系统自带、也不是你明确知道用途的服务一律关闭。这是阻断这类恶意软件的第一道闸门。第二检查“设备管理器应用”。在安全或密码设置中查看设备管理器列表每一条都要是自己认识的应用。对“系统工具”“清理大师”这类授权了一堆危险权限的App直接移除并卸载。第三检查“通知访问权限”列表。远程远控想要读取验证码往往依赖通知监听权限一旦发现有不认识的应用在这里面立即收回授权。我还会额外建议尽量不要在浏览器里点击任何来源不明的APK链接。即使你正在寻找某个软件也应该去官方应用商店或官网下载而不是从聊天群里拿安装包。很多人觉得“我没装没用的软件”但这类样本的伪装名称往往是“工资查询”“办公审批”“网络优化”用户会误以为它是工作必需品然后顺手给了权限。6.2 企业移动安全策略侧和检测侧的双管齐下企业环境比个人手机更复杂因为一台被测设备可能同时连着企业邮箱、办公文档和即时通讯工具。移动设备一旦失陷泄露的不只是个人信息还可能成为进入内网的第二跳板。因此在策略层面至少要管控三个点。第一个点是禁止侧载。通过统一终端管理强制关闭“允许安装未知来源应用”的开关或者至少限制只有在受信任的应用商店上方可安装。第二个点是限制高危权限。企业设备可以设置合规策略禁止非白名单应用启用无障碍服务或设备管理器如果检测到立即从企业应用库中隔离设备访问权限。第三个点是高价值业务的多重验证。银行、财务系统可以推送到独立的硬件安全密钥或企业专用应用上缩短移动端暴露面。检测侧也要跟上。移动安全网关和端点产品能上报“安装来源”“辅助功能列表变化”“设备管理器变更”等事件。把这些事件接入现有安全信息与事件管理系统后可以设置规则同一个设备在短时间内新增多个高风险权限则触发告警并要求重新认证。手动日志审核永远跟不上自动化恶意软件的节奏规则自动化才是企业侧的稳定解药。6.3 检测工程落地基于行为特征与静态规则做检测的人都知道这种样本换壳很快光靠特征码不可持续。比较实用的思路是把静态特征和行为信号结合起来先用静态规则筛出可疑样本再用行为规则确认是否真的在干坏事。静态规则可以参考以下维度是否声明了无障碍服务无障碍服务的实现是否包含节点查找和自动点击是否申请了悬浮窗权限是否申请了设备管理器权限是否调用了隐藏图标相关的包管理接口。单一维度都有大量正常应用会命中但组合起来之后命中范围会迅速缩小。下面给出一条规则示例用来做初步分诊rule Android_A11y_Overlay_Abuse { meta: author 某安全分析团队 description 组合特征识别辅助功能滥用型远控仅用于分诊 strings: $ax AccessibilityService ascii $find findAccessibilityNodeInfosByText ascii $click performClick ascii $overlay TYPE_APPLICATION_OVERLAY ascii $compset setComponentEnabledSetting ascii condition: $ax and 2 of ($find, $click, $overlay) and $compset }行为侧可以重点采集几个指标无障碍服务回调事件里是否频繁出现窗口状态变化后的节点遍历performClick调用是否与系统权限弹窗的出现时间高度重合应用是否在获得辅助功能后的短时间窗口内申请了多个危险权限网络层是否定期向低信誉域名或公共即时通讯服务发送心跳请求。把这些指标输入到行为检测模型里就能有一个相对完整的判定框架。即便无法百分百命中也足够把这类样本的风险等级提上来。最后提一个我自己的习惯。每次拿到新样本我都会先检查它的无障碍服务配置和启动入口而不是着急脱壳。因为对移动远控来说入口和授权路径往往决定整个攻防逻辑。多掌握这些路径你才能在权限弹窗跳出来的时候第一眼看出它到底是一个正常应用还是暗地里准备接管你手机的可疑程序。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →