用于分发恶意软件的 .NET 打包器使用嵌入式图像来隐藏有效负载
译者:知道创宇404实验室翻译组
前言
大多数恶意软件都是以“打包”的形式分发的:通常是一个包含代码的可执行文件,在提取和执行预期负载之前,这些代码可以逃避防病毒检测和沙盒。我们讨论了两个常见的打包器,它们用于分发恶意软件,但在图像中隐藏了预期的有效载荷。
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 |
以上是 用于分发恶意软件的 .NET 打包器使用嵌入式图像来隐藏有效负载 的全部内容, 来源链接: utcz.com/p/199799.html