图3: Regin的体系结构
阶段0(投放器)
在编写该报告时,赛门铁克安全响应中心并未获得Regin投放器。赛门铁克认为,一旦投放器在目标计算机上运行,它会安装并执行阶段1。这可能是因为阶段0负责建立各种扩展属性和/或注册表项和值,这些内容持有阶段2、3、4等的加密版本。投放器可能是短暂的,而不是作为一个可执行文件运行,可能是感染向量攻击代码的一部分。
阶段1
阶段1是威胁的初始加载点。有两种已知的阶段1的文件名:
•usbclass.sys(版本1.0)
•adpu160.sys(版本2.0)
这些是在阶段2中加载并执行的内核驱动程序。这些内核驱动程序可以被注册为系统服务;或可能有相关的注册表项,以便在计算机启动时加载驱动程序。
阶段1简单地从一组NTFS扩展属性中读取并执行阶段2。如果没有发现任何扩展属性,则阶段2 就从一组注册表项执行。
阶段2
第2阶段是一个内核驱动程序,简单地提取、安装和运行阶段3。阶段2不被存储在传统的文件系统中,但是在扩展属性或注册表密钥blob中进行加密。
阶段2被加密于:
扩展属性
• %Windir%
• %Windir%\fonts
• %Windir%\cursors(可能只在版本2.0中)
注册表子项
• HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4F20E605-9452-4787-B793-D0204917CA58}
• HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\RestoreList\VideoBase(possibly only in version 2.0)
这个阶段也可以隐藏阶段1的运行,一旦发生这种情况,就没有剩余的清晰可见的代码了。与之前的阶段类似,阶段2从NTFS扩展属性或注册表项blob中发现并加载阶段3的加密版本。
阶段2还可以监控威胁的状态。该阶段投放文件msrdc64.dat,大小似乎总是512字节。前两个字节被使用,而剩余的字节被设置为零。第二字节显示允许运行的最大实例的数量,它被设置为2。这意味着任何时候都不能运行一个以上的实例。第一个字节表示多少实例被运行或试图运行。因此,前2个字节的潜在组合为:
•0002(威胁不运行)
•01 02(威胁正在运行)
•02 02(威胁正在运行时,第二个实例已经启动)。
阶段3
阶段3是一个内核模式DLL,不存储于传统的文件系统中。相反,此文件在扩展属性或注册表密钥blob中进行加密。
阶段3可在以下位置找到:
扩展属性:
%Windir%\system32
%Windir%\system32\drivers
注册表子项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4F20E605-9452-4787-B793-D0204917CA5A}
该文件是阶段2中的驱动程序的6到7倍大。除了在阶段4中加载和执行,阶段3提供了更高级阶段的框架。
阶段3和以上阶段基于代码模块的模块化框架。这些模块通过一个私有的定制接口提供功能。在阶段3和以上阶段中的每个文件能够向Regin的其他部分“导出”功能。
在阶段3的情况下,以下图元被提供:
编制器,解析在阶段3和以上阶段中的可执行文件的附加数据中发现的自定义记录。这些记录包含要执行的Regin功能的列表。A记录以数据0xD912FEAB开始(低字节序排列)
压缩和解压例程
加密和解密例程
检索高级(阶段4)组件的存储位置的例程
处理阶段4中使用的加密虚拟文件系统的例程
网络图元
导出方法
通过自定义的导出方法,阶段3的DLL导出了广泛的功能。用于导出功能的接口不使用传统的Windows DLL导出机制(按照名称或序号)。
Regin导出方法是通过一个元组来引用的。阶段3导出几百种方法,分为12个主要类别。不同版本使用的数量不同。我们用两个不同的编
号方法获取其功能,如表2所示。
由于Regin的模块化特性,阶段4的内核模块和阶段5的用户模块(有效载荷)可以使用相同的主要和次要编号方案提供功能和导出例程。
表2:Regin的方法分为12个类别(示例) |
主要的 | |
0001h | |
000Dh | |
000Fh | |
003Dh | |
0007h | |
000Bh | |
0033h | |
0011h | |
0013h | |
C373h | |
0019h | |
0009h | |
阶段4
阶段4中的文件是由阶段3加载的,包括一个用户模式编制器和多内核有效载荷模块。它们作为文件被存储在两个EVFS容器中:
%System%\config\SystemAudit.Evt:包含阶段4内核驱动程序,构成Regin有效载荷的内核模式的一部分。
%System%\config\SecurityAudit.Evt:包含阶段3的用户模式版本,文件被注入services.exe。
当操控Regin 的攻击者在攻击完成后清理计算机时,他们往往无法从系统中删除阶段4和5的痕迹。
阶段4也使用在阶段3中描述的相同导出方法。
阶段5
阶段5包括主要的Regin有效载荷功能。阶段5的文件被阶段4注入services.exe。
阶段5的文件是包含其他文件的EVFS容器:
%System%\config\SystemLog.evt:包含阶段5用户模式下DLL。它们构成了Regin的有效载荷。
%System%\config\SecurityLog.evt:包含阶段5的数据文件,阶段4和5组件用其存储各种数据项 。
%System%\config\ApplicationLog.evt:另一个阶段5的日志容器,它是由阶段5的数据文件引用的。
%Windir%\ime\imesc5\dicts\pintlgbp.imd(版本 2.0)
%Windir%\ime\imesc5\dicts\pintlgbs.imd(版本2.0)
Regin的有效载荷涉及包含于SystemLog.evt EVFS容器中的DLL文件。有效载荷的功能因目标计算机而异。定制有效载荷文件将有可能被传输给每一个特定的环境。截至目前,我们发现的示例有效载荷功能包括:
嗅探低级别的网络流量
通过各种渠道(TCP,UDP,ICMP,HTTP)提取数据
收集计算机信息
窃取密码
收集进程和内存信息
爬行通过文件系统
低级取证能力(例如,恢复被删除的文件)
UI操作(远程鼠标指向和点击活动、捕捉屏幕截图等)
枚举IIS Web服务器和窃取日志
嗅探GSM BSC管理网络流量
图4:EVFS容器的物理布局
加密的虚拟文件系统容器
Regin在磁盘上将数据文件和有效载荷存储于加密的虚拟文件系统中。这些文件由主要例程3Dh访问。EVFS容器内存储的文件用RC5的一个变种进行加密,使用64位块和20 round(round是指把数值字段舍入为指定的小数位)。加密模式是逆向密码反馈(CFB)。
EVFS容器的已知扩展名为*.evt和*.imd容器的结构类似于FAT文件系统。一个主要的区别是,文件没有名称;相反地,它们是用二进制标签来标识的。标签本身是一个主要和次要数字的关联。主要数字通常表明处理文件的主要功能类别。容器以表3(低字节序排列)中的标头开始。
标头后面是文件入口表(表4)。每个文件入口是13h + taglen字节长。
其他扇区(表5)。sectsize字节的扇区以一个DWORD开始,指向下一个扇区(如果该文件不适合单一扇区),随后是有效载荷数据的sectsize-4字节。
如上所述,这些文件是加密的。其他加密和压缩层也可能存在,虽然那些会通过更高级别的组件进行处理。
表3:容器的标头 |
偏移 | | |
00h | | |
02h | | |
04h | | |
06h | | |
07h | | |
0Bh | | |
0Fh | | |
11h | | |
13h | | |
C&C操作
Regin的C&C操作非常广泛。这些反向通道操作是双向的,这意味着: 或者攻击者可以在边界网络中向受感染计算机发起通信;或者受感染的计算机可以与攻击者通信。此外,受感染的计算机可以作为其他感染的代理,C&C也可以以对等的方式发生。所有的通信都强烈加密并以两阶段方式发生,其中攻击者可使用一个信道接触被感染的计算机,指示它在另一个信道中通信。C&C可以使用4个传输协议:
ICMP:编码和嵌入有效载荷信息,以代替合法的ICMP/ping数据。字符串'shit'分散在数据包中以进行数据验证。此外,CRC检查使用种子‘1337’。
UDP:原始UDP有效载荷
TCP:原始TCP有效载荷
HTTP:有效载荷信息可以在cookie数据中编码和嵌入,名称为SESSID、SMSWAP、TW、WINKER、TIMESET、LASTVISIT、AST.NET_SessionId、PHPSESSID,或phpAds_d。这些信息可以与其他的cookie组合进行验证,名称为USERIDTK、UID、GRID、UID= PREF= ID、TM、__utma、LM、TMARK、VERSION或CURRENT。
C&C操作是由各种模块进行的,包括主要类别C373h、19h、9,以及阶段5的有效载荷,如C375h和1Bh。
表4:容器的文件入口表 |
偏移 | | |
02h | | |
04h | | |
D8h | | |
DCh | | |
记录
Regin记录数据到ApplicationLog.dat文件。此文件不是加密的容器,但它被加密和压缩。
有效载荷
Regin可以利用各种有效载荷模块传播,或感染后获得有效载荷模块。Regin及其定制有效载荷的可扩展性表明:许多有效载荷有可能存在,以增强其能力。此外,我们已经发现了尚未恢复的有效载荷模块的数据文件。下表描述了阶段4的内核有效载荷模块和第5阶段用户模式有效载荷模块,Regin的几个变种使用过这些模块。
表6:Regin阶段4内核有效载荷模块和阶段5用户模式有效载荷模块 |
文件类型 | | |
SYS | | |
SYS | | |
SYS | | |
SYS | | |
SYS | | 似于WinPcap(协议过滤器3.5版)的网络数据包过滤驱动程序,用于设置TCP和UDP穿透过滤器并绕过防火墙。执行BPF(Berkeley包过滤器)字节码,存储于阶段5的数据文件中。 |
SYS | | |
DLL | | |
DLL | | 通过注册表或配置文件(例如,prefs.js,refs.js等)检索Web浏览器(IE浏览器,网景,火狐)的代理信息,枚举会话和用户帐户。 |
DLL | | 密码窃取程序 •Windows Explorer凭据 •Windows Explorer的PStore记录 •Internet Explorer的LegacySettings •Winlogon通知程序包中的数据“cryptpp” |
DLL | | |
DLL | | |
DLL | | |
DLL | | |
DLL | | |
DLL | | |
DLL | | |
DLL | | |
DLL | | |
DLL | | 收集系统信息 •CPU内存 •驱动器和共享 •设备 •视窗信息(包括类型、版本、许可信息、所有者信息) •安装的软件 •正在运行的进程(通过HKEY_PERFORMANCE_DATA id 230) •服务 •计划任务和作业 •运行桌面会话 •用户帐户信息 •系统的审计规则/政策 •系统时间和Windows安装时间 |
IIS Web服务器日志窃取模块27E9h是有效载荷模块的一个例子,它在初始感染后安装并针对特定目标部署。
64位版本
我们只发现了少量的64位Regin文件。这些样本可能代表版本2.0,或它们之间的不同可能只是具体到因为64位版本的Regin的关系。我们也从被感染的计算机中发现了文件,可能与64位Regin有关(也可能无关),包括svcsstat.exe的几个变种,旨在通过管道或套接字检索二进制数据并执行数据的文件。
文件名
除了一些值得注意的不同点,这些文件似乎并没有从根本上与32位文件有所不同。
Regin 的32位和64位版本使用不同的文件名。这些不同点请参阅本报告的第一章和附录。最重要的是,在64位版本的Regin中,容器的名称被更改了:
PINTLGBP.IMD取代SystemLog.Evt
PINTLGBPS.IMD取代SecurityLog.Evt
各阶段的不同
64位版本的Regin的阶段1(wshnetc.dll)已不再是一个内核模式驱动程序,因为64位Windows下的驱动程序都必须签名。相反,阶段1是一个用户模式DLL,当计算机启动时作为Winsock Helper加载。阶段1不从NTFS扩展属性中加载阶段2,而是查找磁盘的最后一个分区(就物理位置而言),并搜索原始扇区中的有效载荷。
我们尚未发现64位Regin的阶段3。我们认为这一阶段可能不存在,因为32位版本是驱动程序。与32位版本一样,阶段4是一个编织器,并使用相同的主要和次要值来导出功能。
阶段5使用下列文件名:
%Windir%\IME\IMESC5\DICTS\PINTLGBP.IMD包含阶段5用户有效载荷,替代32位版本中的SystemLog.Evt。
%Windir%\IME\IMESC5\DICTS\PINTLGBS.IMD包含阶段5数据文件,替代32位版本中的SecurityLog.Evt。
没有发现SystemAudit.Evt和SecurityAudit.Evt的等效文件。
尚未发现阶段5的有效载荷模块。
结论
Regin是一个非常复杂的威胁,用于大规模数据或情报收集活动。这种威胁的开发和运作将需要大量的时间和资源。这种性质的威胁是非常罕见的,能够媲美Stuxnet/Duqu恶意软件家族。Regin的发现表明:攻击者持续不断地投入大量资源来开发用于情报收集使用的工具。Regin的许多组件都未被发现,可能还存在其他的能和版本。
保护方案
Regin组件被命名为Backdoor.Regin。
附录
数据文件
表7:阶段4的框架DLL使用的数据文件 |
主要的 | | |
0001 | | |
000D | | |
000F | | |
| | |
003D | | |
0007 | | |
000B | | 包含路径到日志文件中。 通常情况下:%System\config\ApplicationLog.Evt |
| | |
0033 | | |
| | |
0011 | | |
0013 | | |
| | |
C373 | | netpcap驱动程序的BPF字节码--允许UDP直通 |
| | |
0019 | | netpcap驱动程序的BPF字节码--允许UDP直通 |
| | |
0009 | | |
| | |
| | 要执行的C&C程序: • (C375, 1) param= 08 02 • (19, 1) param= 44 57 58 00 • (C373, 1) param= 08 02 • (1B, 1) param= 20 00 |
| | 要执行的程序 • (4E69, 2) • (19, 2) • (1B, 2) • (C373, 2)( • C375, 2) • (C383, 2)(C363, 2) |
| | |
| | |
| | |
| | |
| | |
因为数据文件存储在一个容器中,所以不具有名称。就像阶段5的模块一样,它们可通过它们filetag(文件标签,主要和次要标识符的联合)引用。主要标识符表明哪个主要例程类别可能处理或创建文件。并非所有的数据文件已被发现,所以目前的信息仍然是不完整的。还未发现与阶段4的内核模块相关的数据文件。表8列出了阶段5模块使用的数据文件,而使用这些数据的相关模块尚未发现。
表8:阶段5的模块(有效载荷)使用的数据文件 |
主要的 | | |
C363 | | |
4E3B | |
|
290B | |
|
C375 | | |
| | |
C383 | | |
| | |
| | 64字节(512位)Diffie Hellman,P(素数) |
| | 字节(2)的Diffie Hellman的,G(发生器) |
C361 | | |
| | |
| | |
001B | |
|
C399 | |
|
C39F | | |
| | 加密unicode的路径: %Temp%\~B3Y7F.tmp |
C3A1 | | |
28A5 | | |
C3C1 | | |
C3B5 | | |
C36B | | |
C351 | | |
2B5D | | |
C3CD | | |
C38F | | |
C3C5 | | |
27E9 | | |
表9:孤立的数据文件 |
主要的 | | |
4E25 | | |
| | |
28A4 | | |
| | 小文件,8字节(0100 000000 0000 00) |
DEAB | | 小文件,8字节(00 0001 010400 0000) |
威胁信标
以下详细信息可帮助您确定是否已经被Regin感染。
文件MD5
2c8b9d2885543d7ade3cae98225e263b
4b6b86c7fec1c574706cecedf44abded
187044596bc1328efa0ed636d8aa4a5c
06665b96e293b23acc80451abb413e50
d240f06e98c8d3e647cbf4d442d79475
6662c390b2bbbd291ec7987388fc75d7
ffb0b9b5b610191051a7bdf0806e1e47
b29ca4f22ae7b7b25f79c1d4a421139d
1c024e599ac055312a4ab75b3950040a
ba7bb65634ce1e30c1e5415be3d1db1d
b505d65721bb2453d5039a389113b566
b269894f434657db2b15949641a67532
bfbe8c3ee78750c3a520480700e440f8
文件名/路径
usbclass.sys
adpu160.sys
msrdc64.dat
msdcsvc.dat
%System%\config\SystemAudit.Evt
%System%\config\SecurityAudit.Evt
%System%\config\SystemLog.evt
%System%\config\ApplicationLog.evt
%Windir%\ime\imesc5\dicts\pintlgbs.imd
%Windir%\ime\imesc5\dicts\pintlgbp.imd
%Windir%\system32\winhttpc.dll
%Windir%\system32\wshnetc.dll
%Windir%\SysWow64\wshnetc.dll
%Windir%\system32\svcstat.exe
%Windir%\system32\svcsstat.exe
扩展属性
%Windir%
%Windir%\cursors
%Windir%\fonts
%Windir%\System32
%Windir%\System32\drivers
注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4F20E605-9452-4787-B793-D0204917CA58}
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\RestoreList\VideoBase
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4F20E605-9452-4787-B793-D0204917CA5A}