在360前期发布的“量子”(Quantum)攻击行动报告《Quantum(量子)攻击系统–美国国家安全局“APT-C-40”黑客组织高端网络攻击武器技术分析报告(一)》中,我们利用360安全大脑,对具有美国官方背景的黑客组织“APT-C-40”的量子注入攻击实例进行技术分析,揭示了美国情治部门利用先进网络武器,对中国和世界各国的政府机构、重要组织和信息基础设施实施复杂、精密、持续性APT攻击行动的事实。
根据可考的美国国家安全局(NSA)机密文档显示,NSA的实战化网络攻击武器体系极其复杂,可以根据不同的攻击任务配置多种攻击武器和攻击方式组织,攻击的不同阶段会针对特定目标植入不同类型的木马程序。
该款木马可以通过网络远程和物理接触两种方式进行安装,具有7X24小时在线运行能力,使NSA的系统操控者和数据窃密者可以上传下载文件、远程运行程序、获取系统信息、伪造ID,并在特定情况下紧急自毁。
根据斯诺登曝光文档描述,“验证器”(Validator)是与美国国家安全局(NSA)接入技术行动处(TAO)“酸狐狸”(FOXACID)攻击武器平台相配套的专用木马程序,它基于基本C/S架构,为NSA向敏感目标发动更为复杂的网络攻击提供轻便易用的潜伏工具。一份网上流传的“绝密”文件对“验证器”进行了如下描述。
VALIDATOR是FOXACID项目下的后门访问系统的一部分。VALIDATOR基于客户端/服务器提供对国家利益目标(包括但不限于恐怖分子)的个人电脑进行后门访问。
VALIDATOR是一种小型木马植入,用作针对各种Windows系统的后门,它可以远程部署,也可以手动部署在任何Windows系统上,从Windows 98到Windows Server 2003都适配。
监听站 LP是24/7在线的,所有任务都需要“排队”,即任务需要按顺序等待目标的调用,然后被依次发送(每次一个)到目标侧进行执行。命令包括投置文件、获取文件、投置并执行文件、获取系统信息、更改VALIDATOR ID和自删除。
将VALIDATOR部署到目标系统,并与它们的监听站(LP)进行通信(每个VALIDATOR都会绑定一个唯一ID和特定的IP地址,以呼叫它在基地的LP); SEPI的分析师会验证目标的身份和位置(USSIS -18检查),然后向Olympus的操作人员发送部署列表来加载更复杂的木马植入(目前是Olympus,后来是UNITEDRAKE)。
然后,Olympus操作人员根据SEPI提供的Validator ID将相应命令加入任务队列。 此过程循环往复。一旦更复杂的植入成功与目标设备连接,VALIDATOR的操作就会停止。 有时候,操作人员会根据SEPI或SWO的指示,让VAIDATOR进行自删除。
在另外两份关于美国国家安全局(NSA)“酸狐狸”(FOXACID)攻击武器平台的“绝密级”描述文档中,也提到了“验证器”(Validator)木马程序,三分文件在对“验证器”的功能描述上基本一致。
•它主要是作为下载Olympus安装程序的代理,也可以作为植入与过滤程序使用。
•这些功能包括从目标侧上传/下载文件,获取限制性系统信息,找到进出目标设备的路径(拨号或直接连接)。
•Validator也可以通过命令或内置的计时器来进行自删除。
图片来源:《FOXACID-OVERALL-BRIEFING-Third-Revision-Redacted.pdf》
(文件名称直译:FOXACID整体介绍 – 第三版修订)
当前载荷
Validator 8.2.1.1 (默认)
图片来源:《FOXACID-OVERALL-BRIEFING-Third-Revision-Redacted.pdf》
(文件名称直译:FOXACID服务器标准作业流程 – 修订版)
如上述文档所述,“验证器”(Validator)是一款基于 C/S架构的基础木马程序。在360近期提取的“验证器”木马样本中发现了相应的配置区,位于该木马程序中名为“BINRES”的资源下,可通过异或0x79进行解密(如下图所示)。
360研究团队提取了“验证器”木马程序的负载标识(ClientID)、通信测试地址、C&C地址和版本号等信息。
其中,一款名为check_va.py的木马脚本中,存在着与“验证器”木马相对应的注册表信息,内容包含版本号、客户端标识(ClientID)[与“酸狐狸”攻击武器平台负载标识(Payload ID)相对应]和程序自毁状态等信息。
3.1功能简述
该木马程序的主体为DLL COM劫持器,其核心功能位于DllMain中,对特定DLL进行劫持,接受CC控制,导出控制函数转发到正常DLL中以保持受控端主机功能正常运行。
近期在中国科研机构提取的“验证器”木马程序样本会被微软explorer.exe或avp.exe加载启动。该样本的更高版本,也可被一些常见的服务进程加载启动,如:svchost.exe、wuauserv(Windows更新服务)、LanmanServer(Windows共享服务)等。
3.2“验证器”木马程序功能指令
现已发现的“验证器”木马程序指令汇总如下:
指令 | 功能 |
0x42 |
修改受影响设备标识,同时取包中第二个字节作为子命令号,具有如下功能:
l命令0:重新连接服务器 l命令2:卸载 l其他情况:重置rc6 key初始化标志 |
0x44 | 写文件(0x4a 指令中文件) |
0x4a | 创建文件,若已经存在,则获取文件大小 |
0x4b | 获取文件大小 |
0x53 | 读取文件 |
0x56 | CRC16校验文件,不通过则删除;通过则复制文件,删除原文件,然后根据标志判断是否以进程形式加载 |
0x60 | 获取系统信息,并回传 |
0x70 | 获取系统信息,修改受影响设备标识 |
0x75 | 修改转换时间的间隔,并回传系统信息 |
0x76 | 修改CC并获取系统信息回传 |
0x79 | 更新配置信息 |
0x92 | 获取指定文件大小 |
0x95 |
根据数据包第二个四字节的值,执行以下功能:
l若为1,则创建执行文件的进程 l若为3,则将指定文件读入内存,在内存中加载后调用其导出函数dll_u |
0xA2 | 更新CC地址,并刷新配置信息 |
0x78 | 设置(修改)文件路径 |
0x80 | 删除指定文件 |
3.3回传信息
“验证器”(Validator)木马程序在窃取目标系统信息后,会通过上述结构组包加密回传:
标号 | 说明 | 标号 | 说明 |
000 | MAC地址 | 010 | 系统信息 ProductID |
001 | 本地IPv4地址 | 011 | 系统语言信息 |
002 | 组件版本信息 | 012 | 系统语言信息 |
003 | 组件ID | 013 | Windows目录 |
004 | 代理设置信息 | 014 | 本地系统网络连接状态 |
005 | 注册信息RegisteredOwner | 015 | 安装的软件信息 |
006 | 注册信息 RegisteredOrganization | 016 | 未知 |
007 | 系统最近安装的服务包名 | 018 | 系统位数 |
008 | 系统信息 CurrentBuildNumber | 019 | 当前时间日期 |
009 | 系统信息 CurrentVersion |
每个代号之间内容用\r\n进行分隔,例如: “000:xxxxx\r\n001:xxxxx\r\n”。
3.4详细功能分析
在“验证器”(Validator)木马加载到DllMain后,会首先创建线程,执行初始化动作,主要包含以下行为:
3.4.1线程函数1
使用异或运算动态加解密字符串,在使用时解密,使用完后加密回去,其使用的异或值有两种:0x3C和0x7F。
获取受控目标系统当前版本,根据系统版本不同,后续劫持DLL的名称也会有所不同,主要针对win9x、win2000、winxp、win7等微软系列操作系统。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在生成ClinetID编号时,采用异或位移的方式,如下图所示:
该后门程序第一次启动时,注册表中并不会存在上述表项,“验证器”会直接使用资源中的缺省数据,然后写入上述注册表项中。
在上述操作过程中,“验证器”木马会枚举注册表项HKLM\System\CurrentControlSet\Services和HKLM\SYSTEM\CurrentControlSet\Services\VxD,将注册表项名异或计算后进行比较,若找到符合表项,则会读取注册表项HKLM\SOFTWARE\Classes\CLSID\{77032DAA-B7F2-101B-A1F0-01C29183BCA1}\TypeLib的内容,作为客户端(Clinet)ID值写入HKLM\SOFTWARE\Classes\CLSID\{6AF33D21-9BC5-4f65-8654-B8059B822D91}\TypeLib注册表项,并设置异常码。分析认为此部分内容为“验证器”木马程序的容错机制。
随后,校验当前模块是否由explorer.exe或avp.exe加载,若是,则忽略前述异常错误继续执行。
随后“验证器”木马程序创建匿名互斥体,若创建成功,则再次创建线程执行后续操作。
3.4.2线程函数2
在该线程中,首先会更新配置文件时间用以刷新配置,随后创建命名互斥体HtmlInternetParser,其中会检查一个存在于本地磁盘的文件,该文件由后续远端命令指定。
互斥体HtmlInternetParser对象创建成功后,开始轮询连接配置信息中的测试域名是否能够连通,使用的测试域名为:www.microsoft【.】com和www.yahoo【.】com。
若轮询连接测试域名成功,则后续获取本机MAC地址和IP,以及ClientID、本组件版本号进行组包操作。
对该数据包进行rc6与base64加密,rc6的key为:8B 4C 25 04 56 85 C9 75 06 33 C0 5E C2 08 31 F6,并通过标志位来选择使用配置信息中的CC。
最后,连接CC发送并接收数据包,设置本次连接CC的时间,对数据包进行base64和rc6解密后,进行解析并执行功能,使用的CC地址为:www.frontadtime【.】com和195.128.235【.】229。
“验证器”木马程序的网络通信,采用HTTP/HTTPS协议,默认端口号为80/443,并采用了POST请求。
在发送数据包时,会附带请求头信息:EIag: 0d1975bf********9c:eac\r\n,其中”*”代表配置中的Client ID。
重要预警
在成功提取国内某科研机构重要信息系统中的“验证器”(Validator)木马程序样本的基础上,360第一时间在国内开展扫描检测。
令人遗憾的是,这款美国国家安全局(NSA)的标配木马的不同版本曾在中国上百个重要信息系统中运行,其植入时间远远早于“酸狐狸”攻击武器平台及其组件被公开曝光时间,说明NSA对至少上百个中国国内的重要信息系统实施网络攻击。
时至今日,多个“验证器”木马程序仍在一些信息系统中运行,向NSA总部传送情报。可以预见的是,世界各地的重要信息基础设施中,正在运行的“验证器”木马程序数量会远远超过中国。
此前报道:
Quantum(量子)攻击系统 – 美国国家安全局“APT-C-40”黑客组织高端网络攻击武器技术分析报告(一)
网络战序幕:美国国安局NSA(APT-C-40)对全球发起长达十余年无差别攻击