“验证器”(Validator)— 美国国家安全局NSA(APT—C—40)的木马尖兵

背景

在360前期发布的“量子”(Quantum)攻击行动报告《Quantum(量子)攻击系统–美国国家安全局“APT-C-40”黑客组织高端网络攻击武器技术分析报告(一)》中,我们利用360安全大脑,对具有美国官方背景的黑客组织“APT-C-40”的量子注入攻击实例进行技术分析,揭示了美国情治部门利用先进网络武器,对中国和世界各国的政府机构、重要组织和信息基础设施实施复杂、精密、持续性APT攻击行动的事实。

根据可考的美国国家安全局(NSA)机密文档显示,NSA的实战化网络攻击武器体系极其复杂,可以根据不同的攻击任务配置多种攻击武器和攻击方式组织,攻击的不同阶段会针对特定目标植入不同类型的木马程序。

其中,一款名为“验证器”(Validator)的木马程序是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)木马程序,三分文件在对“验证器”的功能描述上基本一致。

图片内容译文:绝密//通信情报//非海外Validator(验证器)•Validator是一个可以通过多种方式安装在目标电脑上的程序。

•它主要是作为下载Olympus安装程序的代理,也可以作为植入与过滤程序使用。

•这些功能包括从目标侧上传/下载文件,获取限制性系统信息,找到进出目标设备的路径(拨号或直接连接)。

•Validator也可以通过命令或内置的计时器来进行自删除。

图片来源:《FOXACID-OVERALL-BRIEFING-Third-Revision-Redacted.pdf》

(文件名称直译:FOXACID整体介绍 – 第三版修订)

图片内容译文:3.6(绝密//信号情报)载荷载荷是在漏洞利用成功后投递的后门程序,使用不同的载荷对漏洞利用没有帮助。请求使用非默认的其他载荷时,必须谨慎。每个针对默认载荷的修改都会更改配置文件。配置文件中的每一处改动都会导致FOXACID服务器重新进行检查操作。每个检查都会拖延漏洞利用过程。变慢的漏洞利用过程对于你和其他分析师都是不利的。

当前载荷

Validator 8.2.1.1 (默认)

图片来源:《FOXACID-OVERALL-BRIEFING-Third-Revision-Redacted.pdf》

(文件名称直译:FOXACID服务器标准作业流程 – 修订版)

如上述文档所述,“验证器”(Validator)是一款基于 C/S架构的基础木马程序。在360近期提取的“验证器”木马样本中发现了相应的配置区,位于该木马程序中名为“BINRES”的资源下,可通过异或0x79进行解密(如下图所示)。

 

360研究团队提取了“验证器”木马程序的负载标识(ClientID)、通信测试地址、C&C地址和版本号等信息。

在被感染的目标系统中,会存在如下的注册表路径:\Registry\Machine\SOFTWARE\Classes\CLSID\{77032DAA-B7F2-101B-A1F0-01C29183BCA1}其中保存了“验证器”(Validator)木马程序的相关信息。通过对注册表项最后修改时间属性的分析,可以大致推断出相关用户被木马程序感染的时间。在“影子经纪人”(The Shadow Brokers)披露的美国国家安全局(NSA)“方程式”黑客组织网络攻击工具中,也存在着与“验证器”功能相似的木马脚本。

其中,一款名为check_va.py的木马脚本中,存在着与“验证器”木马相对应的注册表信息,内容包含版本号、客户端标识(ClientID)[与“酸狐狸”攻击武器平台负载标识(Payload ID)相对应]和程序自毁状态等信息。

综上所述,“验证器”(Validator)木马程序是美国国家安全局(NSA)“量子”(Quamtum)攻击平台的重要组件。在本地网络服务器或上网终端中发现“验证器”样本,表明这些设备已经遭受美国国家安全局(NSA)的网络攻击,系统中的重要信息已被NSA窃取,并且目标系统内网中的其他节点均可能被NSA渗透远控。
样本分析

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等微软系列操作系统。

注册表
劫持DLL 1
劫持DLL 2
版本
HKLM\System\CurrentControlSet\Control\SessionManager\KnownDLLs
LINKINFO
LI.DLL
LINK32.DLL
Win9x
HKLM\SYSTEM\CurrentControlSet\Services\hgfs\networkprovider
ProviderPath
hgfs32.dll
hgfspath.dll
Win 2000
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32
midimapper
midimapper.dll
midimap32.dll
Win xp
HKCR\CLSID\\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}\\InProcServer32
(默认)
actxprxy32.dll
actxprxyserv.dll
Win 7
判断本模块名是否为ee.dll,若不是则执行清理动作后退出。
若当前模块是ee.dll,则继续执行,清除系统目录下指定dll(上面表格中的劫持DLL),比较本模块资源解密出的配置信息版本与写入注册表中的配置信息版本,若本模块版本较新,则安装新的DLL以替换旧版本,该替换的DLL即为本模块自身,其替换策略如下:
劫持DLL 1
劫持DLL 2
将自身拷贝为目标
存在
不存在
劫持DLL 2
不存在
存在
劫持DLL 1
不存在
不存在
劫持DLL 1
其中,获取资源中的配置信息的操作如下,读取资源“BINRES”,并异或0x79进行解密。

