一种在恶意软件中常见的字符串和Payload混淆技术

怪狗 2016-7-30 HACK 0 0

      一种在恶意软件中常见的字符串和Payload混淆技术

  我最近研究了一个来自客户提交的恶意软件。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.取硬编码字符串:

  一种在恶意软件中常见的字符串和Payload混淆技术

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

    一种在恶意软件中常见的字符串和Payload混淆技术

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

   一种在恶意软件中常见的字符串和Payload混淆技术

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

  一种在恶意软件中常见的字符串和Payload混淆技术

  5.MD5值为:

  一种在恶意软件中常见的字符串和Payload混淆技术

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

 一种在恶意软件中常见的字符串和Payload混淆技术

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

  一种在恶意软件中常见的字符串和Payload混淆技术

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

  解密算法如下:

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

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

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

  一种在恶意软件中常见的字符串和Payload混淆技术

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

  一种在恶意软件中常见的字符串和Payload混淆技术

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

  PAYLOAD生成方案如下所述:

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

  一种在恶意软件中常见的字符串和Payload混淆技术

  2.添加主机名称和PID:

  一种在恶意软件中常见的字符串和Payload混淆技术

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

  一种在恶意软件中常见的字符串和Payload混淆技术

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

  一种在恶意软件中常见的字符串和Payload混淆技术

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

  一种在恶意软件中常见的字符串和Payload混淆技术

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

      一种在恶意软件中常见的字符串和Payload混淆技术

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

 一种在恶意软件中常见的字符串和Payload混淆技术

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

  一种在恶意软件中常见的字符串和Payload混淆技术

  9.添加区域信息:

  一种在恶意软件中常见的字符串和Payload混淆技术

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

  一种在恶意软件中常见的字符串和Payload混淆技术

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

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

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

  3.进行HTML-escaped编码。

  一种在恶意软件中常见的字符串和Payload混淆技术

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

      一种在恶意软件中常见的字符串和Payload混淆技术

  一种在恶意软件中常见的字符串和Payload混淆技术

  总结

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

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

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

一种在恶意软件中常见的字符串和Payload混淆技术一种在恶意软件中常见的字符串和Payload混淆技术

原文地址:https://www.77169.com/hack/201509/210715.shtm

转载请注明来自华盟网,本文标题:《一种在恶意软件中常见的字符串和Payload混淆技术》

喜欢 (0) 发布评论