NailaoLocker勒索软件的“奶酪”

payload

版主

payload Rep
0
0
0
Rep
0
payload Vouches
Vouches
0
8 MONTHS
8 8 MONTHS OF SERVICE
payload 获得
0
0
0
获得
0
payload 凭证
0
0
0
凭证
0
主题
16
点赞
0
HakB
8
在社区成长 8 月
LEVEL 50 100 XP
 
受影响的平台: Microsoft Windows 受影响的用户: Microsoft Windows影响: 受感染计算机上的大多数文件都已加密严重级别: 高
FortiGuard Labs 最近发现了NailaoLocker,这是一种针对Microsoft Windows 系统的勒索软件变种。与许多勒索软件系列一样,它使用AES-256-CBC 来加密用户文件。它的与众不同之处在于硬编码的SM2 加密密钥和内置解密功能——这种不常见的组合会立即引发有关意图的问题。
2025 年全球威胁形势报告
使用此报告可以了解最新的攻击者策略,评估您的暴露情况,并在下一次攻击攻击您的环境之前确定采取行动的优先顺序。
立即下载
“乃牢”这个名字在中文中的意思是“奶酪”,这可能不仅仅是一个命名上的怪癖。该勒索软件可能是一个难得的机会: 具有嵌入式可恢复性的有效负载。或者它可能是诱饵——一个误导受害者和安全研究人员的陷阱。在这种情况下,一个受害者的解决方案可能是另一个受害者的奶酪。
Figure 1: Hard-coded SM2 key pairs in ASN.1 DER format

图1: ASN.1 DER 格式的硬编码SM2 密钥对
在这篇博客中,我们研究了NailaoLocker 的完整技术概况,包括其执行流程、加密和解密例程以及SM2 密码学的使用。我们评估此变体是否引入真正的威胁或暴露可利用的缺陷。

加载和执行​

Figure 2: DLL side-loading used to decrypt and load NailaoLocker

图2: 用于解密加载NailaoLocker的DLL侧加载
NailaoLocker作为一组三个文件传递到目标系统:
usysdiag.exe – 用于DLL 侧面加载的合法可执行文件
sensapi.dll – 恶意DLL加载器(简称NilaoLoader)
usysdiag.exe.dat – 混淆的NailaoLocker 有效负载
当攻击者触发usysdiag.exe 时,执行开始,它使用DLL 侧面加载技术加载恶意sensapi.dll。此DLL 解密实际的勒索软件负载(usysdiag.exe.dat) 并将其直接加载到内存中。为了最大限度地减少取证痕迹,NilaoLoader 会在执行后立即从内存中释放自己的库并删除sensapi.dll。
为了防止多个实例同时运行,NailaoLocker 创建了一个名为lockv7 的互斥锁。
Figure 3: NailaoLoader frees memory and deletes the DLL

图3: NailaoLoader释放内存并删除DLL

初始化​

加载后,NailaoLocker 会根据字符串“XXXX”检查硬编码值,以确定激活: 加密或解密的模式。此变体不支持模式选择的命令行参数,表明该开关是内置的,可以保留供内部使用或测试。
在执行之前,勒索软件会执行一系列设置任务。它启动一个控制台窗口来显示实时状态更新,表明无意隐藏其活动。它还在%ProgramData%\lock.log 中创建一个日志文件,记录整个加密或解密过程的进度。
在加密模式下,勒索软件使用简单的XOR 解码例程从其自己的二进制文件中检索勒索信息。此注释稍后会被放入受影响的目录中。
Figure 4: Console launch and creation of %ProgramData%\lock.log

图4: 控制台启动并创建%ProgramData%\lock.log

多线程执行​

为了优化性能,NailaoLocker 使用通过Windows I/O 完成端口(IOCP) 协调的多线程架构。此设计可实现跨多个处理器内核的高吞吐量加密或解密。
I/O 完成端口通过调用CreateIoCompletionPort() 进行初始化。主线程执行文件系统遍历并将目标文件句柄提交到IOCP队列。同时,每个工作线程等待句柄出现在队列中。收到文件后,线程将根据需要进行加密或解密。
该模型将文件发现与处理分离,使勒索软件能够有效地跨可用CPU 资源进行扩展。
调用GetSystemInfo() 函数来确定系统上可用的逻辑处理器的数量。使用此信息,勒索软件创建至少八个工作线程来处理并发文件操作。这保证了并行性的基线水平,即使在较低核心的系统上也是如此。
Figure 5: IOCP setup with CreateIoCompletionPort() and multi-thread creation

图5: 使用CreateIoCompletionPort() 进行IOCP 设置和多线程创建
在下一节中,我们将研究两种不同的执行模式(加密和解密),并对其功能进行详细分析。

密钥对准备​

此NailaoLocker 变体的一个显着特征是包含嵌入ASN.1 DER 格式的硬编码SM2 密钥对。这些密钥在加密和解密过程中都会使用。
如图1所示,嵌入的密钥结构包含公钥和私钥。基于椭圆曲线密码学的公钥包括定义SM2 曲线上的点的x 和y 坐标。私钥(在勒索软件样本中很少见)也存在,表明潜在的测试版本或替代用例。
Figure 6: Decryption mode extracts embedded SM2 key pair

图6: 解密模式提取嵌入的SM2密钥对
提取后,使用OpenSSL 函数EVP_PKEY_CTX_new() 初始化密钥。从硬编码字符串“SM2”映射,数字标识符设置为0x494 并传递给加密函数。 ASN.1 结构中预期曲线OID(06 08 2A 81 1C CF 55 01 82 2D)的存在进一步支持了这一点。
Figure 7: SM2 mapped to ID 0x494 and matching curve OID

图7: SM2映射到ID0x494并匹配曲线OID

加密模式​

在加密模式下运行时,NailaoLocker 执行两项主要任务: 识别目标文件并使用AES-256-CBC 对其进行加密。它还会向每个受影响的目录附加勒索信息。

文件遍历​

NailaoLocker 首先枚举系统上的所有逻辑驱动器。它递归地搜索可访问目录以查找要加密的文件,同时故意跳过特定的系统路径和文件类型,以避免破坏受感染主机的稳定性。
排除的文件扩展名:
.exe
.dll
.sys
排除的目录和文件:
\开机
\Windows
\程序文件
\程序文件(x86)
\程序数据
\应用程序数据
\应用数据
启动文件
unlock_please_view_this_file.html
一旦识别出目标文件,其句柄就会被推送到IO 完成端口队列,以供工作线程处理。勒索信也被放入每个枚举的目录中。
 
顶部