AT&T 安全研究人员最近发现了一组极具隐蔽性的 ELF 可执行文件,它们在 VirusTotal 上的杀软检出率很低或为零。样本分析后,AT&T 已将它们确定为多个攻击者在多次攻击行动中使用的开源 PRISM 后门修改版。
对使用这些恶意软件的攻击活动进行了深入分析,这些攻击者在三年半内仍然活跃。2017年 11 月 8 日出现了最早的攻击样本。
WaterDrop 分析
WaterDrop 的变种很容易识别,它包含一个名称 xencrypt该函数使用硬编码单字节 0x1F密钥执行异常或加密。WaterDrop 变种第 7 版开始,恶意样本还包含纯文本字符串 WaterDropx vX started,其中 X 是恶意样本的版本号。到目前为止,已经观察到版本 12.2 和 3 使用 PRISM 命名, 7、9 和 12 WaterDropx。
WaterDrop 使用 agent-waterdropx作为 User-Agent 进行 HTTP 协议的 C&C 通信,C&C 使用 waterdropx.com 域名子域名。
尽管这些都是非常明显的特征,但攻击者仍然保持在 VirusTotal 检出率极低,可能是因为攻击规模小。
攻击者于2017年8月18日注册 waterdropx.com 域名。截至2021年 8 月 10 日,该域名仍在使用。
除了 PRISM 除基本功能外,WaterDrop 还引入了额外的异常或加密和定期轮询 C&C 服务器功能。
恶意软件和 C&C 服务器的通信是纯文本 HTTP 协议,所有版本的恶意软件都使用 agent-waterdropx作为 User-Agent。
以 还会有一些变种root 执行权限时加载内核模块。
版本进化
(1) PRISM v1
第一个版本的样本是使用 waterdropx.com 作为 C&C 域名攻击者使用他们的 User-Agent 相同。
与公开的 PRISM 相比之下,该版本创建了子过程,子过程继续向 发展C&C 服务器轮询要执行的命令。
第一个版本的样本没有混淆、添加或加密恶意样本。
(2) PRISM v2.2
2.2 版本的 PRISM 开始处理敏感数据,如使用 shell 命令等。单字节密钥的硬编码是 0x1F,该密钥用于发现同一攻击者的所有样本。
对于这个版本的恶意软件,初始的 C&C URI 请求格式如下:
(3) PRISM v3
3 版本的 PRISM 与 2.2 版本基本相同,额外的 BOT ID 保存到 //etc/.xid。
初始请求格式为:
(4) PRISM v7
Waterdrop v7如果进程有 ,则引入了内核模块root 权限,使用 insmod 安装Payload 的用途。
其余代码与 PRISM v3 是一样的,只改变了硬编码版本号。初始请求格式如下:
(5) PRISM v9
延续之前版本的风格,Waterdrop v9 的变化很小。在这个版本中发现的唯一变化是使用 BOT ID 作为 ICMP 密码生成反向 Shell, 而不是使用硬编码 ICMP 密码。
初始请求格式为:
(6) PRISM v12
Waterdrop v12 几乎序版几乎相同,但增强了后门的稳定性。
初始请求格式为:
恶意软件家族 PrismaticSuccessor
域名 z0gg.me 由另一个 12 域名共享IP 地址。
已知重叠域名已知 PRISM 的 C&C 域名,但 z0gg.me 也与其他几个恶意样本有关。特别是观察到 https://github.com/lirongchun/i与仓库有关。
以下文件可在本存储库中观察到:
(1)三个包含 IP 地址(README.md)和端口号(README1.md 和 MP.md)的文档
(2)针对脏牛(CVE-2016-5195)漏洞的 Bash 脚本叫:111
(3)几个 ELF 二进制文件包括:
- git:定制恶意软件植入工具
- ass:为 x64 架构编译的名称hide my ass开源安全工具
- ass32:为 x86 架构编译的名称hide my ass开源安全工具
攻击者使用公共 GIT 存储库托管恶意软件和基础设施信息观察其演变的历史数据。
例如,我们可以使用以下命令收集参与者作为 C&C所有 服务器IP 地址:
按大小分组,可以发现 15K 样本为 PRISM 后门,大约 1.1 MB 样本是另一个恶意软件。
攻击者在 2019 年 7 月 16 日提交了自定义 implant,恶意软件使用修改版 UPX 加壳。
恶意软件明显变大是因为二进制文件静态编译成 libcurl,AT&T 把这个恶意软件家命名为 PrismaticSuccessor。
分析可知,配置由两个 URL 组成:
- HostUrl 用于获取 C&C 主机
- PortUrl 用于获取端口号
执行后会尝试加锁 //var/lock/sshd.lock作为相互斥量。
接下来,恶意软件解密包含过程名称的字符串,用于覆盖 argv。
请注意,aMcwfkvf 变量包含 [mcwfkvf]值,值在 src解密为 [kauditd]。解密使用 ROT13,密钥为 -2。这个 ROT13 只处理大小字母,不处理符号和数字。
接下来,恶意软件通过子过程进行多任务处理。
一个子过程将打开一个硬代码C&C 服务器的反向 Shell 会话最多有三个配置C&C 地址(z0gg.me、x63.in 和 x47.in)并使用 ROT13 加密。
服务器还需要使用密码进行回复,以便成功建立反向 Shell。恶意软件会计算回复缓冲区 MD5 哈希值和硬编码值 ef4a85e8fcba5b1dc95adaa256c5b482进行比较。
无论主 C&C 服务器联系是否成功,将进行通信。
通过 的子过程GitHub 获取 C&C 主机和端口打开反向 Shell。
生成 Shell 函数与 PRISM 源代码非常相似,但不完全相同。
跳转到 Shellcode 8 字节密钥, 异或解密,硬编码:
施工命令如下:
在 StackOverflow 还可以发现一些用户抱怨被攻击,这与之一致。
其他变种
我们也观察到其他攻击者使用 PRISM 攻击后门。然而,在大多数情况下,攻击者会使用原始 PRISM 后门没有任何重大修改。在某种程度上,这也阻碍了我们正确跟踪攻击者的攻击。
结论
PRISM 是一个开源简单的后门。其流量清晰可辨,恶意文件易于检测。C&C 服务器已经在线三年半了。这表明,尽管更受关注的大型攻击通常在几个小时内发现,但较小的攻击可能会被遗漏。