Lazarus组织供应链攻击相关样本分析

2023年 12月 11日 63.1k 0

团伙背景

Lazarus是疑似具有东北亚背景的APT组织,奇安信内部跟踪编号APT-Q-1。该组织因2014年攻击索尼影业开始受到广泛关注,其攻击活动最早可追溯到2007年。Lazarus早期主要针对政府机构,以窃取敏感情报为目的,但自2014年后,开始以全球金融机构、虚拟货币交易场等为目标,进行敛财为目的的攻击活动。此外,该组织还针对安全研究人员展开攻击。近年来,Lazarus频繁发起软件供应链攻击,今年上半年披露的3CX供应链攻击事件被认为出自该组织之手。

事件概述

奇安信威胁情报中心近期发现一批较为复杂的下载器样本,这类样本经过多层嵌套的PE文件加载,最终从C2服务器下载后续载荷并执行。其中一个C2服务器IP地址在不久前被披露用于一起软件供应链攻击事件,攻击者通过伪装为与加密有关的npm包投递恶意软件。结合上述报告内容和下载器样本自身的信息,可以确认这些下载器恶意软件与此次npm包供应链攻击事件有关。

根据下载器和其他相关样本的代码特征,我们关联到Lazarus组织的历史攻击样本,加上Lazarus常用供应链攻击手段,所以我们认为此次npm包投毒事件背后的攻击者很可能为Lazarus。

详细分析

下载器样本基本信息如下:

样本均经过多层加载过程,最终运行下载器主模块,下面以样本a6e7c231a699d4efe85080ce5fb36dfb为例进行分析。

加载过程

Stage 1

preinstall.db的导出函数CalculateSumW从文件自身数据解密出后续,并内存加载。

密钥初始化过程如下。

解密过程如下,加密数据位于.data段的0x18000BED0位置,为原址解密。

解密得到的数据为PE文件数据,内存加载执行。

Stage 2

内存加载的PE为DLL文件,主要功能在sub_180002440函数中实现。首先采用相同的解密方法,解密文件中内嵌的zip压缩包数据。

zip压缩包中有一个PE文件,被释放到路径"%AppData%\..\Roaming\Microsoft\IconCache.db"。

另一段内嵌数据释放到路径"%AppData%\..\Roaming\Microsoft\Network\NTUSER.DAT"。

随后建立持久化,依次尝试采用计划任务、注册表、启动目录三种方式。

(1) 计划任务

通过COM接口创建名为"MicrosoftEdgeUpdate"的计划任务,执行命令如下。

RUNDLL32.exe %APPDATA%..RoamingMicrosoftIconCache.db,GetProcFunc  %APPDATA%..RoamingMicrosoftNetworkNTUSER.DAT  8888

(2) 注册表

如果计划任务创建不成功,则在"HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"下添加名为"GoogleUpdate"的键值,设置的执行命令如下。


cmd /c start /b rundll32  %APPDATA%..RoamingMicrosoftIconCache.db,GetProcFunc  %APPDATA%..RoamingMicrosoftNetworkNTUSER.DAT  8888

(3) 启动目录

如果注册表键值也未能成功设置,则在启动目录下释放文件,并将文件属性设置为系统隐藏,文件路径为"C:\Users\[user]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\check.cmd"。

Stage 3

IconCache.db有两个导出函数,其中GetProcFunc为空,GetProcFuncW实现恶意功能。由于rundll32调用函数的特性,当传入宽字符串参数时,对GetProcFunc的调用实际会执行GetProcFuncW函数。

GetProcFuncW函数从作为参数的NTUSER.DAT文件中解密得到PE数据,然后内存加载,再调用其导出函数GetWindowSizedW。

下载器主模块

从NTUSER.DAT解密得到的PE文件为下载器主模块,先从C&C服务器获取后续载荷的基本信息,再根据这些信息下载后续载荷并执行。

首先选择作为C&C服务器的URL,3组URL字符串实际为同一个。

向C&C服务器发送的POST请求数据中有7对参数,参数名均是随机生成的字符串,而参数的值含义分别如下。

发送的请求数据示例如下。

