NimDoor恶意软件
网络安全专家发现了一个名为 NimDoor 的新型隐秘 macOS 恶意软件家族。该恶意软件凭借其先进的持久性技术、隐秘的数据窃取机制以及复杂的规避能力,构成了严重的威胁。此次恶意攻击活动被认为是由与朝鲜结盟的威胁行为者发起的,其目标是 Web3 和加密货币领域。
目录
朝鲜黑客转向 Nim 和 macOS
涉嫌与朝鲜有关联的威胁行为者目前正在其恶意软件库中使用 Nim 编程语言。这标志着他们的工具包正在不断演变,之前的攻击活动曾使用 Go 和 Rust 等语言。Nim 的新用途体现了其创新的意图,尤其是在构建难以检测和分析的跨平台威胁方面。
在这次活动中,攻击者专门针对 Web3 和以加密货币为中心的组织,这表明这是一次出于经济动机的行动,目的是破坏或渗透数字金融基础设施。
非常不寻常的 macOS 技术
NimDoor 尤其令人担忧的是其针对 macOS 感染的非常规方法。最值得注意的是,它使用了:
- 进程注入是 macOS 恶意软件的一种罕见技术,它允许威胁劫持和操纵合法进程。
- 用于加密 C2 交互的 WSS(WebSocket 安全)通信通道。
- 一种利用 SIGINT 和 SIGTERM 信号处理程序的新颖持久性方法,允许恶意软件在终止或系统重启时重新安装。
这些特性使其能够保持低调,并能抵御普通用户或系统引发的中断。
社会工程学驱动的攻击链
攻击始于社会工程策略:
- 受害者通过 Telegram 等平台被联系,并被诱骗使用 Calendly 安排 Zoom 会议。
- 他们收到一封带有 Zoom SDK 更新脚本的虚假电子邮件,据称是为了确保与视频会议软件的兼容性。
这会导致恶意 AppleScript 的执行,该脚本会从远程服务器下载第二阶段脚本,同时将用户重定向到合法的 Zoom 链接。第二阶段脚本会提取包含以下内容的 ZIP 压缩包:
- 用于建立持久性的二进制文件
- 用于窃取系统数据的 Bash 脚本
InjectWithDyldArm64 的作用
感染过程的核心是一个名为 InjectWithDyldArm64(简称 InjectWithDyld)的 C++ 加载器。该组件对于有效且隐蔽地部署恶意软件至关重要。它首先解密两个嵌入的二进制文件,一个名为“Target”,另一个名为“trojan1_arm64”。解密后,它会启动处于暂停状态的 Target 进程。在进程暂停后,加载器会将 trojan1_arm64 二进制文件注入其中,然后恢复执行。这种方法允许以高度隐蔽的方式传递和激活恶意负载,从而绕过标准系统防御措施,并最大限度地降低被发现的可能性。
凭证盗窃和系统监控
一旦激活,该恶意软件就会与远程命令与控制 (C2) 服务器建立连接,从而执行多项恶意操作。这些操作包括收集详细的系统信息、执行远程发出的任意命令、浏览不同的目录,并将这些操作的结果传回给攻击者。
随着 trojan1_arm64 组件的介入,威胁进一步升级,该组件通过从 C2 基础设施中检索另外两个有效载荷来增强攻击。这些有效载荷专门用于收集敏感信息。它们的主要目标是存储在广泛使用的 Web 浏览器(例如 Arc、Brave、Chrome、Edge 和 Firefox)中的登录凭据,以及来自 Telegram 消息应用程序的用户数据。
持久性机制
除了主要组件外,该恶意软件还部署了基于 Nim 的可执行文件,用于激活名为 CoreKitAgent 的模块。该模块通过监控任何终止恶意软件运行的尝试,在确保恶意软件的韧性方面发挥着关键作用。为了保持恶意软件的存在,它会为 SIGINT 和 SIGTERM 安装自定义信号处理程序,以便在用户或安全工具尝试关闭恶意软件时自动重新启动。这种内置机制显著增强了恶意软件的持久性。
攻击者还广泛使用 AppleScript,不仅在初始感染阶段,而且在恶意软件的整个运行过程中都使用它来进行持续监控和控制。通过这种脚本功能,恶意软件每 30 秒向硬编码的 C2 服务器发送一次周期性信标,窃取当前正在运行的进程的详细信息,并执行远程威胁行为者发出的新命令。
为什么 Nim 会使恶意软件更加危险
使用 Nim 编程语言为攻击者带来了显著的优势。Nim 能够在编译时执行函数,这使得攻击者能够:
- 嵌入难以检测的复杂逻辑
- 混淆二进制文件中的控制流
- 混合开发人员和运行时代码,使分析变得更加困难
这会导致紧凑、高性能的二进制文件对传统恶意软件检测引擎的可见性降低。
NimDoor 事件警示我们,macOS 已不再对高级持续性威胁免疫。鉴于朝鲜攻击者正使用不断发展的技术和鲜为人知的编程语言瞄准 macOS,保持知情和警惕比以往任何时候都更加重要。