StormBamboo 入侵 ISP 并滥用不安全的软件更新机制

news2024/11/15 10:53:05

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关键要点

  • StormBamboo 成功入侵了一家互联网服务提供商 (ISP),以毒害目标组织的 DNS 响应。
  • 不安全的软件更新机制旨在在运行 macOS 和 Windows 的受害者机器上秘密安装恶意软件。
  • StormBamboo 部署的恶意软件包括 MACMA 恶意软件的新变种。
  • 对 MACMA 最新版本的分析表明,MACMA 和 GIMMICK 恶意软件家族呈现融合发展。
  • 后利用活动包括部署恶意浏览器扩展 RELOADEXT 来窃取受害者的邮件数据。

2023 年年中,Volexity 发现并应对了多起系统感染与 StormBamboo(又名 Evasive Panda,之前被Volexity 追踪为“StormCloud ”)相关的恶意软件的事件。在这些事件中,发现多个恶意软件家族被部署到受害组织网络中的 macOS 和 Windows 系统中。

该恶意软件的感染媒介最初很难确定,但后来证明是互联网服务提供商 (ISP) 级别的 DNS 投毒攻击的结果。Volexity 确定 StormBamboo 正在更改与自动软件更新机制相关的特定域的 DNS 查询响应。StormBamboo 似乎针对使用不安全更新机制(例如 HTTP)且未正确验证安装程序数字签名的软件。因此,当这些应用程序检索更新时,它们不会安装预期的更新,而是安装恶意软件,包括但不限于MACMA和 POCOSTICK(又名MGBot)。攻击者使用的整体工作流程与 Volexity 调查的先前事件类似,该事件归因于威胁行为者 DriftingBamboo,可能与 StormBamboo 有关。

2023 年 4 月,ESET 发布了一篇博客文章,介绍了 Volexity 自 2018 年以来一直跟踪的恶意软件家族 POCOSTICK。ESET 没有直接证据,但提出最有可能的感染源是中间人 (AiTM)。Volexity 现在可以在真实案例中证实这种情况,并证明攻击者能够控制目标 ISP 的 DNS 基础设施,从而修改受害组织网络中的 DNS 响应。

这篇博文解释了感染媒介,并给出了 StormBamboo 滥用自动更新的示例。请注意,这只是一个例子;威胁行为者修改了一系列应用程序的安装工作流程,这些应用程序的更新机制容易受到此类攻击。

概述

在 Volexity 调查的一次事件中,发现 StormBamboo 通过 HTTP 自动更新机制毒害 DNS 请求以部署恶意软件,并毒害用作第二阶段命令和控制 (C2) 服务器的合法主机名的响应。

DNS 记录被毒化,以解析为 IP 地址为 的位于香港的攻击者控制的服务器103.96.130[.]107。最初,Volexity 怀疑最初的受害组织的防火墙可能已被破坏。然而,进一步调查显示,DNS 毒化不是在目标基础设施内进行的,而是在 ISP 级别的上游进行的。Volexity 通知了 ISP 并与其合作,后者调查了在其网络上提供流量路由服务的各种关键设备。随着 ISP 重新启动并使网络的各个组件脱机,DNS 毒化立即停止。在此期间,无法精确定位被破坏的特定设备,但基础设施的各个组件都已更新或脱机,活动停止了。

这并不是 Volexity 第一次遇到攻击者利用 DNS 中毒来促进对目标网络的初始访问。在2023 年 5 月的网络会议上,Volexity 介绍了一个名为 CATCHDNS 的恶意软件家族的详细信息,这是 DriftingBamboo 使用的 DNS 中毒恶意软件,部署到网络设备(在该实例中为 Sophos XG 防火墙)。Volexity 无法确认 StormBamboo 在 ISP 的路由器上使用了什么机制来修改 DNS 响应;但是,CATCHDNS 是 ISP 环境中实现此目标的精心设计的工具。CATCHDNS 的分析可以在附录中找到。

DNS 中毒:现在滥用不安全的自动更新机制!

在之前分析的 CATCHDNS 用来修改 DNS 响应的案例中,攻击的最终目标是修改用户浏览的页面内容。这会导致页面上弹出 JavaScript 警告,要求用户“更新浏览器”,从而从攻击者的服务器下载恶意文件。在最近的这个案例中,攻击者传播恶意软件的方法更加复杂,滥用受害者环境中软件中存在的不安全自动更新机制,因此不需要用户交互。

