FritzFrog:P2P 僵尸网络重出江湖
执行摘要
FritzFrog 是一个 P2P 僵尸网络 活动,其发现时间是 2020 年 8 月,由 Guardicore Labs(现已更名 Akamai Threat Labs)发现。
这个去中心化的僵尸网络定向攻击任何公开 SSH 服务器的设备,包括云实例、数据中心服务器、路由器等,并且能够在受感染的节点上运行任意恶意负载
其 P2P 架构和专有代码展示出高度的复杂性
它最近卷土重来,一个月内显示出 10 倍的感染率增长,入侵了医疗保健、教育和政府部门的服务器
自该僵尸网络重新出现以来,有 1,500 台独立主机遭到感染,其中大部分位于中国
这一广泛传播的 Golang 恶意软件为该僵尸网络添加了新功能,包括使用代理网络和定向攻击 WordPress 服务器
最近的一轮攻击提供了有关 FritzFrog 来源的更多证据,表明它可能与某个在中国行事(或伪装成中国人)的攻击者存在关联
Akamai Threat Labs 已更新 FritzFrog 检测工具,使其能够处理该恶意软件的最新版本
FritzFrog 概览
FritzFrog v1 快速回顾
FritzFrog 是一个 P2P 僵尸网络,这意味着其命令和控制服务器不限于一台中心化的计算机,而可能是其分布式网络中的每一台计算机。换句话说,运行该恶意进程的每一台主机都会成为该网络的一部分,从而能够发送、接收和执行用于控制该网络中计算机的命令。
FritzFrog 通过 SSH 传播。使用简单(而激进)的暴力破解技术找到服务器的凭据后,它会与新的受害者建立 SSH 会话,并在该主机上放置恶意可执行文件。然后,该恶意软件就会开始侦听并等待命令。这些命令包括交换目标、共享被入侵计算机的详细信息、传输文件,以及运行脚本和二进制负载。完整命令列表见 上一篇博文。
我们认为 FritzFrog 是“下一代”僵尸网络,因为它结合了以下属性,在威胁态势中很是独特:
持续更新——目标和遭入侵机器的数据库无缝交换
攻击性强——暴力破解基于内容丰富的字典;相比之下,最近发现的另一个 P2P 僵尸网络 DDG 仅使用了用户名“root”
高效——目标在节点间平均分布
专有——该 P2P 协议完全是专有的,不依赖于任何已知 P2P 协议,例如 μTP
FritzFrog v2 卷土重来
就在 2020 年 8 月发布有关 FritzFrog 的详细信息后,Guardicore Labs 团队(现已更名 Akamai Threat Labs)发现攻击事件数量有所下降。然而在 2021 年 12 月上旬,我们发现,针对我们全球传感器网络的攻击数量有小幅上升。
FritzFrog 攻击从 SSH 暴力破解开始,然后是放置和执行文件。此文件将立即开始侦听端口 1234,并通过端口 22 和 2222 扫描数千个互联网 IP 地址。
旧 FritzFrog 攻击和新攻击的区别之一在于恶意进程的名称。在第一轮攻击中,恶意进程被命名为 ifconfig 或 nginx;而这次,FritzFrog 攻击者将其命名为 apache2。
我们开始监视这个新变体,并发现了惊人的 FritzFrog 攻击数量增长,每日最高记录达到了 500 起。
我们的传感器在 FritzFrog 攻击事件首次出现后感知到的攻击次数
受害者分析
在调查 FritzFrog 首次活动的过程中,我们开发出了一款名为 Frogger 的工具。我们通过 Frogger 收集有关受感染主机的信息,包括其运行时间、哈希率、同级节点和 hasrate(如果正在运行加密挖矿程序)。此程序接收受感染节点的 IP 地址,并通过加密通信频道查询主机,以便接收有关其状态的信息。这样,我们就能更加了解该节点及其关联节点。此进程利用僵尸网络的基础架构实现此操作。
我们的受害者分析基于两项资源:攻击我们传感器的计算机的 IP 地址,以及 Frogger 获取的信息。也就是说,我们从传感器检测到的攻击者 IP 列表开始,然后使用 Frogger 递归式查询其中每一条目的同级节点,以扩展该列表。
下图显示了每天攻击我们传感器的 IP 地址数量,以及攻击者数量的连日差异。攻击节点(运行恶意软件的受害计算机)数量的上升令人不安。
我们的威胁传感器每天检测到的攻击节点数量
此图显示了攻击节点数的连日差异
在第二次活动期间,FritzFrog 成功感染了超过 1,500 台不同的主机。这些计算机是服务器,属于各种规模和部门的机构,包括医疗保健、高等教育和政府。我们在欧洲电视和频道网络、俄罗斯医疗设备制造商和东亚的多所大学都发现了受感染的机器。如地图所示,受害计算机很大程度上集中在中国。
大部分受害者位于北半球,尤其是中国
新的恶意软件功能
FritzFrog 二进制文件以 Golang 写成,可编译以在多种架构上运行。它采用 UPX 打包,通常以下列四个进程之一的名义执行:ifconfig、nginx、apache2 或 php-fpm。我们在 上一篇文章中提供了对该恶意软件的详细分析,因此下文将专注介绍新的样本及其增加的功能。
FritzFrog 每天都会更新,有时一天更新几次。大多数新版本涉及 bug 修复,但某些版本会向该恶意软件添加新功能。
准备 WordPress 定向攻击
FritzFrog 发布了一个新版本,它会实现用于跟踪 WordPress 服务器的基础架构。它包含负责在名为 Wordpress 和 WordpressTargetsTTL 的列表中增加和删除条目的功能。以下反汇编代码段显示了 P2P 命令 put wordpress 的实现,该命令会向 WordPress 目标列表中添加一个新条目。在本报告成文时,这些(保存在所有受感染节点上的)列表仍然为空。
该恶意软件不包含任何能够破解或识别 WordPress 目标的模块。在此基础上,我们推测该代码是在为新版本作准备,而新版本将能够入侵这些目标并将其用于挖矿以外的目的,例如信息泄露、勒索软件等。
Tor 代理链
FritzFrog 可以将 SSH 连接的代理设置为本地端口 9050,从而使用 Tor 代理链代理出站 SSH 连接。Tor 代理链是一个节点网络,它通过创建从源到目标的基于封装的路径,使每个节点仅可感知与其直接相邻的节点,从而为其用户提供更好的隐私保护和掩蔽。
通过将请求代理到本地端口 9050,FritzFrog 使用 Tor 代理链连接到拥有的 SSH 设备。拥有的设备会将入站请求看作来自代理链中的最后一个节点。这可以用于隐藏当前受感染节点的地址。迄今为止,虽然这一功能确实存在,但我们尚未发现该恶意软件使用此功能。
SCP
FritzFrog 现在使用 SCP 将其自身复制到已被入侵的远程服务器上。这与最初的版本不同;最初版本通过已建立的 SSH 会话,使用 cat 命令将恶意可执行文件放置在新的受害计算机上。新的实现使用 以 Golang 写成的公共 SCP 库,它位于 GitHub 中。我们未能确定这两种方法孰优孰劣。但可以注意到,该 SCP 库的作者位于中国。
阻止列表
FritzFrog 的早期版本实现了阻止列表,来阻止破解器(暴力破解)模块入侵特定机器。特殊的 P2P 命令 putblentry 允许将条目动态插入到此列表,而新版本提前硬编码了几个条目。
其中某些条目指定 Unix 名称,而另一些则指定 IP 地址,但不会同时指定。
硬编码到新 FritzFrog 样本的阻止列表条目
[
{"Address": "",
"Uname_match": "[redacted]dddz.me 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017"},
{"Address": "",
"Uname_match": "[redacted]-1 4.4.0-151-generic #178-Ubuntu SMP Tue Jun 11 08: 30: 22 UTC 2019"},
{"Address": "",
"Uname_match": "[redacted].amzn2.x86_64 #1 SMP Mon Jun 18 22: 33: 07 UTC 2018 x86_64 GNU/Linux"},
{"Address": "",
"Uname_match": "[redacted]-generic #113-Ubuntu SMP Thu Jul 9 23: 41: 39 UTC 2020"},
{"Address": "",
"Uname_match": "[redacted] raspberrypi 4.4.32-v7+ #924 SMP Tue Nov 15 18: 11: 28 GMT 2016 armv7l GNU/Linux"},
{"Address": "",
"Uname_match": [redacted] 3.10.0-123.4.4.el7.x86_64 #1 SMP Fri Jul 25 05: 07: 12 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux"},
{"Address": "",
"Uname_match": [redacted] 4.18.0-193.28.1.el8_2.x86_64 #1 SMP Thu Oct 22 00: 20: 22 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux"},
{"Address": "[redacted].24: 22",
"Uname_match": ""},
{"Address": "[redacted].88: 22",
"Uname_match": ""},
{"Address": "[redacted].26: 22",
"Uname_match": ""}]
这些条目表明攻击者意图避免感染资源贫乏的低端系统,例如 Raspberry Pi 设备或 AWS 上资源贫乏的 EC2 映像。
阻止列表中的一个 IP 来自俄罗斯。它具有多个开放端口和一个未打补丁漏洞的长列表,因此它可能是蜜罐。此外,还有一个条目指向开源僵尸网络 sinkhole。这两个条目暗示行为人意图避开检测和分析。
其中两个 IP 地址地理上来自美国。一个条目阻止马里兰大学,原因不明;另一条在浏览到时显示或揶揄或警告的消息,似乎明白可能有人在调查该恶意软件。
显示的警告称“curiosity killed the cat”(好奇心杀死猫)
来源和归因
对此攻击活动的最近更改和添加,让我们能够考察此恶意软件可能的来源。虽然不能断定其真实来源,但我们相信分享此信息可能是有价值的。
第一项证据来自编译到 FritzFrog 恶意软件的一批新增库,其中一个库名为 scp,它为通过 SSH 传输的文件实现安全复制协议。该库以 Go 写成,其代码被一名位于上海的用户分享到了 GitHub 存储库 中。此存储库存在一次分叉,该操作由另一个 位于上海的用户完成。
与中国有关的另一项证据来自 FritzFrog 的加密挖矿活动。我们的研究团队成功找到了加密挖矿进程中使用的新钱包地址和新矿池。其中一个新观察到的钱包地址(下方给出)还被用作 Mozi 僵尸网络活动的一部分,其作者最近在中国被捕。
关联到 Mozi 的 FritzFrog 门罗币钱包地址
47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV
这几点证据虽不确凿,却让我们相信它可能与在中国行事或伪装成中国人的攻击者有关。最后,监视攻击数据证明,在该攻击活动期间,始终有大量的活动发生在中国或与中国有关。迄今为止,约 37% 的受感染节点似乎位于中国。
预防和补救
FritzFrog 检测工具
Akamai 提供了可在 SSH 服务器上运行的 FritzFrog 检测脚本 。它会寻找以下 FritzFrog 迹象:
运行名为 nginx、ifconfig、php-fpm、apache2 或 libexec的进程,而且其可执行文件已不再存在于文件系统中(如下所示)
侦听端口 1234
此外,端口 5555 上的 TCP 流量可能暗示指向门罗币池的网络流量。
建议
随时更新系统并下载补丁
使用强密钥管理和轮换系统实现无密码登录
启用系统登录审核和告警
监视 Linux 系统上的 authorized_hosts 文件
配置明确的 SSH 登录允许列表
禁用 root SSH 访问
启用 Akamai 基于云的 DNS 保护,并将威胁和挖矿等无关业务应用程序设置为阻止