“验证器” (Validator) 木马是美国国家安全局 NSA (APT-C-40) 所使用的先进轻量级后门木马,其在 NSA 的攻击活动中起到先锋的作用,会被首先植入到目标机器中进行环境探查和信息收集等工作。
近期,兄弟部门对该木马的 12.3.1.0 版本进行了分析,在这篇文章中将对该木马的 8.2.1.1 版本进行详细分析。
样本信息:
MD5 | 55f0afafcbdea70278b22fcb****c94c |
---|---|
SHA1 | d1f4f4e1f7d65755ac1cfc3189d38cd7****4102 |
样本概述:
该样本为 “验证器”(Validator)木马的 8.2.1.1 版本,其初次进入主机时是以 ee.dll 作为名称植入,然后以 actxprxy32.dll/actxprxyserv.dll 为名并使用 dll com 劫持实现持久化,最终寄宿在 avp.exe/svchost.exe 进程中进行恶意行为。
运行流程:
详细分析:
1, 该样本是一个 DLL 文件,原始文件名为 actxprxy32.dll。
文件信息:
2,加载 actxprxy.dll 文件 (被劫持文件) 获取其导出函数用于函数的转发维持正常调用。
3,解密”BINRES”类型的资源 1,该资源长度为 8 字节含有两个功能指令,解密失败则进行卸载操作。
查找资源:
解密方式异或 0x79。
4,进行当前模块名称判断。
4.1>如果当前模块名称是 ee.dll。
首先在 %windir%\system32\ 目录下搜索 actxprxy32.dll 和 actxprxyserv.dll 文件,搜索到则将其删除并将自身复制为被删除的文件,未搜索到则将自身复制为actxprxy32.dll,复制完成后删除自身。
然后将上述复制的文件 actxprxy32.dll/actxprxyserv.dll 根据当前操作系统版本设置 dll com 劫持进行持久化。
操作系统版本 | 劫持位置 |
---|---|
Windows XP Windows Server 2003 Windows Server 2003 R2 | 劫持 COM 对象注册表键: HKEY_CLASSES_ROOT\CLSID\{B8DA6310-E19B-11D0-933C-00A0C90DCAA9}\InProcServer32 (Default) = %windir%\System32\actxprxy32.dll (Default) = %windir%\System32\actxprxyserv.dll |
Windows Vista Windows Server 2008 Windows 7 Windows Server 2008 R2 | 劫持 COM 对象注册表键: HKEY_CLASSES_ROOT\CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}\InProcServer32 (Default) = %windir%\System32\actxprxy32.dll (Default) = %windir%\System32\actxprxyserv.dll |
最后创建以下注册表项并设置其访问权限为低。
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{77032DAA-B7F2-101B-A1F0-01C29183BCA1}\
MiscStatus 键用于记录木马运行时的错误信息,初始值为 “0”。
TypeLib 键用于记录 ClientID,初始值为{8C936AF9-243D-11D0-8ED4-00C04A34F692}。
Version 键用于记录木马版本,值为 008.002.001.001。
ClientID 的生成逻辑如下,格式为{8C936AF9-243D-11D0-****-************},初始的ClientID 由配置信息中的 machineid 产生。
设置完成。
在此期间会检查主机上是否存在一些预定的进程、服务以及 dll com 劫持,若检测到则会终止相应的进程和服务,恢复相应的 dll com 劫持,推测目的为清除旧组件。
查找目标进程:计算进程第一个模块名 hash 并与预设 hash 比较。
查找目标服务:枚举以下注册表下的项并计算其名称的 hash 与预设 hash 进行比较。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VxD
查找目标 dll com 劫持:检测以下注册表下的值是否含有特定字符串。
检查的 dll/com 劫持注册表路径 |
---|
HKEY_CLASSES_ROOT\CLSID\{C90250F3-4D7D-4991-9B69-A5C5BC1C2AE6}\InProcServer32 检测其 (Default) 值是否含有 actxprxy32.dll/actxprxyserv.dll。 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Winsock 检测其 HelperDllName 值是否含有 wstcpip.dll/hdntcpip.dll。 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders 检测其 SecurityProviders 值是否含有 crdssp.dll/sp.dll。 |
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\KnownDLLs 检测其 LINKINFO 值是否含有 LI.DLL/LINK32.DLL。 |
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{FAEDCF53-31FE-11D1-AAD2-00805FC1270E}\InProcServer32 检测其 (Default) 值是否含有 netshell32.dll/inetshell.dll。 |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32 检测其 midimapper 值是否含有 midimapper.dll/midimap32.dll。 |
发现目标进程和服务则终止之并删除相应的文件。
若已经存在 dll com 劫持但没有发现上述预定的进程和服务,则会在以下注册表设置错误码(但是若为初次运行以下注册表还未建立则会设置失败),并且会根据当前操作系统版本恢复相应的 dll com 劫持。
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{6AF33D21-9BC5-4F65-8654-B8059B822D91}\MiscStatus
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{77032DAA-B7F2-101B-A1F0-01C29183BCA1}\MiscStatus
根据当前操作系统版本恢复相应的 dll/com 劫持。
操作系统版本 | 注册表位置 |
---|---|
Microsoft Windows 98 | DLL 劫持注册表键: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\KnownDLLs LINKINFO=LINKINFO.DLL |
Windows 2000 | DLL 劫持注册表键: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{FAEDCF53-31FE-11D1-AAD2-00805FC1270E}\InProcServer32 (Default)=%windir%\System32\netshell.dll |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Winsoc HelperDllName = %windir%\System32\wshtcpip.dll | |
Windows XP | DLL 劫持注册表键: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32 midimapper = midimap.dll |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Winsoc HelperDllName = %windir%\System32\wshtcpip.dll | |
Windows Server 2003 Windows Server 2003 R2 | DLL 劫持注册表键: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Winsoc HelperDllName = %windir%\System32\wshtcpip.dll |
Windows Vista Windows Server 2008 | DLL 劫持注册表键: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders SecurityProviders = %windir%\System32\credssp.dll |
4.2>如果当前模块名称不是 ee.dll。
则进行竞争模块的删除,如当前模块名是 actxprxy32.dll 则搜索删除 actxprxyserv.dll 和 ee.dll。
5,解密”BINRES”类型的资源 2 获得配置信息,然后在使用 rc6 算法加密与 base64编码后将其设置到以下注册表中。
rc6 key:66 39 71 3C 0F 85 99 81 20 19 35 43 FE 9A 84 11
存储位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{6AF33D21-9BC5-4F65-8654-B8059B822D91}\TypeLib\DigitalProductId
查找资源。
解密方式异或 0x79。
经过分析得到的配置信息中部分数据含义。
其中 “配置更新时间”,”上次与 C2 通信时间”会在运行时更新,”最大通信间隔” 是主机与 C2 上次通信的间隔,时间为 30 天。
6,判断当前宿主进程是否是 avp.exe\svchost.exe 不是则不执行恶意功能。
7,关闭主机代理。
8,创建互斥体。
互斥体名称 “InternetParser”。
9,连接白名单地址进行网络连通性测试。
10,连接 C2 发送信息获取数据/指令。
首次发送的数据包括主机 IP、MAC和 machineid,通信数据均使用 rc6 算法加密并使用 base64 编码。
rc6 key:37 08 EF B9 29 A7 4B 6B AB 3E 5D 03 F6 B0 B5 B3
发送数据加密之前的结构。
包内容如下,其中 EIag 标签的值为 0d1975bf[machineid]9c:eac。
11,指令分析与执行。
指令 | 功能描述 |
---|---|
0x42 | 若已使用 0x70 更新 MachineID 则重设 ClientID。 同时取包中第二个字节作为子命令号,具有如下功能: l命令0:重新连接 C2 服务器 l命令2:卸载 l其他情况:重置与 C2 通信加密数据的 rc6 算法的秘钥 |
0x44 | 打开指定文件并写入,文件不存在则创建该文件 |
0x4A | 获得指定文件的大小,文件不存在则创建该文件 |
0x4B | 获得已存在文件的大小 |
0x53 | 读取已存在文件,并根据读取情况决定是否搜索并删除目标文件 |
0x56 | CRC16校验文件,不通过则删除;通过则复制文件,删除原文件,然后根据标志以及文件类型判断是否以进程形式运行还是加载运行 |
0x60 | 收集主机信息回传 |
0x70 | 收集主机信息,生成 MachineID (用于生成 ClientID) |
0x75 | 修改转换时间的间隔,收集主机信息回传 |
0x76 | 更新注册表配置信息中的 C2 IP 地址,收集主机信息回传 |
0x78 | 设置目标文件路径 |
0x79 | 更新配置信息 |
0x80 | 删除指定文件 |
当指令为收集信息回传时,收集的信息按以下标识进行分类。
标识 | 信息描述 |
---|---|
000 | MAC 信息 |
001 | IP 地址 |
002 | 木马版本信息 |
003 | 未知 |
004 | 代理服务器信息 |
005 | 注册所有人信息 (RegisteredOwner) |
006 | 注册机构信息 (RegisteredOrganization) |
007 | 系统版本信息 (CSDVersion) |
008 | 系统当前版本号 (CurrentBuildNumber) |
009 | 系统当前内核版本 (CurrentVersion) |
010 | 系统产品ID (ProductID) |
011 | 语言环境信息 |
012 | 国家信息 |
013 | %windir% 路径 |
014 | 网络连接方式(直连、拨号) |
015 | 已安装的软件 |
016 | 未知 |
017 | 不存在 |
018 | 系统位数 |
019 | 当前时间(日期) |
例:
关于我们
360沙箱云是 360 自主研发的在线高级威胁分析平台,对提交的文件、URL,经过静态检测、动态分析等多层次分析的流程,触发揭示漏洞利用、检测逃逸等行为,对检测样本进行恶意定性,弥补使用规则查杀的局限性,通过行为分析发现未知、高级威胁,形成高级威胁鉴定、0day 漏洞捕获、情报输出的解决方案;帮助安全管理员聚焦需关注的安全告警,过安全运营人员的分析后输出有价值的威胁情报,为企业形成专属的威胁情报生产能力,形成威胁管理闭环。解决当前政企用户安全管理困境及专业安全人员匮乏问题,沙箱云为用户提供持续跟踪微软已纰漏,但未公开漏洞利用代码的 1day,以及在野 0day 的能力。
360混天零实验室成立于2015年,负责高级威胁自动化检测项目和云沙箱技术研究,专注于通过自动化监测手段高效发现高级威胁攻击;依托于 360 安全大数据,多次发现和监测到在野漏洞利用、高级威胁攻击、大规模网络挂马等危害网络安全的攻击事件,多次率先捕获在野利用 0day 漏洞的网络攻击并获得厂商致谢,在野 0day 漏洞的发现能力处于国内外领先地位,为上亿用户上网安全提供安全能力保障。