分析的样本: 59ed41388826fed419cc3b18d28707491a4fa51309935c4fa016e53c6f2f94bc

下载样本和收集信息

分析恶意文档

通过malwoverview的输出,可以看到恶意文档可能会释放出exe,然后提升权限,HOOK,进程注入等操作。

使用olevba和oleid来收集更多的信息

从这2个图可以分析出一些事实

  • 当MS Word被执行的时候,一些代码被执行了
  • 一个文件可能被写入
  • maldoc可能打开了一个文件
  • VBA宏负责整个活动

使用OLEDUMP分析

发现,有3个宏,16,17,18

在第11处有大量的数据,猜测是一个VBA resources,可能是加密的资源

从上面的输出中可以观察到一些细节

  • 很显然,代码被混淆了
  • split函数返回一个一维数组,它处理UserForm1中的内容,这些内容被分为了4部分,UserForm1内容似乎用!字符分割
  • UserForm2正在进行MoveFile操作
  • Winmgmt服务是在LocalSystem帐户下的svchost进程内操作的WMI服务,用于执行UserForm2.TextBox5给定的操作。
  • UserForm2.Text 6用于创建对ActiveX提供的对象的引用。
  • UserForm2.Text 7用于保存内容到二进制文件中

所以

  • UserForm2.Text1: C:\Users\Public\Pictures\winword.con
  • UserForm2.Text2: C:\Users\Public\Pictures\winword.exe
  • UserForm2.Text3: ​Scripting.FileSystemObject
  • UserForm2.Text4: ​winmgmts:{impersonationLevel=impersonate}!" & strComputer & “\root\cimv2}
  • UserForm2.Text5: ​Win32_ProcessStartup
  • UserForm2.Text6: ​winmgmts:root\cimv2:Win32_Process
  • UserForm2.Text7: ​ADODB.Stream

所以程序执行了这个winword.exe,而这个程序的二进制数据保存在Macros/UserForm1/o(11)中

先将其数据保存下来

将里面的Tahoma去掉,然后写脚本拼接即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import os

filename = "./1233.txt"
f = open(filename, 'r', encoding="utf-8")
c = f.read()
data_array = c.split("!")
f.close()

data_array = [int(i) for i in data_array]

data_array_bytes = bytes(data_array)
f = open("download.bin", "wb")
f.write(data_array_bytes)
f.close()

print("Write Success!!")

可以通过动态调试更容易的从DOCX文件中提取数据。打开的时候,VBS是加密的,用记事本打开,将DPB改为DPX即可