被遗忘的SUAVEEYEFUL:EQUATION GROUP的FreeBSD软件植入工具
在检查2017年ShadowBrokers泄露的数据时,我注意到其中一个EQUATION GROUP工具至今没有公开的分析报告。以下是关于这个软件植入工具的功能和工作原理的分析。该工具位于名为suaveeyeful_i386-unknown-mirapoint3.4.3
的目录中,揭示了大量有趣的细节。
概述
- SUAVEEYEFUL是一个针对FreeBSD和Linux的CGI软件植入工具
- 至少从2000年代初开始,该工具被用于监控中国外交部和日本早稻田研究大学的电子邮件流量
- 泄露的文件/操作针对MiraPoint电子邮件产品
- SUAVEEYEFUL采用了当时创新的TTP(战术、技术和程序),如数据加密和无文件恶意软件
泄露的文件
目录中包含以下文件:
bdes
:基于FreeBSD bdes 1.3.2.1版本(2000年9月22日)的DES加密/解密命令行工具,但2003年在Linux上编译decode-base64
:使用MIME::Base64的简单Perl解码脚本implant
:SUAVEEYEFUL的ELF二进制植入组件,为FreeBSD 4.3版本(2001年4月发布)构建implant.mg1.waseda.ac.jp
:针对日本早稻田研究大学电子邮件网关的SUAVEEYEFUL植入组件变体opscript.se
:在日本早稻田研究大学安装SUAVEEYEFUL软件植入的执行命令se
:SUAVEEYEFUL的客户端组件,用Bash编写,硬编码了早稻田研究大学的目标se.old
:SUAVEEYEFUL客户端组件的旧版本,用Bash编写,硬编码了中国外交部电子邮件网关的目标uriescape
:使用URI::Escape的简单Perl脚本
这些工具(bdes、decode-base64和uriescape)与SUAVEEYEFUL捆绑在一起,因为它们被内部使用。这确保了软件植入不依赖任何外部依赖(除了默认的核心系统工具,如ls、cat、telnet等)。
目标
se.old
客户端可能是操作员为新目标适配的版本。其内容中的不一致性使其看起来像是旧操作的草稿/编辑版本。一条残留的注释将mail.mfa.gov.cn(202.99.26.6)标识为其配置的SUAVEEYEFUL目标。
这是中国外交部(MFA)的电子邮件网关。即使到今天,这个IP地址(202.99.26.6)仍然指向中国外交部的电子邮件服务器。很难确定EQUATION GROUP何时使用SUAVEEYEFUL软件植入入侵该电子邮件服务器。完全基于构建时间,我们可以评估至少从2000年代初开始。
泄露目录中的大多数文件是为另一个目标设计的:早稻田研究大学的电子邮件网关。根据其官方网站,该大学"致力于进行解决世界问题并为社会福祉做出贡献的前沿研究。非正统的思维和求知欲是推动早稻田研究的动力。"
se
客户端配置了两个被入侵的早稻田电子邮件网关,两者都通过另一个被入侵主机的内部IP地址访问,仅通过其IP地址引用。因此,至少自2003年以来,早稻田基础设施中的至少3个系统被EQUATION GROUP入侵。
- mp450(10.1.2.208)
- mg1.waseda.ac.jp(10.9.4.15)
- 10.1.2.150 – 另一个被入侵的主机
顶部主机(mp450)是大学的MiraPoint 450(后来更名为RazorGate 450),一个电子邮件安全设备。另一个主机(mg1.waseda.ac.jp)是MiraPoint电子邮件网关。第三个主机仍然未知,但基于其IP范围(与mp450相似),我们可以推断它可能是位于大学DMZ网络段的系统。
SUAVEEYEFUL在早稻田MiraPoint服务器中的安装
这在opscript.se
文件中有明确描述,我们可以假设这是EQUATION GROUP操作员安装SUAVEEYEFUL软件植入的第一个操作任务。以下是该过程:
- 将植入复制到
/var/www/data/help/apps/locale/ja_JP.utf-8/utilities/nph-help.cgi
文件 - 将nph-help.cgi的文件权限更改为555
- 将nph-help.cgi的所有权更改为"root",组为"nobody"
- 使用
touch -r
确保文件nph-help.cgi以及/var/www/data/help/apps/locale/ja_JP.utf-8/utilities/
目录下的任何内容与合法的MiraPoint web服务/var/www/data/help/apps/locale/ja_JP.utf-8/utilities/publish.html
具有相同的时间戳 - 使用netcat开始在端口444上监听,使用Base64解码接收到的数据,并使用bdes与硬编码密钥(在这种情况下为0x4790cae5ec154ccc)解密
- 从mp450的SUAVEEYEFUL植入回连到监听端口4444,并提供一些基本的系统信息(谁登录,列出文件/目录等)
SUAVEEYEFUL软件植入
SUAVEEYEFUL(或SE)有两个组件:客户端和服务器。服务器组件是一个非常简单的用C为FreeBSD编写的CGI程序,在其帮助端点寻找输入。只要接收到的命令匹配定义的格式(在本文后面描述),就会使用system()
库调用执行(如前一节所示,具有root权限)。
客户端确保所有请求都正确请求、编码(使用Base64)和加密(使用DES)。客户端支持4个选项:
-h
:显示帮助消息-c
:执行命令-i
:输入目标(例如运行SE服务器组件的主机的URL)-k
:用于DES加密的密钥
从这一点可以看出,为了生成加密材料,EQUATION GROUP以以下方式使用系统的/dev/random
:
|
|
然后使用#
作为分隔符构造命令。主要执行命令的构造如下:
|
|
这导致了一个看起来像这样的格式:
[此处应有格式示例]
然后使用硬编码的DES密钥加密此结构,并通过uriescape工具传递,以确保接收的MiraPoint web服务器不会出现解析问题。
除此之外,客户端还使用date +"%N"
命令获取纳秒级的日期,并使用匹配相同值的密钥加密。这是一种反分析/反检测技巧,因为如果没有这种非直观的添加,任何人都很难让SE软件植入执行任何命令。
最后,SE帮助消息显示了操作员可以使用的三个示例命令指令。这三个帮助命令执行以下任务:
-
通过以下方式安装无文件恶意软件:
- 创建一个隐藏目录(
/tmp/.scsi
) - 使用curl从操作主机(10.1.2.150:5555/sendmail)下载一个名为sendmail的二进制文件
- 以root身份运行sendmail并回连到操作主机的不同端口(10.1.2.150:9999)
- 删除sendmail二进制文件,使其仅在内存中运行,而不是从文件系统运行
- 创建一个隐藏目录(
-
使用回连方法执行命令:
- 运行
w
,然后是ls -l
和ls -l /tmp
以获取登录用户和当前及/tmp目录的内容 - 加密和编码输出
- 将其发送到操作主机的监听端口(10.1.2.150:4444)
- 消息还指导操作员如何生成新的DES加密密钥
- 运行
-
与#2相同,但没有Base64编码和DES加密
以下是完整的帮助消息:
|
|
警告 警告
不要 -burn!!! 使用 -exit