通过他们的 DDosia 项目,支持俄罗斯的黑客行动小组 NoName057(16) 仍在开展 DDoS 攻击,主要目标是使欧洲国家的机构和公司网站离线。该小组在其 Telegram 频道上公开表明,他们的行动是为了支持俄罗斯在与乌克兰的战争中的努力,显然,他们的活动将在战争期间继续进行。这个组织还向安装他们 DDosia 工具、参与其攻击的人提供加密货币的报酬。我们希望提高人们的警觉意识:那些在自己电脑上安装了 NoName057(16) 的 DDoS 工具的人,不仅在参与网络犯罪,还在支持该组织的战争活动。 我们检测并阻止 DDosia,以使互联网变得更安全,并继续追踪 DDoS 受害者和 DDosia 僵尸网络的配置,因为这些信息有助于减轻 DDoS 攻击的影响。 由于第一版 Python 版本的效率不足,该组织在 2022 年底发布了新的 Go 变种机器人。 SentinelLabs 描述了那时活跃的 Go 实现的第一个变种。几天后, Team Cymru 发布了对该僵尸网络架构的调查,将 DDoS 攻击描述为一个主要是静态的基础设施。 鉴于上述发现,很明显 C2 结构仍在不断演变。接下来的分析的主要目的是探索 C2 架构及其与僵尸网络之间的当前通信过程。因此,我们一直在积极监控 DDosia 僵尸网络,并发现了机器人实现和僵尸网络基础设施中的几项创新。C2 基础设施由一个中央服务器和两个转发机器人请求的代理服务器组成。结合更新机制,使得该僵尸网络对于中断具有相当的抗压能力。最新版本还包括了用于所有 C2 通信的机器人身份验证机制,以及阻止 IP 地址的列表,显然是为了阻碍项目的追踪。 DDosia 的第一次实现出现在 2022 年 7 月左右。由 NoName057(16) 小组编写,且在该僵尸网络被拆解之前,与 Bobik 僵尸网络发生了短暂共存,显然是为了更好地发展 DDosia。它是用 Python 编写的,采用线程作为并行手段;然而,在效率方面仍显得不足。自第一版以来,DDosia 一直依赖 HTTP 协议进行 C2 通信,并通过服务器分发 JSON 配置。 效率不足显然促使了 DDosia 的变更,即在 2022 年底从 Python 转向 Go, SentinelLabs 描述了第一个 Go 变种。与 Python 相比,Go 的主要优点是可以直接编译成本地代码,并且没有 Python 的 GIL,这可能严重影响在 Python 中使用线程的性能。有趣的是,这些新版本也是多平台的,因为我们已经看到所有主要操作系统 (Windows、macOS、Linux、Android) 的变种。显然,机器人的开发仍在进行中,我们看到新功能,如 HTTP 身份验证,也被添加到 DDosia 中,以及配置文件的微小变更。 GoStresser 版本 10 变种 1 的控制台输出 让我们更详细地看看 2023 年 3 月 6 日的 DDosia 机器人第二个变种,该版本加入了身份验证机制,显然目的是为了应对研究人员寻找攻击目标列表。 GoStresser 版本 10 变种 2 的控制台输出 上述变种支持多个架构以及多个平台;它也是用 Go 编写的。构建通过 Telegram 频道“Project DDosia”以 zip 文件的形式分发,构建如下: 可执行文件的名称有时会更改;以下是捕获的名称列表: 机器人的可执行文件的工作目录必须包含一个文本文件 clientidtxt,该文件包含注册用户的 UserHash。UserHash 的形式是带有这些参数的 BCrypt 哈希 2a16。 第一次的沟通结果是使用 nordvpncom 来获取有关发送到 C2 服务器的机器人 IP 地址的详细信息。第二个结果是通过 POST 方法使用 C2 进行 /login URL 的请求,数据代表机器人 IP、用户 ID 和机器人认证的信息。 登录 C2 ClientHash 是一个库的结果,它返回操作系统本地机器的 UUID/GUID。这是 Denis Brodbeck 的开源实现 Go MachineID。Clienthash 具有一个后缀,表示当前的 PID在这种情况下是 5481。 登录期间来自 C2 的登录响应 如果认证成功,C2 返回 HTTP/11 200 OK,并附带一个以纪元/Unix 时间戳形式的令牌,然后可以通过 GET /client/gettargets 下载目标配置。DDosia 机器人的第一个变种并未实现任何身份验证机制,但在当前的 C2 架构中,获得有效的令牌对于成功获取目标配置是必要的;否则返回 401 Unauthorized。 从 C2 获取目标 返回的 JSON 文件与第一个变种相似,不同之处在于原始 JSON 配置被包装在一个 data 键中。此外,每个 GET /client/gettargets 的响应中都包含一个新的 token 键。该 token 是用于后续通信的新令牌。 新形式的返回配置 新配置支持四种攻击类型:http、http2、nginxloris 和 tcp。其余项目与 SentinelLabs 先前描述的相同;参见 CampC Communication 和 SentinelLabs。 当登录和获取目标操作成功后,机器人创建大约 20 个工作线程,使用同步方法执行 DDoS 攻击,因为机器人会计算成功连接的数量。因此,机器人会等待被攻击服务器的响应;如果响应为 200,则该尝试被视为一次成功攻击。随后,最新的机器人实现比最初的 Python 实现快八倍。 每 四 分钟会将运行统计数据通过 POST /setattackcount 发送回 C2 服务器。 将攻击统计数据发送回 C2 这些统计数据帮助攻击者跟踪目标配置的有效性,并及时做出新的配置响应。如果一切按预期进行,每 10 分钟请求一次新的目标配置。然而,有时 C2 服务器无法处理请求,连接无法建立。在这种情况下,机器人继续使用最新的目标配置,并尝试稍后联系 C2。图 1 提供了 C2 服务器与机器人的通信概览。 图 1 C2 通信工作流程 其中一个尚未解答的问题是机器人的更新。我们对这一领域的调查仍在进行中,我们努力确认我们的假设,即有一个自动的机器人更新程序。 我们观察到过去几个月有几次 C2 服务器被打击并发布了新构建。我们预计机器人更新和后续 DDoS 攻击之间会有几天的延迟。然而,从 C2 被打击到新的 DDoS 攻击之间的时间只有几个小时。因此,我们的假设是有一个自动更新程序,因为手动在几小时内更新大约 7200 个独立客户端是不太可能的。 在过去的四个月中,新机器人的发布数量是相当可观的,如 图 2 所示。因此,应该存在某种自动更新程序。 图 2 DDosia 可执行文件的命中 所有 C2 服务器都使用 HTTP 协议进行通信,但未进行加密。因此,DDosia 的作者尝试实施一种机制以保护目标配置只是一个时间问题。 第一次实施保护机制的尝试是在 2023 年 1 月 28 日。其主要思想是使用临时 DNS 记录,每天午夜轮换。这些 DNS 记录然后重新配置为不存在的记录。由于这个 24 小时的周期,最初的 DNS 记录不会被任何在线监控服务捕获,因此 DNS 记录的历史只包含不存在或无效的记录。因此,C2 服务器的有效 IP 地址不会被记录在任何地方,因此很难找到它们。 这一机制在 2023 年 1 月 28 日和 29 日的情况中得到体现。两个具有硬编码 DNS 记录的构建在午夜后被重定向到不存在的 IP。第二天,发布了带有新 DNS 记录的新构建。 例如, deac48f968269bb5e75ceb9417f6680d8787a03ba0768e25d8716f189a079574版本具有两个 DNS 记录pkcds2cas7ignorelistcom,pqw2vsi21mx74twilightparadoxcom指向 21273134208。然而,DNS 记录在 2023 年 1 月 27 日至 28 日午夜时重定向到 127002。因此,如果你今天解析这些 DNS 记录,就无法解析最初的 IP,因为该地址已经不可追踪。 同样的情况出现在 2023 年 1 月 28 日至 29 日午夜的 5c1be24a5fa75b70c50515a061d2d3ce911b785188328408edc0a79dfc5e3173 版本。其他两个 DNS 记录trafficsearchddnsnet、trafficanalyzerbouncemenet指向 94140115129。DNS 记录也被重定向到无效的 IP 地址,即 0000。 实施这一机制可能并不成功,因为在 1 月 28 日,团体 Telegram 上报告的目标数量较低,如 图 3 所示。此外,报告中有来自先前目标配置的被取缔域名。最后,1 月 30 日发布的构建中包含了 C2 服务器的硬编码 IP 地址94140114239。 第二次尝试实施保护机制是于 2023 年 3 月 7 日。与 C2 服务器的通信仍通过 HTTP 进行,但设计并实现了一种令牌机制。因此,任何人都不能在没有认证的情况下随意下载目标配置被攻击的域名列表。 图 4 身份验证机制 与 C2 服务器的第一次联系是登录请求,如 图 4 所示。请求中必须包括 UserHash 头,用户在 DDosia 项目 Telegram 频道中注册时获取。另一个必要的条件是关于机器人的 GeoIP 数据。如果给定机器人的 IP 地址或 ISP 在封锁名单上如 Avast,则认证过程将以 401 Unauthorized 结束。然而,如果认证成功,登录请求将返回字符串格式的令牌。 该令牌有效期约为 15 分钟,每次使用令牌进行后续请求时必须添加常量 0xF。调整后的令牌作为 Time 条目包含在 HTTP 头中,每个响应随后都包含一个新的令牌值。 C2 架构正在动态变化。自 2023 年初以来,我们发现了与 DDosia 项目相关的四个 IP 地址。三个地址是活跃的 Web 服务器,运行在 Ubuntu 上,使用 nginx/1180。更重要的是,这些 Web 服务器返回相同的目标配置,并提供,例如登录僵尸网络以及向攻击者报告统计信息等服务。当前发现的 DDosia 项目的 C2 架构显示在 图 5 中。 图 5 C2 架构 通过 HTTP 中央 C2 服务器M通过端口 5001 与代理 C2 服务器 P1 和 P2 进行联系。DDosia 机器人也通过端口 80 使用 HTTP 到达代理服务器,请求被转发到中央服务器。尚未检测到来自主要服务器的任何可疑结果。然而,某个可疑服务器或客户端与主服务器和 P2 服务器之间的通信频繁。我们记录了在 2023 年 2 月 14 日左右,一个可疑 IP161351992的网络活动最高。该可疑机器的具体目的仍然不明,但可能是测试或监控服务。 除了机器人通过端口 80 的通信外,我们还检测到两个代理服务器的端口 22 上的连接。我们分析的机器人的可执行文件中并未实现通过端口 22 进行传输,但我们的监测显示其通信量较大。然而,大多数联系端口 22 的捕获 IP 由于端口扫描或 SSH 硬暴力攻击而被认定为可疑。 此外,C2 基础设施在很大程度上依赖于代理服务器,从而提高了 DDosia 基础设施的韧性。然而,我们的监测显示,代理服务器出现过 502 Bad Gateway 错误响应的停机情况。第一个显著的中断出现在实施身份验证机制期间。中断持续了几个小时,持续时间和时机表明可能是由于开发问题引起的。问题的根源似乎部分已修复,因为最近的中断在一小时内得到了解决。 我们仍在继续监控 DDosia 项目的目标和加入该项目的用户数量。我们将在后续帖子中发布有关目标、配置和志愿者的详细信息。图 6 提供了一个快速概览。 图 6 被攻击的国家和加入用户的趋势 我们还观察到 DDosia 社区正在稳步增长,尽管对新成员能够贡献的能力可能有所质疑。尽管如此,这在特定情况下,一个基于志愿者的模型似乎比基于恶意软件的僵尸网络更有效、更易于管理;然而,其可用性可能更依赖于政治环境。 显然,该项目仍在开发中,NoName057(16) 正在努力提高 DDoS 攻击的效率。他们试图转向更高效的 Go 平台,因为用 Python 编写的初始变种在性能上显得不够出色。 许多变化似乎是出于对目标配置和 C2 架构的保护。因此,最新版本的 DDosia 机器人的 C2 通信实现了身份验证机制。 我们最有趣的观察可能是客户端更新机制的实现,因为以往的更新只对项目的有效性造成了短暂干扰。这也增加了 C2 机制的韧性,因为在服务器被打击后不再需要手动更新。该更新机制仍在我们的调查中。我们计划在未来的博客文章中发布关于跟踪器历史数据的更详细分析。 标记为 botnet、ddos 分享:XFacebook实现概览
Go 实现
构建包
机器人更新程序
C2 保护
C2 架构
DDosia 跟踪
结论
参考文献
NoName057(16) 目标为 NATO 的 proRussian 黑客行动小组A Blog with NoNameMachineId