譯者:知道創宇404實驗室翻譯組
原文鏈接:https://www.proofpoint.com/us/blog/threat-insight/commodity-net-packers-use-embedded-images-hide-payloads

前言

大多數惡意軟件都是以“打包”的形式分發的:通常是一個包含代碼的可執行文件,在提取和執行預期負載之前,這些代碼可以逃避防病毒檢測和沙盒。我們討論了兩個常見的打包器,它們用于分發惡意軟件,但在圖像中隱藏了預期的有效載荷。

Steganography

Steganography是一種發送隱藏信息的技術。在圖像中隱藏數據時,主要技術有:

  • 將隱藏的數據存儲在圖像文件的末尾
  • 將隱藏的數據存儲在圖像元數據中(例如EXIF)
  • 將隱藏的數據存儲在實際像素數據中

要真正“隱藏”,可能意味著只使用數據中最不重要的位,以便在渲染時圖像看起來“正常”。

這里討論的打包器通常使用整個圖像像素數據,因此并不是真正的“隱藏”。如果它們被顯示,圖像將隨機出現。

“CyaX”打包器

在這個打包程序中,.NET可執行文件在.NET資源中包含一個方形PNG圖像,該圖像在整個文件中占有很大比例。

圖像可以被解碼到一個中間的可執行文件,其中包含一個.NET資源,而這個資源又可以被解碼為有效負載。有時,中間可執行文件使用其他的商品打包器,如ConfuserEx或.NET Reactor。

細節

第一級有效負載從藍色、綠色、紅色和Alpha(BGRA)通道解碼,獲取像素列。有些版本使用紅色、綠色和藍色(RGB)通道。

例如,在樣本SHA256-026b38e8eb0e4f505dc5601246143e7e77bbd2630b91df50622e7a14e0728675中:

圖1:從樣本SHA256獲取的圖像:026b38e8eb0e4f505dc5601246143e7e77bbd2630b91df50622e7a14e0728675

使用圖像中的通道BGRA,我們可以獲取數據:

一般來說,將提取的數據與短XOR密鑰或數據的前16個字節進行XOR運算,并使用gzip進行解壓縮,從而生成一個中間階段的.NET可執行文件。

對于上面的樣本,XOR密鑰是(以十六進制表示)74 43 74 17 74 02 74 23 74,可執行文件如下:

這個中間階段通常是用ConfuserEx打包的,但是在解包之后,它包含一個.NET資源,其中包含有效負載,通常與兩個密鑰進行XOR運算:一個短的(通常被截斷的Unicode)鍵,然后存儲一個16字節的密鑰在結果文件的開頭。

在上面的樣本中,中間可執行文件與.NET Reactor一起打包。使用de4dot之類的工具進行反混淆后,可執行文件包含一個資源2EJp1.resources,它從以下開始:

與鍵00 77 00 55 00 6c 00 59 00 71 00 79 00 4e進行異或(Unicode中的wUlYqyNZJIbjVN,長度減半):

然后對結果的前16個字節進行XOR運算,得出有效負載,即Agent Tesla:

在此打包程序的某些早期版本中,此.NET資源被命名為CyaX_Sharp.Properties.Resources.resources

Gzip變體

如上所述,一些樣本使用紅色,綠色和藍色(RGB)通道,另一些使用gzip壓縮中間可執行文件。

例如,在樣本SHA256-083521fa4522245adc968b1b7dd18da29b193fd41572114c9d7dd927918234e中:

圖2:從樣品SHA256拍攝的圖像:083521fa4522245adc968b1b7dd18da29b193fd41572114c9d7dd927918234ea

圖像使用RGB通道解碼為:

與密鑰(十六進制)24 04 33進行異或運算得出:

它是一個4字節的DWORD,包含未壓縮的文件大小。后跟一個gzip壓縮文件,以10字節gzip開頭,該gzip解壓縮為中間.NET可執行文件:

它包含一個.NET資源d2o6x4FhIdl.resources,其開始于:

將其與鍵00 66 00 43 00 73 00 6b 00 62 00 67 00(Unicode中的fCskbgkLbLArI)進行異或后,再將07 2e 8c d5 50 23 1b e3設為38 4f 0f 4b 8d ca

Steganography變體

最新變體中,第一級有效載荷實際上存儲在第二個PNG圖像中,該圖像是從第一幅圖像的紅色,綠色和藍色通道的最低有效位中提取的,并按行排列像素。然后從第二張圖片的藍色、綠色、紅色和Alpha通道中提取中間階段的.NET可執行文件,像素以列為單位,這次不進行XOR。

例如,在樣本SHA256–04794EC7E7EB5C6611ADA660FB1716A91E01503FB4703C7D2F2099C089C9017中:

圖3:從樣本SHA256拍攝的圖像:04794ec7e7eb5c6611aada660fb1716a91e01503fb4703c7d2f2099c089c9017

該圖像具有RGB通道,并且首先按行而不是按列獲取像素:

