自XCSSET首次被发现以来,其针对macOS开发者工具链的攻击思路持续演进。2025年出现的新变种在原有感染Xcode项目的传播链基础上,新增了多项模块化能力与更隐蔽的执行方式,包括针对浏览器范围的扩展、剪贴板劫持策略的细化、以及通过LaunchDaemon实现的持久化手段。本篇深入解析这些更新的核心技术点、攻击流程、可疑迹象与实践性防护建议,重点面向软件开发者、终端防御团队和安全研究人员。 XCSSET的新变体依然采用分阶段感染链:前三阶段与早期样本类似,最终的第四阶段即负责下载并执行各类子模块。第四阶段的boot()函数被重写以纳入对Firefox存在性的探测、更复杂的Telegram检查逻辑,并按需拉取多个功能模块执行。该设计使得攻击者能够按载荷定制能力,针对特定目标扩展数据窃取或持久化行为,同时降低单一样本被静态签名识别的风险。
信息窃取模块是这次更新的关键之一。一个名为vexyeqj(早期为seizecj)的子模块会请求并执行一个以run-only方式编译的AppleScript二进制(bnk)。run-only AppleScript难以直接反编译,攻击者借此提高隐蔽性。分析显示,bnk内部包含一套用于与C2通信、加密/解密、以及剪贴板处理的逻辑。C2端返回的配置首先通过自定义的AES解密流程处理;实现中将返回数据的前32字符作为IV,剩余内容进行Base64解码并以固定密钥解密(示例常量为27860c1670a8d2f3de7bbc74cd754121)。解密后得到的配置包含黑名单应用、地址匹配正则、以及针对不同数字钱包的替代地址池。
剪贴板监控与劫持是该变种的重要功能。运行中的脚本通过Apple Event接口读取剪贴板并检查前置应用是否在黑名单之列,随后根据多重门控决定是否触发替换逻辑。替换逻辑对剪贴板内容长度和数字字符比重进行校验,先后判断是否匹配交易地址的正则表达式,并根据C2下发的规则集合(包括正向匹配r和可选的负向匹配ir)选择或排除目标地址。如果目标文本与攻击者预设地址不符,脚本会从地址池中选取一项替代并写回剪贴板,同时向C2上报原始与替换后的内容、前端应用信息以及设备标识等元数据。该模式明显针对数字货币支付场景进行劫持,具备即时钓取资金的能力。 另一个文件窃取子模块会从C2下载额外的run-only AppleScript或脚本文件到/tmp目录并执行,执行后删除痕迹。
此类模块能够列举并上传指定目录或文件,具备较强的信息外泄能力。新样本中还出现了专门针对Firefox的窃取模块。该模块会下载一个经修改的Mach-O FAT二进制,实质上是基于开源项目HackBrowserData的工具,能够解密并导出浏览器保存的密码、历史、Cookie、信用卡信息等,导出结果压缩后以分块方式上送至C2服务器。为提高执行成功率,二进制在运行前被加上可执行权限并在本机进行ad-hoc签名,这样能绕过部分基于签名的简单防护。 持久化方面,xmyyeqjx模块通过在用户主目录创建隐藏可执行文件(例如~/.root)并生成LaunchDaemon plist实现系统级持久化。该模块还会在/tmp创建一个伪造的System Settings.app来伪装启动流程,等待系统真实的System Settings启动后再激活伪造程序,从而隐蔽自身行为。
更具风险的是,此模块会尝试修改软件更新配置以禁用macOS的自动配置更新和Rapid Security Response等关键的安全修复机制,试图延长后门和窃取工具的存活时间。 在早期版本中通过Git提交实现的"jey"持久化逻辑也被改写以增强混淆。原本直接在shell中拼接并解密的命令被封装到内联函数中再调用,这类变化看似细微,但在实战中能显著提升逆向分析难度并绕过一些基于模式的检测方法。 从事件检测与狩猎角度出发,可以将注意力聚焦在若干可疑行为链上。可疑的命令执行模式包括通过echo传递二进制或base64编码后以sh执行的模式,以及在Xcode编译派生目录(/Developer/Xcode/DerivedData)上下文中出现的可疑shell命令。osacript被用作多种run-only AppleScript的执行器,当osacript发起网络连接或从/tmp目录启动可执行文件时应提高警惕。
临时目录下创建伪装为*.app的可执行应用和向/Library/LaunchDaemons写入plist文件并使用launchctl load -w的行为也属于高风险迹象。若使用Microsoft Defender XDR或相似平台,可通过监测ProcessCommandLine中包含"echo"和"xxd -p -r | sh"或"base64 -d | sh"等关键字的事件,结合进程启动路径与InitiatingProcessFileName筛选潜在感染痕迹。 针对网络层面的联动防御,应将已观察到的C2域名纳入威胁情报中,例如cdntor[.]ru、checkcdn[.]ru、cdcache[.]ru、applecdn[.]ru、flowcdn[.]ru等多组域名,以及样本相关的哈希值(示例:12ea52c4... 对应/tmp/ancr,5a212c5c... 对应第四阶段payload,f3bc1586... 对应/tmp/xmyyeqjx)。将这些信息配置到网络防火墙、代理和威胁情报平台中,能够阻断或记录与已知C2的通信企图。 防护与缓解策略需兼顾开发流程安全与终端检测。对开发者而言,最佳实践包括严格审查并避免直接运行从不受信任来源克隆或下载的Xcode项目,使用受信任的源代码签名与依赖性验证机制,在版本控制系统中启用仓库扫描与CI中过滤危险脚本。
组织应在开发者机器上实施最小权限原则,限制对osascript和sudo的滥用,必要时通过系统策略限制对/Library/LaunchDaemons的写入权限。同时,定期审计用户shell配置文件(如~/.zshrc)与临时目录下异常应用的存在,是发现早期感染的有效手段。 在终端防御层面,建议开启云端威胁情报、自动样本提交与PUA(潜在不受欢迎程序)阻断等功能,以便迅速识别并隔离类似XCSSET的样本。启用网络保护可减少与恶意域名的通信成功率。对于使用Microsoft Defender for Endpoint或同类EDR方案的组织,可部署针对osacript执行网络连接、可疑plist写入与/tmp/.app创建的检测规则,并对发现的可疑LaunchDaemon进行快速响应与回滚。 对于高价值目标和金融相关场景,额外的对策包括在敏感付款场景中引入二次验证流程,例如在钱包转账前通过独立的设备或应用核验接收地址。
同时,教育终端用户在复制粘贴敏感地址时务必采用"查看并核对完整地址"的习惯,而不要盲目信任剪贴板内容。组织安全运营中心应将剪贴板替换行为视为优先级较高的告警类型,并将相关指标纳入长期威胁狩猎计划。 供应链和平台层面的协作同样重要。研究者与企业应与代码托管平台和操作系统供应商保持沟通,及时通报感染样本与恶意仓库以便下线。开源项目维护者应在README与贡献者指南中强调不要包含可执行脚本或编译产物到仓库,CI流水线应阻止将未经审查的可执行文件传入代码库。 总结来看,XCSSET新变种展示了针对开发者生态系统的持续适应能力:通过run-only AppleScript与编译二进制的组合提高隐蔽性,通过剪贴板劫持与修改系统更新配置扩大影响面,并将浏览器窃取能力扩展到Firefox。
防御措施需要在开发者实践、端点检测与网络情报之间形成协同:通过严控项目来源、增强本地与云端防护能力、及时封堵C2域名与哈希,以及提升用户的安全意识,可以有效降低XCSSET类威胁带来的风险。 安全团队应将对XCSSET的持续监测纳入例行工作,及时更新IOCs并把狩猎查询融入日常流程。对开发者社区而言,重视构建安全的开发与分发流程是抵御此类针对开发者供应链攻击的根本之道。 。