如果该样本运行在Windows NT平台,会为后续的注册表操作设置安全描述符:KEY_ALL_ACCESS,若该样本运行于Windows 9.x平台,则不会执行该操作。

以上对注册表设置安全描述符,使得每个用户即便在低权限下也可读写该注册表项。
上述操作完成后,将配置信息写回注册表项HKLM\SOFTWARE\Classes\CLSID\{6AF33D21-9BC5-4f65-8654-B8059B822D91}中,如下表所示:

 

注册表项
内容
说明
TypeLib
{8C936AF9-243D-11D0-xxxx-xxxxxxxxxxxx}
Client ID,由固定前缀8C936AF9-243D-11D0拼接上配置中的Clinet ID号
Version
008.002.000.003
资源中的版本号信息
MiscStatus\(默认)
0
默认值为0,该项主要存储样本异或后的异常错误代码
TypeLib\DigitalProductId
加密后的配置信息
自定义RC6加密,key为:66 39 71 3C 0F 85 99 81 20 19 35 43 FE 9A 84 11

 

在生成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。

若网络通信失败,“验证器”木马程序会判断本次连接服务器的时间是否超过设定的时间间隔(默认为30天),若超过设定的时间间隔,则表明“验证器”木马程序在设定的时段没有正常工作。“验证器”后续将会卸载该组件,创建文件C:\Windows\wininit.ini并写入错误信息后退出。

重要预警

在成功提取国内某科研机构重要信息系统中的“验证器”(Validator)木马程序样本的基础上,360第一时间在国内开展扫描检测。

令人遗憾的是,这款美国国家安全局(NSA)的标配木马的不同版本曾在中国上百个重要信息系统中运行,其植入时间远远早于“酸狐狸”攻击武器平台及其组件被公开曝光时间,说明NSA对至少上百个中国国内的重要信息系统实施网络攻击。

时至今日,多个“验证器”木马程序仍在一些信息系统中运行,向NSA总部传送情报。可以预见的是,世界各地的重要信息基础设施中,正在运行的“验证器”木马程序数量会远远超过中国。

此前报道:

揭秘TAO:美国国家安全局APT-C-40黑客组织幕后黑手

Quantum(量子)攻击系统 – 美国国家安全局“APT-C-40”黑客组织高端网络攻击武器技术分析报告(一)

网络战序幕:美国国安局NSA(APT-C-40)对全球发起长达十余年无差别攻击

全面狙击网络战,360率先发布反境外攻击解决方案,请尽快部署!

面对境外网络攻击,终端如何有效防御?

云地协同,精准拦截!360本地安全大脑全面对抗境外量子攻击

(完)