我最近研究了一个来自客户提交的恶意软件。SHA-256为:

f4d9660502220c22e367e084c7f5647c21ad4821d8c41ce68e1ac89975175051

从技术角度来看,这并不是一个复杂的恶意软件。但是它说明了一些恶意软件作者最常用的用于反动态(自动)和静态(手动)分析的技术。

为了检测动态分析环境,它会检测下列程序列表:

OLLYDBG
W32DASM
WIRESHARK
SOFTICE
PROCESS EXPLORER
PROCESS MONITOR
PROCESS HACKER

该恶意软件列举了被感染系统上的所有窗口,如果发现其中任何一个属于上面列出的程序之一,恶意软件将进入一个循环并等待程序退出。这是一个很基本的技术,但是用代码实现起来相当容易和简单。

针对静态分析,该恶意软件使用了两个其他的技术:

1.在恶意软件中使用自定义的加密方案对任何明显的字符串进行加密。这对恶意软件作者和安全分析师有以下含义:
C&C域名可以被硬编码在恶意软件中。对恶意软件编写者来说没有必要生成域名生成算法(DGA)。这些DGA很合适作为签名的候选人,并且恶意软件编写者在某些情况下会蒙受显著的“维修”成本来不断变化DGA。
所使用的恶意软件应用程序编程接口(API)在运行时会被解析;并且这些API的名称会在运行时被解密。这意味着安全分析师只有理解了加密方案后静态分析才变得有意义。
 
2.与C&C服务器通信使用了自定义的加密方案:
恶意软件与C&C服务器通信时,在常规的HTTP协议之上使用了自定义的加密/混淆技术。

现在,让我们深入的了解一下字符串的加密方案。例如,让我们来看看下面的字符串:

UHEOtTKwmsDb1J/2f8l/5w==

这看起来似乎是Base64编码,但是加密方案要稍微复杂一些。首先,恶意软件从硬编码的数据中生成密钥。密钥的生成步骤如下:

1.取硬编码字符串:

2.对1中的字符串进行Base64编码:

3.对2中的字符串进行MD5加密:

4.接着,恶意软件会计算下列硬编码字符块的MD5值:

5.MD5值为:

6.将第3步和第5步得到的MD5散列进行联接:

7.第6步中的字符串的MD5值将被用于微型加密算法(TEA)的key:


到此,准备工作已经完成,恶意软件准备解密字符串。

解密算法如下:

1.将加密的字符串-例如,“UHEOtTKwmsDb1J/2f8l/ 5W==”传参到一个可能是base64的函数。

2.使用TEA解密第1步中得到的结果,解密的key就是上面加密过程中第7步生成的key。

3.最终使用简单的循环获得解密的字符串:

4.解密后的字符串如下:

PAYLOAD分为收集关于系统的数据和通过硬编码字符串从“.DATA”节分离。这是恶意软件使用的一个非常标准的方案。

PAYLOAD生成方案如下所述:

1.创建一个伪随机串并用“&”连接 – 例如:

2.添加主机名称和PID:

3.创建一个伪随机串并用硬编码值连接:

4.将上面的字符串联接在一起:

5.之后再添加硬编码数据:

6.取"密钥生成步骤"中第5步中MD5散列的子字符串:

7.在第5步的字符串后面添加上一步的子字符串:

8.添加操作系统主/次版本和构建信息:

9.添加区域信息:

10.添加内存大小和时间信息:

将最终得到的PAYLOAD进行如下算法编码:

1.用"Dm1cL"字符串作为PAYLOAD的头部。

2.生成一个随机的key进行xor。

3.进行HTML-escaped编码。

被异或和escaped编码后的数据如下:

总结

首先,在许多现代恶意软件的家族中都可以发现与上述相同的技术的变种。这使得恶意软件作者能够一杆命中三个目标。这是一个非常简单的加密方案,并在恶意软件作者这一方面提供了不错的设计,这使得恶意软件作者能够相对有效的去改变它。其次,它的动态和静态分析稍微有些复杂。最后,它提供了一个有效的工具来创建同一种恶意软件的新变种,而且能够绕过杀毒引擎的特征。

相关的恶意软件的文件哈希,恶意域名和IP地址的集合可在X-Force Exchange找到。此外,下面提供了恶意软件中硬编码的C&C域名列表:

“76TtKl8ZwW6MU29wmPDtT1QNcj5UDbqn/KIVj42N4ZYkZEPTS6ByTw==” / “hxxp[:]//www[.]n-fit-sub.com/ec/index[.]php”


*参考来源:securityintelligence,编译/丝绸之路,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

源链接

Hacking more

...