下载器的操作指令有下列几个。

下载器向C&C服务器请求后续载荷时,C&C服务器回复的关于payload的基本信息包括:payload编号、长度、执行的导出函数名、传入的参数以及校验MD5值。在请求后续载荷阶段,C&C服务器也会下发指令结束下载器程序。

成功取得payload信息后,下载器利用payload编号向C&C服务器获取相应的载荷数据,计算下载数据的MD5哈希,与之前取得的校验值进行比较。如果校验不通过则向C&C服务器报告'Hash error!'。

在执行payload阶段,先用和下载器加载过程相同的解密算法对payload解密。检查解密后的数据是否为PE文件,内存加载,然后找到指定导出函数的内存地址,并传入参数执行。

溯源关联

相关攻击活动

样本d8a8cc25bf5ef5b96ff7a64f663cbd29的C&C服务器IP地址91[.]206.178.125在今年11月发布的一篇关于npm包投毒的分析报告中提到。

安全研究人员也发现了下载器样本46127a35b73b714a9c5c58aaa43cb51f出现在此次攻击活动中,但报告发布时他们仍在分析该样本。样本的名称sql.tmp和preinstall.db,以及导出函数名CalculateSum均在恶意脚本中出现。

此外,下载器样本的PDB路径npmLoaderDll.pdb也表明与此次npm包投毒事件有关。

关联样本

根据上述下载器样本中出现的字符串信息,我们关联到一个木马样本。

该木马样本的C&C服务器为hxxp://156.236.76.9/faq/faq.asp。除此之外,样本中还出现了下载器恶意软件频繁使用的解密算法。

归属

下载器内存加载PE的方式与此前Lazarus攻击安全研究人员所用的Comebacker DLL样本一致。

执行方式同样是rundll32调用DLL的导出函数,并传入数字字符串(”2907”)作为参数,而且DLL的导出函数ASN2_TYPE_new为空,ASN2_TYPE_newW函数实现恶意功能。

关联到的木马样本1c4227bf06121fe9c454a85ad9245b56在解密字符串时使用A5加密算法,其中常量0xFE268455,0xC2B45678,0x90ABCDEF也出现在Lazarus的历史攻击样本中。

在今年7月,Github官方发布安全警告,攻击者借助Github仓库和恶意npm包展开行动,攻击手法与Phylum报告相似。在微软的报告中提到,Jade Sleet是Lazarus的别名。

总结

从此批下载器样本的多层加载方式和C&C通信特点可以看出攻击者在尽量隐藏攻击痕迹,减少后续载荷暴露的风险。由于恶意软件牵涉到npm包供应链攻击,相关攻击活动可以追溯至今年7月之前,受此影响的人员数量可能不少,再加上与Lazarus组织存在关联,意味着攻击者很可能以此为基础展开进一步的攻击行动。

IOC

MD5

d8a8cc25bf5ef5b96ff7a64f663cbd29
46127a35b73b714a9c5c58aaa43cb51f
a6e7c231a699d4efe85080ce5fb36dfb
7298b1f10ee6afab5e8bf648be1ca13b
420a13202d271babc32bf8259cdaddf3
1c4227bf06121fe9c454a85ad9245b56

C&C

91.206.178.125:80
156.236.76.9:80
blockchain-newtech.com
chaingrown.com

URL

hxxp://91.206.178.125/upload/upload.asp
hxxps://blockchain-newtech.com/download/download.asp
hxxps://chaingrown.com/manage/manage.asp
hxxp://156.236.76.9/faq/faq.asp
hxxp://103.179.142.171/npm/npm.mov
hxxp://103.179.142.171/files/npm.mov
hxxp://91.206.178.125/files/npm.mov

参考链接:https://mp.weixin.qq.com/s/f5YE12w3x3wad5EO0EB53Q

图片来源网络目标可联系删除

相关文章

Mallox勒索软件新Linux变种现世
伪装成破解程序和商业工具的新型恶意软件正在传播
Orcinius后门新样本分析
Poseidon窃取程序通过Google广告感染Mac用户
大选开始之际,欧盟各政党遭受 DDoS 攻击
微软2024

发布评论