(還有一個Alpha通道,所有值均設置為0xff。)

8個字節為一組,然后以相反的順序獲得最低有效位(例如ff 01 00 ff 01 00 fe 01->10011011-> 0x9b):

這是存儲在DWORD(0x1e09b)中的文件大小,后跟第二個PNG圖像。首先使用BGRA和columns,解碼為:

它包含一個.NET資源biGzxmYEphCl

4c 00 6b 00 74 00 79 00 54 00 65 00 66 00 65 00(Unicode中的LktyTefe)異或時:

給出有效載荷,在本例中是Remcos RAT。

“Hectobmp”打包器

在這個打包程序中,.NET可執行文件通常在.NET資源中包含幾百個小映像,每個映像都包含負載的一部分,需要按正確的順序重新組裝。

早期版本使用BMP文件格式,而較新版本使用PNG。

細節

圖4:.NET資源列表(來自ILSpy)

例如,在樣本SHA256 – 0091c6bdceecf3e0143b4eaaefca1cd56cbfdfcc55f99c167f9dd1f3a48928bb5中:

圖5:從樣本SHA256中獲取的第一張圖像:0091c6bdceecf3e0143b4eaaefca1cd56cbfdfc55f993a1672

其中包含135張圖像,第一張圖像使用綠色,紅色和藍色通道解碼,第一行顯示為:

這包括Windows可執行文件的啟動。

從每個圖像中提取的塊的大小存儲在前4個字節(DWORD)中,在本例中為0x30d,小于15,所需的數據塊從第6個字節開始。

塊需要按資源名稱的數字順序進行組裝,這與它們在文件中出現的字母順序不同,后者是:

它們在.NET元數據中引用的順序:

在這種情況下,重新組裝的有效載荷是Loki Bot Stealer。

在樣本SHA256 – 09c8cbd9cdfda1fcb7c6a051887213dc3e3ccf00a5877eca3d3e374f077b98d5中,這些圖像是BMP,第一個看起來像:

圖6:從樣本SHA256拍攝的圖像:09c8cbd9cdfda1fcb7c6a051887213dc3e3ccf00a5877eca3d3e374f077b98d5

圖像解碼為以下內容,塊大小以綠色突出顯示,塊數據以黃色和藍色突出顯示:

在這種情況下,當從映像進行組裝時,有效負載使用zlib Deflate壓縮,從字節0xb0開始,以藍色突出顯示。

解壓縮得到:

結論

打包器的功能各式各樣,由于它們顯示為良性文件,因此很難進行逆向工程,或者采用沙盒規避技術。在本文中,我們研究了兩個使用嵌入式圖像隱藏有效負載的打包器,一個使用單個圖像,另一個使用數百個圖像。這些只是攻擊者擁有的眾多工具中的一小部分,這些工具可以用來分發惡意軟件、收集敏感信息和獲得對系統的未授權訪問。

IOCs

IOC Type Description
026b38e8eb0e4f505dc5601246143e7e77bbd2630b91df50622e7a14e0728675 SHA256 CyaX PNG sample with channels BGRA
c8c79ba04ab76c96db913f05b4b5bab36e7e0148fd72148df170a4be94d879a3 SHA256 Agent Tesla payload in 026b38e8eb0e4f505dc5601246143e7e77bbd2630b91df50622e7a14e0728675
083521fa4522245adc968b1b7dd18da29b193fd41572114c9d7dd927918234ea SHA256 CyaX PNG sample with gzipped data
a6f7edd2654412c25d7c565cb5b52e1382799a8b86d6bc44e965b554f6344618 SHA256 Agent Tesla payload in 083521fa4522245adc968b1b7dd18da29b193fd41572114c9d7dd927918234ea
04794ec7e7eb5c6611aada660fb1716a91e01503fb4703c7d2f2099c089c9017 SHA256 CyaX PNG sample with double steganography
6d9c861bf6f1495a4bddc7c745eb5b504692b4d6eae31e89453f0829760b1b90 SHA256 Remcos RAT payload in 04794ec7e7eb5c6611aada660fb1716a91e01503fb4703c7d2f2099c089c9017
0091c6bdceecf3e0143b4eaaefca1cd56cbfdfc55f99c167f9dd1f3a48928bb5 SHA256 Hectobmp sample with PNGs
1180c158968faaf0a4951e9a0c59996f0fb29cdad9443aa2097efb5bc7f123f4 SHA256 Loki Bot payload in 0091c6bdceecf3e0143b4eaaefca1cd56cbfdfc55f99c167f9dd1f3a48928bb5
09c8cbd9cdfda1fcb7c6a051887213dc3e3ccf00a5877eca3d3e374f077b98d5 SHA256 Hectobmp sample with BMPs
c3b85d8291281d73cfdd8373cb2b32cdc4c3a602233f99ab3cbbd34bd4e3c99b SHA256 Agent Tesla payload in 09c8cbd9cdfda1fcb7c6a051887213dc3e3ccf00a5877eca3d3e374f077b98d5

Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1423/