快速周日上午的博客文章,分析一個未知的rtf檔案。本文是初步調查的結果,未做任何歸因,但您將擁有深入調查所需的所有資訊。惡意檔案有SHA256:5d9e1f4dab6929bc699ba7e5c4fd09f2bbfd6b59d04cefd8f4bf06710e684e。
我第一眼就想知道rft的背後是什麼,但是運行一個特定的腳本,我對結果感到失望。為了快速回應,提交到沙箱可能是最好的選擇,但你會錯過所有的樂趣!我决定使用十六進位編輯器手動檢查,因為它是難以置信的,你可以選取對象的快速管道。
我一開始嘗試的個人腳本未能解析從檔案中選取的對象,這太糟糕了,但現在我知道外部對象在檔案中。首先要做的是理解為什麼一個或多個對象不正確。要查找什麼?嗯,我總是開始檢查已知的對象、外殼程式碼和類似的東西。“465753”(代表“FWS”,flash檔案頭的標準部分)是一個很好的字串,可以放在蒐索文字方塊中。
閃光物體識別
似乎檔案包含一個flash對象。根據Flash檔案頭的定義,你也知道對象的大小,圖片中的紅色框顯示它:0x50A1位元組。從檔案中剪切它並粘貼到一個新檔案(記住要複製為文字並粘貼為十六進位文字)。
閃光對象詳細資訊
嘗試在JPEXS flash反編譯程式中加載新檔案並沒有太大幫助。你可以看到裡面沒有程式碼,只有二進位數據表示的可疑的東西。不知道那個位元組序列的後面是什麼,我决定回到十六進位編輯器。仔細觀察flash的內容會發現一個奇怪的位元組序列:
額外位元組開始
額外位元組結束
似乎攻擊者已經修改了flash檔案,並在其中插入了一些額外的位元組。這些位元組是什麼意思?它是一個外殼程式碼嗎?好吧,回答這個問題很簡單,看看它:
外殼程式碼的第一部分是一個簡單的异或解密算灋,真正的外殼程式碼從解密完成時開始。下麵是外殼程式碼的第二部分:
外殼程式碼試圖標識IsBadReadPtr函數。之後有一個迴圈用於蒐索調用行程具有讀存取權限的記憶體空間。基本上,該片段用於定位Word應用程序擁有的記憶體空間。
在由IsBadReadPtr驗證的記憶體空間中蒐索位元組序列“515168685168686895e8 E8”。序列位於rtf檔案的最開始,這意味著程式碼用於標識包含加載的rtf檔案的記憶體空間。
另一個解密常式,解密區域包含一個PE檔案。糟糕的是,0x18CF6解密位元組不是真正的有效負載。外殼程式碼的下一部分幫助我識別實際有效載荷:
很好,現在我可以說有效載荷是什麼了。解密位元組塊的最後一部分(len 0x12F6)表示外殼程式碼的另一部分。所以,如果從解密的PE檔案中删除最後的0x12F6位元組,您將獲得真正的有效負載!
基本上,外殼程式碼的最後一部分用於執行兩個不同的操作:–執行真正的負載–運行Word應用程序,將一個假的Word檔案作為參數傳遞。假檔案是在外殼程式碼的最後一部分中創建的。使用假檔案是參與者執行的標準操作,他們試圖欺騙受害者運行Word應用程序,將假Word檔案作為參數傳遞。假檔案是在外殼程式碼的最後一部分中創建的。使用假檔案是參與者執行的標準操作,他們試圖欺騙受害者隱藏自己的真實意圖。選取的有效載荷SHA256是4c72df74a1e8039c94b188f1c59f30ddcc7107647689e4d908e55d04ff8b52。這個新檔案是一個下載程式,用於獲取最終階段,整個計畫中真正危險的部分:鈷打擊。
總結一下:
(注意:在寫作的時候,一切都還沒有結束。)
可能的相關rtf檔案:
午飯好了,再見!