导语:Disttrack 是一个以破坏系统的主引导记录(Master Boot Record)为目标的破坏性蠕虫,凭借极具破坏性的有效载荷,让基础设施的企业为之胆寒。
Disttrack也称为Shamoon,“W32.Disttrack”以及“W32.EraseMBR”, 是一个以破坏系统的主引导记录(Master Boot Record,MBR)为目标的破坏性蠕虫,凭借极具破坏性的有效载荷,让基础设施的企业为之胆寒。
Disttrack的有效载荷已经呈蔓延之势,主要针对沙特阿拉伯的关键基础设施,包括:沙特阿美石油公司,沙特阿拉伯民用航空总局(GACA)和沙特电力公司,使这些基础设施的关键系统无法使用。2012年,Disttrack首次被发现对沙特阿拉伯的目标企业展开攻击,Disttrack的隐身能力和持久攻击能立都非常强悍的,研究员发现Disttrack会给要进行攻击的系统内置了一个硬编码计时器,时间一到攻击便开始。
不过在将受感染的计算机变得无法使用之前,Disttrack会收集受害者的数据,窃取信息,从Windows计算机的用户、文件和设置、System32/Drivers和System32/Config文件夹中获取数据,并将数据发送至相同内网上的另一台受感染的计算机。
Disttrack的攻击非常具有针对性,而且攻击时间都是设定好的,2016年Disttrack就把攻击时间选在了在“吉庆夜”(Lailat al Qadr,穆斯林国家一年之中最神圣的夜晚)。
所以我们今天就来分析一下Disttrack的一些内部工作原理,以详细了解这个恶意软件是如何实施其攻击的。
Disttrack变种历史回顾
Disttrack新变种中的代码仍然与其原始版本具有相同的特征,Disttrack的原始版本于2012年首次被发现,其开发者使用Microsoft Visual C ++(版本9或10)进行编译代码。而目前Disttrack总共经历三次变种。Disttrack前两个样本的编译时间是2009年2月15号;然而,最新的这次变种的编译时间分别在2011年6月6号和2011年9月14号,虽然经历过三次变种,但便携式可执行(PE)部分的名称和特性在三个Disttrack的变种中却没有发生变化。
Disttrack的最新变种利用了被称为NETAPI32.dll的Windows native DLL。NETAPI32.dll为Disttrack软件提供网络管理功能,如NetScheduleJobAdd,用于设置攻击进行的日期和具体时间。在Disttrack的第二、三次变种中,已经合并了几个其他功能,包括:
•NetUseAdd,用于在本地计算机和服务器之间创建连接。 •NetUseDel,用于结束与共享资源的连接。 •NetUseEnum,用于列出本地计算机和远程服务器上的资源之间的所有当前连接。 •NetUseGetInfo,用于返回有关到共享资源的连接的信息。
另外随着版本的升级,Disttrack代码的大小也在增加。Disttrack最初发现的时候大约966 KB,之后不断增加。以下两个图是随着版本的升级,代码大小的变化示意图,可以看出有效载荷的大小在第一次升级时进行了增加,然后在最新的升级中有加了一些。
Disttrack的变种属于是模块化设计,其资源是Disttrack变种的各种签名功能,包括伪装成位图对象的编码组件。Disttrack的这次变种和前两次变种的关键区别是资源名称,目前,每个资源名称对应一个特定组件。
Disttrack攻击是如何开始的?
Disttrack的蠕虫攻击功能是由辅助组件发起的。此组件利用Microsoft RPC终结点映射程序来发现网络上的其他计算机。为此,Disttrack需要初始化网络适配器以构建套接字地连接( 尽管套接字本质是文件描述符,但不是所有用于文件操作的函数都能用于套接字操作,比如lseek,套接字不支持文件偏移量)。在偏移量14002EED处,Disttrack包含用于收集有关主机的网络适配器的信息以构建套接字连接并提交数据包的代码。
然后,在偏移量14002F40处,代码会检查RestrictAnonymous设置,然后将其更改为依赖于默认权限或null。
RestrictAnonymous注册表设置控制授予匿名用户的枚举级别(C语言编写时,用枚举定义优良中差)。
一旦Disttrack完成这些检查并建立网络连接,代码然后将对来自网络上的监听主机的rpc-epmap数据包请求响应。
一旦与另一个主机建立连接,Disttrack将尝试感染这个受攻击的主机,如图9所示,在偏移量3F4743E2和偏移量3F474424处。代码会调用GetWindowsDirectory来检索远程主机上的Windows目录的路径(在大多数情况下,都将是C:\ Windows)。
接下来Disttrack通过调用NetUseAdd函数把受攻击的主机共享的网络上,NetUseAdd函数在dropper木马程序中的偏移140003B87处。
NetUseAdd函数会在本地计算机和远程服务器之间建立连接。如果未指定UNC路径,则该功能使用远程主机对客户端进行身份验证,以备将来进行连接。
一旦连接使用被盗凭证进行身份验证,Disttrack便会连接到受感染主机的远程注册表中,并在HKLM \ System \ CurrentControlSet \ Services下设置注册表项,该注册表项将定义Windows服务并在运行完之后删除程序。
其中在具有以下服务名称的被攻击过的计算机系统上,一些恶意攻击已被识别出来:
•NtsSrv •NtertSrv •wow32 •drdisk
一旦恶意代码完成了对Windows服务的创建,Disttrack将使用StartServiceW执行它们,如下图所示,你可以在有效负载的偏移14000349处看到它们。
一旦攻击开始执行,Disttrack会将恶意组件从其资源目录中提取到受感染系统上的c:\ windows \ system32目录中,你可以在有效负载的偏移量140001B60找到它。
最后,Disttrack恶意软件会将恶意组件加载到内存中,直到感染了新的设备再循环重新开始。
攻击过程的动态分析
现在,我们将目光转向对受感染系统上运行的Disttrack恶意软件的动态分析上。在下图中, PID为3128的进程让Disttrack产生子进程。
也就是说PID 3128实施了动态的净荷类型。然后,文件擦除组件会将内核驱动程序加载到其堆栈中。
在这种情况下,我们看到PID 3128加载了Vdisk911.sys,一个过时的,但有效签名的Eldos RawDisk驱动程序,它提供对主引导表的直接物理访问。该驱动程序有趣地方在于,它包含在2012年8月到期的临时许可证。
内核驱动程序最终允许Disttrack覆盖和销毁主引导记录。 Disttrack的一个显着特点是使用图像文件覆盖磁盘的这个区域。
我们可以观察到受损主机驱动器的空间已经缩小,
这表明攻击已经完成了。
结论
破坏性恶意软件(如Disttrack)可以使大型基础设施陷入瘫痪。虽然这种恶意软件的攻击目前还非常有限,但它们的攻击威力非常大,而且后面还隐藏着政治动机。
建议有需要防御的企业可以使用端点保护方案CylancePROTECT,这种基于AI的安全解决方案已经知道该如何预测和预防未知和新出现的类似威胁了。Cylance 的系统(具体而言,就是CylancePROTECT产品)可以预测恶意软件、“零日漏洞”攻击和其他网络威胁如何入侵电脑网络,然后帮助他们将这些威胁消除在萌芽状态。
攻击指示器
SHA-256散列算法
Dropper代码
010D4517C81BCDC438CB36FDF612274498D08DB19BBA174462ECBEDE7D9CE6BB 394A7EBAD5DFC13D6C75945A61063470DC3B68F7A207613B79EF000E1990909B 47BB36CD2832A18B5AE951CF5A7D44FBA6D8F5DCA0A372392D40F51D1FE1AC34
辅助攻击代码
61C1C8FC8B268127751AC565ED4ABD6BDAB8D2D0F2FF6074291B2D54B0228842 772CEEDBC2CACF7B16AE967DE310350E42AA47E5CEF19F4423220D41501D86A5 EFD2F4C3FE4E9F2C9AC680A9C670CCA378CEF6B8776F2362ED278317BFB1FCA8
数据删除代码
113525C6BEA55FA2A2C6CF406184092D743F9D099535923A12CDD9B9192009C4 128FA5815C6FEE68463B18051C1A1CCDF28C599CE321691686B1EFA4838A2ACD C7FC1F9C2BED748B50A599EE2FA609EB7C9DDAEB9CD16633BA0D10CF66891D8A
文件名
Disttrack的第二次变种中所实施的有效负载中,所包含的下面这些文件名已被识别出来,
certutl.exe clean.exe ctrl.exe dfrag.exe dnslookup.exe dvdquery.exe event.exe findfile.exe netinit.exe ntssrvr64.exe ntssrvr32.exe
Disttrack的第三次变种中所包含的以下文件名也被识别了出来,
caiaw00e.exe sbuvideo.exe caiaw00i.exe olvume.exe usinwb2.exe briaw005.exe fpwwlwf.exe epiaw003.exe briaw002.exe olvsnap.exe dmwaudio.exe briaw006.exe miWApRpl.exe caiaw00b.exe lxiaw003.exe