滥用自动更新的逻辑对于所有应用程序都是一样的:合法应用程序执行 HTTP 请求以检索包含最新应用程序版本和安装程序链接的文本文件(格式各不相同)。由于攻击者可以控制任何给定 DNS 名称的 DNS 响应,因此他们会滥用此设计,将 HTTP 请求重定向到他们控制的托管伪造文本文件和恶意安装程序的 C2 服务器。AiTM 工作流程如下所示。

在这里插入图片描述

Volexity 观察到 StormBamboo 针对多家软件供应商,这些供应商使用不安全的更新工作流程,在推送恶意软件的步骤中使用不同程度的复杂程度。例如,5KPlayer使用一种工作流程,每次启动应用程序时,二进制文件都会自动检查是否有新版本的“YoutubeDL”可用。下图显示了升级的 HTTP 请求Youtube.config

在这里插入图片描述

下图为升级内容Youtube.config

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果有新版本可用,则从指定的 URL 下载并由合法应用程序执行。StormBamboo 使用 DNS 投毒来托管修改后的配置文件,表明有新更新可用。这导致 YoutubeDL 软件从 StormBamboo 的服务器下载升级包。

正如人们所料,YoutubeDL 软件包已被植入后门,其方法是YouTubeDL.py在升级过程中使用的文件中插入恶意代码。下图显示了从第 164 行开始插入的恶意代码。

img

其目的是下载下一阶段,即包含 MACMA(macOS)或 POCOSTICK(Windows)的 PNG 文件,具体取决于操作系统。

MACMA 于 2021 年由 Google TAG 首次公开记录。在此后的三年中,MACMA 发生了变化,增加了更多功能以方便操作员,并对其部分架构进行了彻底改造。例如,网络协议已完全改变。原始版本使用数据分发服务器 (DDS),该服务器在一系列以字符串“CDDS”为前缀的自定义类中实现。现在,MACMA 似乎使用kNET协议 UDP 进行网络通信。在 Volexity 的分析过程中,Volexity 注意到最新的 MACMA 版本与Volexity 之前描述的GIMMICK 恶意软件家族之间存在显着的代码相似性。

后续活动

在一个案例中,在成功入侵受害者的 macOS 设备后,Volexity 发现 StormBamboo 向受害者的设备部署了 Google Chrome 扩展程序。Volexity 使用名称 RELOADEXT 跟踪此恶意扩展程序。该扩展程序是使用ee28b3137d65d74c0234eea35fa536af攻击者开发的自定义二进制文件 () 安装的。安装程序支持以下参数:

范围描述
-p / --plugin插件路径(必须是 ZIP 压缩包)
-f / --force关闭 Chrome 并安装插件
Secure Preferences`通过修改文件以包含新扩展,即可部署浏览器扩展。安装程序还会正确修复新修改的 中的`protections.macs`和值。这些值旨在防止篡改用户的浏览器设置,但它们[可以被伪造](https://www.microsoft.com/en-us/security/blog/2020/12/10/widespread-malware-campaign-seeks-to-silently-inject-ads-into-search-results-affects-multiple-browsers/)。如果它们不包含预期的值,Chrome 将覆盖该文件。`protections.super_mac``SecurePreferences``SecurePreferences

传递给此工具的插件存储在以下位置:

$HOME/Library/Application Support/Google/Chrome/Default/Default/CustomPlug1n/Reload/

配置完成后就可以在用户的SecurePreferences文件中看到,如下所示。

在这里插入图片描述

6abf9a7926415dc00bcb482456cc9467最后,安装程序运行以下 AppleScript 命令来激活插件( ):

osascript -e tell application “Google Chrome” to activate

该扩展程序将自己描述为以与 Internet Explorer兼容模式加载页面的扩展程序:

img

该扩展程序使用的主要 JavaScript 逻辑使用Obfuscator.io进行混淆。该扩展程序的目的是将浏览器 cookie 泄露到攻击者控制的 Google Drive 帐户中。攻击者的 Google Drive client_idclient_secretrefresh_token都包含在该扩展程序中。它们使用密钥为 的 AES 进行加密,超出了 Obfuscator.io 提供的默认加密范围chrome extension

发送到 Google Drive 的泄露数据也使用 AES 加密,使用密钥opizmxn!@309asdf,并在泄露之前使用 base64 编码。

结论

