part1
点击上方蓝字关注我们
往期推荐
变天了,Telegram更改隐私政策,暗网“风声鹤唳, 草木皆兵”
将二进制空间安全设为”星标⭐️”
第一时间收到文章更新
摘要
StormBamboo 是一个由中国 APT 组织操作的高级恶意软件,主要通过劫持 ISP(互联网服务提供商)的 DNS 来传播其恶意代码。该组织也被称为 “Evasive Panda” 或 “StormCloud”,主要目标是进行网络间谍活动,并瞄准亚洲的各类组织。
技术原理
该恶意软件攻击方式利用了 DNS 污染(DNS poisoning)技术,通过篡改 DNS 查询的响应,将受害者的流量重定向到恶意服务器上,从而诱使受害者下载恶意软件。StormBamboo 利用了某些应用程序更新机制中的安全漏洞,这些更新机制依赖 HTTP 协议且没有对更新文件进行数字签名验证。当用户的设备尝试下载更新时,攻击者会将合法的更新替换为恶意程序,使得受害者的设备在不知情的情况下安装了恶意软件。
此外,StormBamboo 还曾传播过名为 MacMa(也叫 CDDS)的 macOS 恶意软件,以及恶意的 Chrome 扩展程序 Reloadext,后者可用于窃取电子邮件数据。这种攻击显示了供应链攻击的严重性,因为攻击者能够通过入侵 ISP 影响下游用户,使得恶意软件传播更为广泛且难以检测。
恶意软件涉及DNS劫持的恶意网络攻击流程如下:
图中的详细流程如下:
-
目标基础设施(Target infrastructure):攻击的目标是一组组织内部的设备,这些设备定期向合法的更新服务器请求软件更新。
-
通过ISP基础设施进行DNS解析:为了连接到更新服务器,目标设备通过其互联网服务提供商(ISP)的DNS基础设施来解析合法更新服务器的域名。
-
StormBamboo劫持DNS请求:攻击者StormBamboo成功侵入ISP的DNS基础设施,能够拦截来自目标基础设施的DNS请求,从而可以操控这些请求的返回结果。
-
DNS污染:StormBamboo对DNS响应进行了污染,篡改返回结果,将目标设备指向一个由攻击者控制的恶意更新服务器,而非合法的更新服务器。
-
部署恶意负载:恶意更新服务器在响应中返回一个包含合法更新和隐藏的恶意负载的“更新包”。目标设备在毫不知情的情况下安装了该更新,认为它是可信的。
-
结果:恶意负载在目标基础设施中被部署,可能通过植入恶意软件或后门访问等手段进一步危害设备的安全。
数据包拦截模块分析
数据包拦截是该恶意软件的关键组件。作者使用了 libpcap实现拦截数据包,这是 Linux 上常见的包监控库。在配置中指定了恶意软件拦截数据包的设备/接口。它使用 pcap_open_live
库函数打开设备以捕获数据包,并在设备上安装 BPF 过滤器。通过传递过滤字符串 “(udp and dst port 53) or (tcp and dst port 80 or 8080)” 到 pcap_compile
函数,来编译过滤程序。该过滤器仅捕获端口 53 上的 UDP 数据包和端口 80 或 8080 上的 TCP 数据包。为实际安装该过滤器,恶意软件调用了 pcap_setfilter
。
设置完成后,恶意软件调用 pcap_loop
并传入一个处理函数作为参数。对于每个通过过滤器的数据包,处理函数会被调用,并接收数据包数据作为参数。该处理函数负责处理每个过滤后的数据包。如图:
数据包处理函数检查以太网和 IPv4 头,以确定数据包是 UDP 还是 TCP 数据包。根据数据包的 IPv4 协议类型,调用 process_udp_packet
或 process_tcp_packet
函数。
DNS劫持模块分析
通过分析 process_udp_packet
函数,可以看出该函数专门用于处理 DNS 数据包。在分析网络数据包时,使用 IDA 创建数据包结构并将其应用于分析会更为方便,这样可以更清楚地理解整个逻辑。DNS 数据包由以太网头、IP 头和 UDP 头组成,接下来是 DNS 头和 DNS 数据。利用这些结构信息,可以应用于处理函数中,从而解析 DNS 头并执行基本的完整性检查,如下所示:
每个 DNS 数据包都包含在 DNS 头之后的查询,这些查询包含客户端请求的域名信息。恶意软件会解析 DNS 查询并获取 DNS 请求的域名。得到域名后,它会将其与恶意软件配置中的 DNS 域名进行比对。如果匹配成功,DNS 请求将被劫持,恶意软件构建一个伪造的 DNS 响应数据包。然后,它将该数据包发送回客户端,以攻击者控制的 C2 服务器 IP 地址替换掉合法的 IP 地址。以下函数用于构建伪造的 DNS 数据包并将其发送给客户端:
HTTP拦截与伪造响应分析
process_tcp_packet
函数用于拦截 HTTP 请求,攻击者可以通过多种配置选项来调整拦截方式。恶意软件可以拦截 GET 和 POST 请求。如前所述,HTTP 拦截也可以通过 IPLimit
配置选项限制到特定的 IP 地址。HTTP 拦截的工作机制与 DNS 拦截类似。如果请求符合指定条件,恶意软件会构建一个伪造的 HTTP 响应并发送回客户端。攻击者可以在恶意软件的配置中设定伪造响应的内容,从而返回特定请求对应的硬编码页面。
要成功返回伪造的 HTTP 响应,必须满足配置文件中指定的所有条件。HTTPConfig
中可以配置以下键:
-
url:指定要拦截的 URL。
-
host:指定要拦截的主机名。
-
ua(user-agent):指定要拦截的用户代理。
-
content-type:指定内容类型。
-
otherhead_%s:用于指定要解析和检查的其他标头,其中
%s
表示标头名称。 -
sendlimit:定义恶意软件满足条件时返回伪造响应的次数。一旦超过此限制,恶意软件将不再修改满足条件的请求的响应。
-
configfile:包含满足所有条件时要提供的网页路径。
通过 otherhead_%s
键,攻击者可以指定其他要解析和检查的 HTTP 标头;sendlimit
键限制伪造响应的次数,一旦超过该次数,恶意软件将不再拦截这些请求。configfile
键指定在条件满足时提供的网页文件路径。
以下是该恶意软件的一个完整配置示例:
上述配置会在 Port1
设备上拦截所有 DNS (端口 53) 和 HTTP (端口 80 和 8080) 的数据包。该配置劫持了 www.msftconnecttest[.]com
域名的请求,并将其响应重定向到 IP 地址 122.10.90[.]20
。在 HttpConfig
配置中,缺少 host
键,这意味着恶意软件会拦截满足其他条件的任何主机的 HTTP 请求。
这只是观察到的众多配置之一;攻击者会利用恶意软件提供的多种选项,以实现不同的攻击目标。
感染应用侧分析
StormBamboo 通过多种复杂程度的步骤,利用多个软件供应商的不安全更新流程来投放恶意软件。例如,5KPlayer 的更新流程中存在漏洞:每次启动应用程序时,该程序会自动检查是否有新版本的 “YoutubeDL” 可用。下图展示了用于升级 Youtube.config
的 HTTP 请求, 如图:
Youtube.config升级的内容如下:
如果有新版本可用,它会从指定的 URL 下载并由合法应用程序执行。StormBamboo 使用 DNS 中毒来托管一个修改过的配置文件,指示有新更新可用。这导致 YoutubeDL 软件从 StormBamboo 的服务器下载了升级包。
YoutubeDL 包通过在升级过程中使用的 YouTubeDL.py 文件中间插入恶意代码而被植入后门。下图显示了插入的恶意代码,从第 164 行开始:
它的目的是下载下一个阶段,即一个 PNG 文件,包含根据操作系统不同而定的 MACMA(macOS)或 POCOSTICK(Windows)。
MACMA 首次在 2021 年由 Google TAG 公开记录。在过去的三年里,MACMA 发生了变化,增加了更多便于操作者使用的功能,并对其某些架构进行了全面改造。例如,网络协议已经完全更改。原始版本使用了一个数据分发服务器(DDS),该服务器由一系列以字符串“CDDS”作为前缀的自定义类实现。MACMA 貌似使用 kNET 协议 UDP 进行网络通信。
后续活动分析
在成功入侵受害者的 macOS 设备后, StormBamboo 在受害者的设备上部署了 Google Chrome 扩展程序。安装程序支持以下参数:
-
-p / –plugin: 插件的路径(必须是 ZIP 压缩包)
-
-f / –force : 杀死 Chrome 进程并安装插件
通过修改Secure Preferences
文件以包含新扩展来部署浏览器扩展。安装程序还正确修复了新修改的SecurePreferences
中的protections.macs
和protections.super_mac
值。这些值旨在防止篡改用户的浏览器设置,但它们可以被伪造。
传递给该工具的插件存储在以下位置:
$HOME/Library/Application Support/Google/Chrome/Default/Default/CustomPlug1n/Reload/
配置完成后,可以在用户的SecurePreferences
文件中看到,如下所示:
最后,插件( 6abf9a7926415dc00bcb482456cc9467
)由运行以下 AppleScript 命令的安装程序激活:
osascript -e tell application “Google Chrome” to activate
该扩展将自己描述为一个以 Internet Explorer兼容模式加载页面的扩展:
扩展程序使用的主要 JavaScript 逻辑是使用Obfuscator.io进行混淆的。该扩展的目的是将浏览器 cookie 泄露到攻击者控制的 Google Drive 帐户中。攻击者的 Google Drive client_id
、 client_secret
和refresh_token
都包含在扩展中。它们的加密方式超出了 Obfuscator.io 使用 AES 和 key chrome extension
提供的默认加密方式。
总结
StormBamboo 的技术水平体现了其高度的灵活性和适应性。通过有效利用 DNS 中毒等手段,该组织能够巧妙地诱导用户下载恶意软件,从而实现对受害系统的控制。这种策略展示了其对社交工程和用户行为的深入理解。此外,StormBamboo 在恶意软件的开发和演进上表现出强大的技术能力,能够通过不断优化和改进其工具,增强其隐蔽性和攻击效果。这种技术能力的提升,使其在网络安全领域构成了显著威胁,也反映出攻击者在复杂环境中持续进化的趋势。
原文始发于微信公众号(二进制空间安全):技术精湛,来自国内APT组织的恶意软件,苹果电脑也未能幸免