1.概述
Lazarus是朝鲜国家资助的APT组织,该组织自成立以来一直活跃至今,因2014年11月针对索尼影视娱乐公司的攻击活动Operation Blockbuster而出名。
该组织早期主要针对政府机关,以窃取情报为主,但自2014年后,该组织开始针对全球金融机构、虚拟货币交易等位目标,并开始发动攻击以获取经济利益。近日在威胁狩猎中发现Lazarus以日本瑞穗银行(Mizuho Bank)的招聘信息为诱饵进行攻击的攻击活动,
2.攻击链
3. 攻击活动分析
1. Job_Description.vhd分析
vhd为虚拟磁盘格式, 在较高版本的操作系统中能够直接打开,在较低版本的系统中不能直接打开,比如win7操作系统,因此该样本主要针对使用高版本系统的用户。
Vhd文件打开后如下图,其中文件Dump.bin和Job_Description.pdf为隐藏状态,因此从受害者的角度来看文件打开后只显示Job_Description.exe文件。
为了降低受害者的警惕性,图标伪装成PDF文件,在文件名和后缀名之间使用了大量的空格,在资源管理器中不能直接看到后缀而是被用”…”代替。
如果受害者点击执行了文件Job_Description.exe,该恶意程序会打开PDF诱饵文件展示在前台。PDF诱饵文件的主题为日本瑞穗银行(Mizuho Bank)的招聘信息。
2.Job_Descrition.exe分析
恶意程序执行后,首先将文件dump.bin拷贝到目录%Templates%,并重命名为”war{当前时间戳}{随机数}”,随机数为使用当前时间戳作为随机数种子生成。
目录%templates%主要存放word生成的本地模板,命名一般为”war{xxx}.bin”,在将dump.bin拷贝到该目录重命名后取消其隐藏属性,因为在该目录下使用该文件名很正常。
读取拷贝后的dump.bin, 判断文件头是否是MZ,如果是表示该文件已经解密,直接返回;否则使用文件中第一个字节作为异或密钥,解密前1000字节数据,如果文件大小小于1000,则解密整个文件。
解密完成后,将解密后的首字节改成’M’来修复PE头,最后将解密的数据写入原文件起始位置。
最后通过函数LoadLibraryW将文件加载到内存中,获取导出序号为1的导出函数并执行。
3.dump.bin分析
文件dump.bin为加密数据,解密后为dll文件。由文件Job_Descrition.exe解密并执行该dll导出序号为1的导出函数。Dll文件执行后首先读取自身文件尾部的4字节数据作为加密配置信息在文件中的偏移值,然后使用标准的RC4解密算法解密出配置数据。
解密后的值为:
1 | hxxps://azure.protection- |
解密完配置信息后,遍历当前运行的进程快照,检测系统中是否包含安全产商安全软件相关的进行。若存在则设置对应的全局变量值为1。
检测的进程名如下:
进程名 | 所属软件 |
---|---|
SavService.exe | Sophos Anti-Virus Software |
avp.exe | 卡巴斯基杀毒软件 |
klnagent.exe | 卡巴斯基杀毒软件 |
AvastSvc.exe | Avast杀毒软件 |
AvastUI.exe | Avast杀毒软件 |
avguard.exe | 杀毒软件小红伞(Avira) |
SentryEye.exe | Avira Product Family |
bdagent.exe | BitDefender Professional |
vsserv.exe | Bull Guard网络安全套装 |
coreServiceShell.exe | 趋势杀毒软件 |
uiSeAgnt.exe | 趋势科技Worry-Free Business Security |
MsMpEng.exe | Windows Defender |
当系统中存在趋势科技、BitDefender、WindowsDefender其中之一的进程时,则重载ntdll.dll,以取消杀软对ntdll.dll的hook,从而绕过杀软监测。
当进程中存在与 趋势科技、BitDefender、WindowsDefender相关的进程时,重载加载的ntdll模块,用于绕过这些进程对ntdll的监控。
重载代码如下:
检测互斥量是否已经被创建用于避免恶意程序被重复执行。
恶意程序在运行中会根据受害者计算机中安装的安全软件进程使用不同的策略来绕过检测。当解密的配置数据不是以”http”开头的url地址或者恶意程序已经在执行的情况下只执行打开诱饵文档的操作。
若存在BitDefender、WindowsDefender相关进程时通过timeout延迟10秒执行,然后使用rundll32.dll调用自身模块序号为1的导出函数。
恶意程序通过使用curl来从解密后的链接中下载后续的payload,如果目标系统中使用了代码,则curl使用参数”-x”来添加对应的代理。
创建匿名管道从进程curl的执行结果中读取数据。
从远程服务器下载的payload被伪装成html网页,因此在下载完成后需要验证数据头部是否为”<html>”来确定下载的数据是否有效。
在伪装的html数据中偏移0x40开始处才是真正的payload数据。该数据使用RC4加密算法加密。
若存在Avria或Avast时,将解密后的数据写入文件marcoor.dll,并用rundll32.dll调用其导出函数;否则创建远程线程将数据解密后的文件注入到进程explorer中。
恶意程序使用的远程线程代码注入如下:
遗憾的是在分析过程中,始终无法获取到后续payload。
3. IOC
hxxps://azure.protection-
service.cloud/GJ4EDAp_dNg/lIHlIP4QM7/GQKGPNuo4R/c5njZjK9Tq/J7rC%2BBrm/
ZoQVg%3D%3D
3CE53609211CAE4C925B9FEE88C7380E
931D0969654AF3F77FC1DAB9E2BD66B1
31E154E560DFF21F07F8AFF37BE6DE9B
A17E9FC78706431FFC8B3085380FE29F
2A7745C1B6FBC60C88487908A1D39EBB
4. ATT&CK矩阵
Tactic | ID | Name | Description |
---|---|---|---|
Initial Access | T1566 | Phishing | 鱼叉式钓鱼 |
Execution | T1204 | User Execution | 通过诱饵文档诱导执行 |
T1059 | Command and Scripting Interpreter | 执行cmd命令 | |
Command and Control | T1105 | Ingress Tool Transfer | 下载恶意程序 |
T1071 | Application Layer Protocol | 使用http协议通信 |
最后更新: 2024年03月27日 10:47:10
本文链接: http://shxi.cc/post/53de2fc6.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可,转载请注明出处!