现实环境中的 Coyote:首个滥用 UI 自动化的恶意软件
执行摘要
Akamai 研究人员此前概述过 UIA 遭到恶意利用的可能性。
现在,Akamai 研究人员已分析了 Coyote 恶意软件的新变体,该变体是首个被证实在现实环境中恶意利用 Microsoft 的 UI 自动化 (UIA) 框架的案例。
这个新的 Coyote 变体以巴西用户为攻击目标,它使用 UIA 提取关联到 75 家银行机构的网址和加密货币交易所的凭据。
为了帮助更多人防范 Coyote 感染以及 UIA 滥用,我们在本博文中提供了入侵指标和额外的检测措施。
前言
2024 年 12 月,我们发布了一篇博文,重点介绍了攻击者可能如何滥用 Microsoft 的 UIA 框架来窃取凭据、执行代码等。这种漏洞利用此前仅停留在概念验证 (PoC) 阶段,但如今已在现实环境中发生。
在这篇博文发布大约两个月后,我们的担忧得到了证实,当时我们观察到银行木马恶意软件 Coyote 的一个变体在现实环境中滥用了 UIA,这是此类漏洞利用的首个已知案例。
自恶意软件 Coyote 在 2024 年 2 月被发现以来,此次 UIA 滥用事件是其在数字环境中留下的最新恶意攻击痕迹。
在本博文中,我们将仔细研究该变体,以便更好地了解攻击者如何利用 UIA 来实现恶意目的以及它对防御者意味着什么。
Coyote 恶意软件是什么?
Coyote 是一个臭名昭著的恶意软件系列,于 2024 年 2 月被发现,并且此后在拉美地区造成了重大损害。Coyote 是一种木马恶意软件,它利用各种恶意技术(例如键盘记录和网络钓鱼叠加)来窃取银行信息。
它使用 Squirrel 安装程序进行传播(因此得名“Coyote”,以向土狼猎捕松鼠的天性致敬)。在其中一次最臭名昭著的攻击活动中,Coyote 攻击了多家巴西公司,试图在这些公司的系统内部署一个窃取信息的远程访问木马。
在最初发现 Coyote 后,很多安全研究人员都披露了其运行细节并提供了深入的技术分析。Fortinet 于 2025 年 1 月发布的一项相关研究阐明了 Coyote 的内部运作机制和攻击链。
UIA 滥用
我们在这些分析的基础上扩大了研究范围,发现了一个新的关键细节:Coyote 现在会在其运行过程中利用 UIA。与任何其他银行木马一样,Coyote 也在搜寻银行信息,但 Coyote 的不同之处在于它获取这些信息的方式,其中涉及了利(滥)用 UIA。
Coyote 獠牙毕露
在感染过程中,Coyote 会向其命令与控制服务器回传每位受害者的详细信息,包括计算机名、用户名及其他多种系统属性。然而,其中最值得注意的,同时也是 Coyote 不遗余力想要窃取的目标——正是受害者所使用的各类金融服务。
最初,该恶意软件会使用一种典型且非常常见的方法:Coyote 会调用 Windows API GetForegroundWindow() 来获取当前活动窗口的句柄。在检索到窗口句柄后,该恶意软件便会将窗口标题与属于目标银行和加密货币交易所的硬编码网址的列表进行比较。
当窗口标题与 Coyote 正在寻找的任何地址都不匹配时,有趣的 UIA 逻辑就会生效。如果未找到任何匹配项,Coyote 将使用 UIA 对窗口的 UI 子元素进行解析,试图识别浏览器标签页或地址栏。然后,这些 UI 元素的内容将与第一次比较中使用的地址列表进行交叉对比。
为此,Coyote 会创建 UIAutomation COM 对象,并将前台窗口作为其顶层元素(图 1)。
Coyote 随后会遍历前台应用程序的每个子元素,以查找标签页的网址(图 2)。
在找到网址后,Coyote 会尝试将其与自己的预定义列表进行匹配(图 3)。
下表显示了 Coyote 如何使用银行和加密货币交易所的名称或网址对其进行分类。在每个类别中,Coyote 都会搜索很多不同的地址;根据我们的研究,有 75 个不同的地址。
名称 |
类型 |
---|---|
Banco do Brasil |
0 |
CaixaBank |
1 |
Banco Bradesco |
2 |
加密货币(Binance、Electrum、比特币、Foxbit 等) |
3 |
Santander |
4 |
路由应用程序 |
5 |
原银行 |
6 |
Sicredi |
7 |
Banco do Nordeste |
8 |
扩展应用程序 |
9 |
Coyote 尝试进行匹配的银行和相应的编号类型
如果没有 UIA,解析另一个应用程序的子元素将是一项艰巨的任务。为了能够有效地读取另一个应用程序中子元素的内容,开发人员需要非常透彻地了解特定目标应用程序的构建方式。
无论是处于在线状态还是以离线方式运行,Coyote 都可以执行检查。这提高了成功识别受害者使用的银行或加密货币交易所并窃取其凭据的可能性。
UIA 为攻击者提供了一些功能,包括供恶意软件开发人员解析另一个应用程序的子元素的简单解决方案。
其他 UIA 策略、技术和程序
这是我们首次发现使用 UIA 的恶意软件,这表明恶意软件开发人员正在以极快的速度在其软件作品中采用新技术。注意:这只是 UIA 可能遭到恶意使用的一个示例。
图 4 展示了 UIA 不仅可用于识别关键 UI 组件,还可用于从这些组件中提取敏感数据。
在图 5 中,我们演示了攻击者如何操纵 UI 组件来执行隐蔽的社会工程攻击。攻击者可以修改浏览器的地址栏并模拟点击操作,从而无缝地将受害者重定向到恶意服务器——整个过程几乎没有视觉指示。

有关完整的详细信息,请参阅我们先前的 UIA 博文。
检测异常的 UIA 使用情况
至于 UIA 自身的检测,管理员可以监视 UIAutomationCore.dll 的使用情况。如果它被加载到以前未知的进程中,则应该引起合理的关注。
同样地,网络管理员可以监视 UIA 在端点上打开的命名管道,作为其使用情况的另一个指标。图 6 和图 7 是可用于检测此类活动 osquery。
SELECT DISTINCT pid, name, proc.path FROM process_memory_map AS pmm JOIN processes AS proc USING(pid) WHERE pmm.path LIKE '%uiautomationcore.dll'
图 6:加载 UIAutomationCore.dll 的进程
WITH uia_pipes AS (SELECT name AS pipe_name, SUBSTR(name, 10, INSTR(SUBSTR(name, 10), '_')-1) AS pid FROM pipes WHERE name LIKE 'UIA_PIPE_%' ) SELECT DISTINCT pid, name AS process_name, path, pipe_name FROM uia_pipes JOIN processes USING(pid)
图 7:打开 UIA 命名管道的进程
Akamai Hunt 是 Akamai 的托管式威胁搜寻服务,它以大量异常检测技术的形式为客户保驾护航,这些技术能够持续监控环境并尝试检测恶意活动。该服务会对 Akamai Hunt 客户进行扫描以识别异常的 UIA 使用情况,并针对任何可疑活动向他们发出告警。