Malwarebytes研究人员发现了一种名为Kraken的新攻击,该攻击利用Windows错误 告(WER)服务以逃避检测。攻击始于一个包含“Compensation manual.doc”的ZIP文件。该文档包含一个恶意宏,该宏使用CactusTorch VBA模块的修改版,通过使用VBScript将.Net编译的二进制文件加载到内存中来执行,以进行无文件攻击。该二进制文件通过将嵌入式Shellcode注入Windows错误 告服务(WerFault.exe)来推进了感染链,此策略用于尝试逃避检测。
WerFault.exe是一个Windows系统自带的程序,用于错误 告显示。在应用程序崩溃时,它仍然会执行未处理的异常处理程序,但是该处理程序会向WER服务发送消息,并且服务会启动WER错误 告进程以显示错误 告对话框。
- %Systemroot%System32Werfault.exe
恶意诱饵:“您的赔偿”
9月17日,我们发现了一种新型攻击,该攻击从一个包含恶意文档的zip文件开始,该文档很可能是通过鱼叉式 络钓鱼攻击传播的。文档名叫“薪酬手册”(Compensation manual.doc),伪装成包含有关工人补偿权利的信息,恶意文档如下图所示。
如上图所示,已经定义了一个十六进制格式的序列化对象,它包含一个正在加载到内存中的.Net有效负载(Payload)。然后,宏使用“ Kraken.Kraken”作为值定义了一个入口类。这个值有两个部分,用一个点分隔.net加载器的名称和它目标类的名称。
在下一步中,它将创建一个序列化的BinaryFormatter对象,并使用BinaryFormatter的deseralize函数反序列化该对象。最后,通过调用DynamicInvoke函数,从内存中加载并执行.Net有效负载(Payload)。
与CactusTorch VBA不同,它指定了目标进程在宏中注入Payload,该元素更改了宏并在.Net有效负载中指定目标进程。
Kraken Loader
加载的Payload是一个名叫“ Kraken.dll”的.Net DLL,该文件编译于2020年06月12日。
这个DLL是一个加载器,它将嵌入的shellcode注入到WerFault.exe中。需要说明的是,这并不是此类技术的第一个例子。以前在使用NetWire RAT和Cerber勒索软件时就观察到了这种情况。下图展示了Kraken.dll,加载器包括两个主要的类:
- Kraken
- Loader
(2) Loader类
Loader类负责通过调用Windows API将shell代码注入到目标进程中。下图展示了load函数。
主函数调用DllMain来创建一个线程,在同一进程上下文中的新线程中执行它的函数。
(2) VM检测
在此函数中,它将通过提取显示驱动程序注册表项的提供程序名称来检查其是否在VMWare或VirtualBox中运行。
- SYSTEMControlSet001ControlClass{4D36E968-E325-11CE-BFC1-08002BE10318} 000
然后检查它是否包含字符串VMware或Oracle。
(4) NtGlobalFlag
shellcode代码检查PEB结构中的NtGlobalFlag来确定它是否正在被调试。为了识别调试器,它将NtGlobalFlag值与0x70进行比较。
(5) IsDebuggerPresent
通过调用“IsDebuggerPresent”来检查调试器是否存在。下图展示了 NtGlobalFlag 和 IsDebuggerPresent 检查。
使用libpeconv库,我们能够获得已解析的API调用表。下面是导入表,我们可以预期它将执行一些进程注入。
- VirtualAlloc
- VirtualProtect
- CreateThread
- VirtualAllocEx
- VirtualProtectEx
- WriteProcessMemory
- GetEnvironmentVariableW
- CreateProcessW
- CreateRemoteThread
- GetThreadContext
- SetThreadContext
- ResumeThread
在解析了所需的API调用之后,它使用VirtualAlloc创建一个内存区域,然后调用下面的函数来解密最终shellcode的内容,并将它们写入创建的内存中。
- DecryptContent_And_WriteToAllocatedMemory
在下一个步骤中,将调用VirtualProtect来更改对已分配内存的保护以使其可执行。最后,CreateThread被调用来在一个新线程中执行最后的shellcode。
第二步,构建函数调用列表所需的HTTP请求,包括InternetOpenA、InternetConnectA、InternetOpenRequestA和InternetSetOptionsExA。其中,HttpOpenRequestA如下图所示。
在下一步中,它将检查HTTP请求是否成功。如果HTTP请求不成功,它将调用ExitProcess停止其进程。
最后,它跳转到已分配内存的开头以执行它。这很有可能是另一个受感染的“asia-kotoba.net” 站上托管的shellcode,并在其中植入了伪造的图标。由于在 告时目标URL已关闭,因此我们无法检索此Shellcode进行进一步分析。
究竟是哪个APT组织的攻击呢h1>
我们没有足够的证据来确定这次攻击的原因。但是,我们发现其与APT32的松散联系,并且仍在调查中。
- APT32是已知使用CactusTorch HTA来删除Denis Rat变中的攻击组织之一。然而,由于我们无法获得最终的有效负载(Payload),因此我们不能肯定地将这种攻击归因于APT32。
- 用于托管恶意档案和文档的域在越南胡志明市注册。APT32使用了战略性 络妥协方案来锁定受害者,感觉像是越南的。
Malwarebytes阻止访问托管有效负载的受感染站点:
(By:Eastmount 2020-10-08 星期四 晚上11点写于武汉 http://blog.csdn.net/eastmount/ )
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!