StormBamboo 是一名技术高超、攻击性极强的威胁实施者,他通过入侵第三方(在本例中为 ISP)来攻击目标。该威胁实施者在各种活动中使用的各种恶意软件表明,他们投入了大量精力,不仅积极支持 macOS 和 Windows 的有效负载,还支持网络设备。

本博文中描述的事件证实了 ESET 对 POCOSTICK 恶意软件感染媒介的假设。攻击者可以拦截 DNS 请求并用恶意 IP 地址对其进行毒害,然后使用此技术滥用使用 HTTP 而非 HTTPS 的自动更新机制。此方法类似于 Volexity 之前观察到的 DriftingBamboo 在Sophos 防火墙遭到零日攻击后使用的攻击媒介。

为了检测此次特定攻击中使用的恶意软件,Volexity 建议采取以下措施:

  • [使用此处](https://github.com/volexity/threat-intel/blob/main/2024/2024-08-02 StormBamboo/rules.yar)提供的规则来检测相关活动。
  • [阻止此处](https://github.com/volexity/threat-intel/blob/main/2024/2024-08-02 StormBamboo/iocs.csv)提供的 IOC 。

附录

CATCHDNS 分析

CATCHDNS 是一种 32 位 ELF 恶意软件,针对 Linux 系统,它是在 Volexity 调查的一起案件中发现的,Volexity 将其归咎于 StormBamboo。CatchDNS 旨在部署在大多数网络流量经过的系统上。在 Volexity 调查的特定案例中,该恶意软件是在外围防火墙设备上发现的。但是,CATCHDNS 可以部署在任何支持使用的 Linux 设备上libpcap

经过初步分析,Volexity 发现该恶意软件已被完全剥离,并且库函数是静态链接的,因此进一步分析更加困难。CATCHDNS 将其配置作为加密档案存储在自身中。恶意软件解密档案并在运行时将其以名称 放在磁盘上[binary_name].tty。然后,此档案在内存中解压缩,并删除磁盘上的副本。在分析的示例中,配置文件位于名为 的文件中dns.ini。配置遵循INI 文件格式,该格式由包含键值对的各个部分组成。

CATCHDNS 配置可以包含以下部分:

部分描述
[收听_设备][发送设备]监听设备和发送设备部分下有一个“dev”键,其值指的是恶意软件拦截数据包和发送虚假数据包的接口。
[DNS域名]此部分包含“dns”键,其值代表要劫持其 DNS 的域。
[服务器IP]此部分包含“ip”键,其值是恶意软件成功劫持后被劫持域将解析到的 IP 地址。
[IP限制]此部分包含一个名为“ip”的键。定义此键后,恶意软件只会劫持来自此 IP 地址的请求。此选项仅适用于 HTTP 请求。
[HTTP配置]此部分很有趣,因为它是唯一包含多个键的部分。它定义了恶意软件拦截 HTTP 请求时使用的各种值。
数据包拦截

数据包拦截是 CATCHDNS 的一个关键组件。为了拦截数据包,它使用了libpcapLinux 上用于数据包监控的通用库。恶意软件拦截数据包的设备/接口在配置中指定。它使用pcap_open_live库函数打开设备以捕获数据包。它在设备上安装 BPF 过滤器,过滤程序pcap_compile通过传递过滤字符串使用该函数 进行编译“(udp and dst port 53 ) or (tcp and dst port 80 or 8080)”。该过滤器仅捕获端口 53 上的 UDP 数据包和端口 80 或 8080 上的 TCP 数据包。要实际安装此过滤器,它使用调用pcap_setfilter

一切设置完成后,CATCHDNS 会pcap_loop使用处理程序函数作为参数进行调用。对于通过过滤器的每个数据包,都会使用数据包数据作为参数调用处理程序函数。此处理程序函数负责处理每个经过过滤的数据包,如下所示。

img

数据包处理函数检查以太网和 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 请求,恶意软件会构建一个假的 DNS 响应数据包。然后,它将数据包发送回客户端,使用攻击者控制的 (C2) IP 地址而不是合法 IP 地址进行响应。以下函数用于构建假 DNS 数据包并将其发送到客户端:

在这里插入图片描述

HTTP 拦截和模拟响应

process_tcp_packet函数用于拦截 HTTP 请求。攻击者可以使用各种配置选项调整拦截。恶意软件可以拦截 GET 和 POST 请求。如前所述,还可以使用 将 HTTP 拦截限制为给定的 IP 地址IPLimit。HTTP 拦截的工作原理与 DNS 拦截类似。如果请求满足指定的条件,恶意软件将构建 HTTP 模拟响应并将其发送回客户端。可以通过恶意软件配置来配置响应,攻击者可以配置硬编码页面以响应特定请求。

要成功响应虚假 HTTP 响应,必须满足配置中指定的所有条件。可以在中指定以下键HTTPConfig

  • url
  • host
  • ua(用户代理)
  • content-type
  • otherhead_%s
  • sendlimit
  • configfile

可以使用键指定要解析和检查的其他标头otherhead_%s,其中%s表示标头名称。sendlimit键定义恶意软件将响应满足配置的请求的次数。一旦超过此限制,恶意软件将不再修改对与模式匹配的请求的响应。configfile如果满足所有条件,键包含要提供的网页的路径。

配置示例

Volexity 能够在入侵期间遇到的 CATCHDNS 样本从磁盘中删除之前对其进行拦截,从而提取所有配置。下图显示了提取配置的一个示例。

img

上述配置会拦截设备上的所有 DNS (53) 和 HTTP (80 和 8080) 数据包Port1。它会劫持www.msftconnecttest[.]com域并响应122.10.90[.]20该域的 IP 地址。在 中HttpConfig,“主机”键不存在,这意味着如果满足其他条件,恶意软件会拦截对任何主机的 HTTP 请求。这只是观察到的几种配置之一;据观察,攻击者使用恶意软件提供的各种选项来实现各种目标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2041600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python学习入门实验

(1)掌握python数字类型的使用方法 (2)掌握将数学表达式转换成python语言表达式的方法及注意 (3)掌握有关运算符号的特殊要求 (4)掌握输入、输出函数的使用方法 (5&am…

Python与netCDF数据之全面解析空间偏相关分析详解

概要 在气象学、海洋学、环境科学等领域,netCDF(Network Common Data Form)是一种常用的数据格式,用于存储和共享多维科学数据。偏相关分析(Partial Correlation Analysis)是一种统计方法,用于研究多个变量之间的关系,同时控制其他变量的影响。本文将详细介绍如何使用…

VTK-vtkStructuredGrid学习

vtkStructuredGrid是具有规则拓扑和不规则几何的数据集。可以理解为单元格顺序沿着坐标轴排列,但是每个单元格可以不一样。看了很多文字解释,感觉不清楚,直接用图解验证: 1.使用CAD随意绘制个网格草图 2.获取这些点信息&#xff…

Sealos 就是小团队的神器

作者:阳明。Kubernetes 布道师,公众号 K8s 技术圈主理人 最近我们新开发了一个项目 fastclass.cn,这个项目是一个独立开发者的学习网站,我们的目标是帮助你使用 Figma、Python、Golang、React、VUE、Flutter、ChatGPT 等设计构建真…

【linux】linux中如何通过systemctl来创建和管理服务

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

【网络】从零认识IPv4

目录 IP地址定义 网络标识和主机标识 子网掩码 IPv4地址的分类 全局地址和私有地址 个人主页:东洛的克莱斯韦克-CSDN博客 IP地址定义 IP是网络中每台设备的唯一标识符,用于识别和定位计算机、服务器、路由器等设备,以便它们能够在网络上…

VictoriaMetrics快速入门

文章目录 Multitenancy集群部署启动vmstorage服务启动vminsert服务启动 vmselect服务 配置使用集群大小调整和可伸缩性grafana展示参考资料 VictoriaMetrics是快速,经济高效且可扩展的时间序列数据库。它可以用作Prometheus的长期远程存储。 VictoriaMetrics集群包含…

鸿蒙开发5.0【同页面内的点击操作响应时延问题】分析思路案例

1. 场景导入 同页面内点击操作时延是指,应用内手指点击从离开屏幕开始,到页面发生变化的时间。常见场景包括点击后界面元素变化,弹出弹窗或者loading动画等场景。 2. 性能指标 2.1 性能衡量起始点介绍 1.点击操作响应时延的性能衡量的起点…

GitLab-CI/CD指南

由于公司没有运维,写go服务时各个环境编译部署还是略显麻烦,由于代码管理使用的是 gitlab,所以决定使用 gitlab 自带的 CI/CD 来做自动编译和部署,这样每次提交代码以后就可以自动部署到服务器上了。 gitlab 本身只有 CI/CD 的接…

金蝶云星辰V1与旺店通·企业版对接集成采购入库单查询(列表+详情)连通创建其他入库单(其他)

金蝶云星辰V1与旺店通企业版对接集成采购入库单查询(列表详情)连通创建其他入库单(其他) 接入系统:金蝶云星辰V1 金蝶云星辰基于金蝶云苍穹云原生PaaS平台构建,聚焦小型企业在线经营和数字化管理,提供财务云、税务云、…

操作系统中的进程:深入解析与理解

文章目录 一、什么是进程?🤔二、进程的特性 🌟三、进程的组成 🧩四、进程的状态与转换 🔄🔀五、进程的调度与管理 🔧🔀六、代码示例(C)创建进程进程等待&…

scanf中%c前加不加空格的区别

%c前加空格可以让scanf跳过空白字符&#xff08;如空格、制表符、换行符等&#xff09;&#xff0c;直接读取非空白字符。如果不加空格就会读取空白字符。 可以用两段测试客官有无慧根的程序来说明这个问题&#xff0c;测试代码如下&#xff1a; #include <stdio.h> in…

Ubuntu22.04安卓编译环境搭建及so库编译

1.配置Android-ARM64开发环境工具链: vim ~/.profile 或者 ~/.bashrc 或者 /etc/profile 编辑环境变量文件 输入下面内容 export CROSS_TRIPLE=aarch64-linux-android export CROSS_ROOT=/usr/${CROSS_TRIPLE} export ANDROID_NDK=${CROSS_ROOT} export AS=${CROSS_ROOT}…

【人工智能】数据集合集!

本文将为您介绍10个经典、热门的数据集&#xff0c;希望对您在选择适合的数据集时有所帮助。 点击蓝字 关注我们 1 Habitat Platform 发布方&#xff1a; Facebook AI Research西蒙菲莎大学佐治亚理工学院Facebook Reality LabsIntel LabsUniversity of California, Berkeley…

1- 关键字static

文章目录 1 前言2 static修饰局部变量2.1 局部变量无static修饰2.2 局部变量有static修饰 3 static修饰全局变量 1 前言 在C语言中&#xff0c;static是用来修饰变量和函数的&#xff1a; 修饰局部变量 - 称为静态局部变量修饰全局变量 - 称为静态全局变量修饰函数 - 称为静态…

django空巢老人志愿服务系统-计算机毕业设计源码58726

摘 要 随着社会老龄化问题日益突出&#xff0c;空巢老人群体的关注和关怀日益重要。本研究设计并实现了基于Python的空巢老人志愿服务系统&#xff0c;旨在利用技术手段提供更多关爱和支持给空巢老人群体。 该系统结合Python编程语言的灵活性和易用性&#xff0c;实现了慈善捐赠…

HCIE杭州考试分享

考试过程&#xff1a; 首先提醒大家关注一下天气&#xff0c;我去杭州没看天气&#xff0c;去了一直下雨&#xff0c;鞋子也湿了&#xff1b;27号早上七点多到的杭州&#xff0c;雨一直下&#xff0c;去了直奔网吧上机&#xff0c;最后的机时&#xff0c;早饭和晚饭都在网吧吃…

Linux多线程间通信机制(互斥锁、条件变量、信号量,读写锁)同步与异步(二)

原文链接&#xff1a;https://blog.csdn.net/weixin_55796564/article/details/119699146 一、概述 本章介绍了线程同步的几种不同的方法&#xff0c;包括互斥锁、条件变量、自旋锁以及读写锁&#xff0c;当然&#xff0c;除此之外&#xff0c;线程同步的方法其实还有很多&…

如何获取设备消息?

一、什么是消息&#xff1f; 消息是设备向萤石云平台传输的带有特定内容的信息&#xff0c;大部分消息由设备端主动产生&#xff0c;并且上报到平台。举个例子&#xff0c;设备开启画面变化检测&#xff0c;当设备画面产生变化&#xff0c;设备就会产生报警&#xff08;画面…

Adobe Premiere Pro 2023-23.6.7.1 解锁版下载与安装教程 (一款专业的视频编辑软件)

前言 Adobe Premiere Pro&#xff08;简称PR&#xff09;是一款知名的专业视频编辑软件&#xff0c;数字视频剪辑软件。主要用来编辑视频和音频&#xff0c;可以在RGB和YUV色彩空间中以高达32位色彩的视频分辨率对4K和更高质量的视频文件进行编辑&#xff0c;支持VST音频插件和…