译者:知道创宇404实验室翻译组
原文链接:https://decoded.avast.io/janrubin/complex-obfuscation-meh/

前言

最近一段时间,我们一直在监测一种新的恶意程序,我们称之为“Meh”。这一切都是在我们遇到大量文件时开始的,这些文件的开头是随机生成的字符串,然后是一个编译的AutoIt脚本……

分析

Meh由两个主要部分组成。

第一部分是解密器,我们将其命名为MehCrypter,它由多个阶段组成,并作为已编译的AutoIt脚本进行分发,以随机生成的字符串序列作为前缀。AutoIt解释程序将跳过此字符串序列,该解释程序将扫描确定文件格式的字节并有效地混淆文件,而不会影响其功能。

第二部分是密码窃取程序,称为Meh。窃取程序是恶意软件的核心,并具有许多功能。它能够窃取剪贴板内容,键盘记录,窃取加密货币钱包,通过种子下载其他文件等。它几乎所有功能都在子线程中执行,这些子线程是从注入的进程执行的。在下一篇博客文章中,我们将重点介绍密码窃取器。

MehCrypter

首先,Meh是密码窃取/键盘记录程序。但是要到达那里,我们需要仔细检查MehCrypter。

在实际的加密程序中,文件开头的字符串是随机生成的,长度也有所不同。在这段区域中具有几MB数据的样本几乎没有数据。

该文件还包含已编译的AutoIt脚本的代码,这部分代码可由AutoIt解释程序解释。解释器的设计方式是搜索整个文件内容,直到找到AU3!EA06字符串为止。因此,整个前置字符串将被完全跳过,并且仅用作避免检测的混淆技术。

反编译产生了一个非常可读的脚本,该脚本具有一个目的:连接硬编码的十六进制字符串,对其进行解码,并通过自定义AutoIt PE加载器使用反射加载来加载结果PE。

AutoIt PE装载机的片段
请注意,该加密程序非常通用,到目前为止,我们已经看到至少五个家族在使用它,其中最著名的是Agent Tesla和XMRig。

MehCrypter dropper

从上述脚本中,我们可以手动提取二进制文件。这个二进制文件是用Borland Delphi编写的非常简单的dropper,它向C&C服务器发出几个HTTP POST请求,以下载三个附加文件:

  • http://83[.]171.237.233/s2/pe.bin
  • http://83[.]171.237.233/s2/base.au3
  • http://83[.]171.237.233/s2/autoit.exe

这些文件下载后,将它们保存到C:\testintel2\目录中并使用base.au3执行该文件(即解释autoit.exe)。pe.bin是加密的Meh密码窃取程序二进制文件,我们稍后会谈到。

此外,该删除程序还尝试从以前安装的Meh密码窃取程序中清除环境,我们将在本博客系列的下一部分中对此进行深入讨论。具体来说,它尝试终止几个进程:

  • notepad.exe
  • werfault.exe
  • vbc.exe
  • systeminfo.exe
  • calc.exe

Meh将这些过程用于以后的PE注射。在此阶段,它还将删除其安装文件夹C:\programdata\intel\wireless

这让我们想到一个同样由Meh Dropper创建的C:\testintel2\a.txt文件:该文件仅包含三个字节:meh。乍一看,这真是太好笑了,我们决定将其命名为whole family Meh,包括其加密程序MehCrypter。

base.au3使用与原始样本相同的密码器(MehCrypter)。但是,它只包含一个shellcode,而不是整个PE二进制文件。因此,它省略了PE加载器部分,并使用CallWindowProc API函数执行。

base.au3 shellcode

base.au3 shellcode有两个部分。

在第一部分中,shellcode在堆栈上构造了另一个shellcode。我们可以在地址处看到它的开头0x00000025。第二个Shellcode通过间接跳转执行。

第二部分是未加密的二进制文件。MZ标头从地址0x0000168A开始。第二个(构造的)shellcode实际上是另一个PE加载器,它仅加载并执行硬编码的二进制文件。该二进制文件是加密器信封的最后阶段,是Meh密码窃取者的stager。

Meh stager

此程序是第三个(也是最后一个)PE加载程序,它使用非常简单的XOR密码解密上述pe.bin文件。

pe.bin

解密功能需要两个输入:一个base64编码的密文和一个密钥。幸运的是,这两个都包含在中pe.bin。

文件的开头有一个随机生成的字符串,类似于初始的AutoIt脚本。但是,在一系列随机字母之后,我们可以看到一个由竖线分隔的字符串,后跟一个base64字符串。这些正是解密功能所需的参数。可以在下面找到用Python编写的相应解密器。

如上所示,该密钥没有以这种确切形式使用。恶意软件用“ a” 替换密钥字符串的第一个字符,并省略最后一个字母。因此,实际密钥为asUzmbiYd

之后,我们对base64字符串进行解码,并从XOR密钥字符串派生一个一字节的密钥。

然后,此一字节密钥的位取反版本用于解密文件的内容。

由于错误的密钥派生过程,密钥空间的实际大小仅为256个密钥。因此,分析人员可以对解密密钥进行暴力破解,例如通过尝试对PE文件头进行解密以查找MZ字节。

用Python编写的整个解密器可以在这里找到。

活动概述

Meh和MehCrypter感染从6月中旬开始激增,每天能记录到千次感染。该恶意软件在西班牙最为流行。但是,在西班牙,Avast阻止了我们80,000多名用户的感染尝试。第二个最受攻击的国家是阿根廷,有2,000多个受攻击的用户。

总结

在本文中,我们研究了MehCrypter系列,该系列用于混淆许多在野外流通的恶意软件。这些系列之一是Meh密码窃取程序,我们将在系列的下一部分中对其进行详细介绍,敬请期待!

IoCs

URL

http://83[.]171.237.233/s2/pe.bin(ZoomEye搜索结果)
http://83[.]171.237.233/s2/base.au3
http://83[.]171.237.233/s2/autoit.exe

Repository:https://github.com/avast/ioc/tree/master/Meh


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1340/