转载

新型恶意勒索软件DMA Locker分析

新型恶意勒索软件DMA Locker分析

DMA Locker是今年早些时候出现的一款勒索软件。目前为止该勒索软件的影响范围比较小,但我们还是想提醒您,它仍然存在。

0×01  样本

d35344b1f48764ba083e51438121e6a9 —波兰语版本 2 2016.1 <- 主要分析这个样本

4190df2af81ece296c465e245fc0caea —英文版本2(2016.1)

6fbd3cdcafd6695c384a1119873786aa —波兰语版本1(2016.12)

// 特别感谢这些恶意软件的收集者: @PhysicalDrive0 , @JAMESWT_MHT @siri_urz

0×02  行为分析

当勒索软件运行时,软件移至 C:/ProgramData ( 或者 C:/Documents and Settings/All Users/Dokumenty/) ,重命名为 fakturax.exe ,随后释放另一个修改后的备份: ntserver.exe 。而 faktura.exe 在执行完后即被删除了。不同版本的勒索软件可能会在该目录下释放不同的文件。

新型恶意勒索软件DMA Locker分析  

这种勒索软件通常会弹出一个红色的窗口。目前为止,有两种语言版本,波兰语和英语。下面显示的英文版本:

新型恶意勒索软件DMA Locker分析

早期的版本的 GUI 稍微有些不同(同样有波兰语和英文版本)。

新型恶意勒索软件DMA Locker分析

其他勒索软件的解密过程是分离的,与之相反的是 DMA locker 的解密过程是内建的。从该软件 GUI 的提示框中可以看到。如果用户在文本框中键入密钥( 32 个字符串长度)然后点击按钮,程序就会切换到解密模式(使用提供的密钥):

新型恶意勒索软件DMA Locker分析

这个程序不是很稳定,在解密的时候容易崩溃掉。在一些旧的版本中有时在加密过程中就会崩溃掉—但是在显示发生了什么事的任何信息之前,这可能会使受害者非常混乱。更麻烦的是没有改变文件的扩展名。所以目前可见的征兆就是受害人不能打开他们的一些文件。

新版本还增加了自动执行的 key 。其中一个部署程序的拷贝,另一个显示 txt 格式的勒索金额(通过记事本)。然而,这个备份( DMA Locke  41:55:16:13:51:76:67:99ntserver.exe )经常不能释放成功,仅仅释放记事本。

新型恶意勒索软件DMA Locker分析

0×03 检测

目前已经被 Malwarebytes Anti-Malware 检测出来了 Ransom.DMALocker

新型恶意勒索软件DMA Locker分析  

0×04  尝试

根据勒索软件的提示,作者声称数据是被 AES RSA 加密的。现在看看这个文件。首先可以看到加密的内容总是重复的图案,加密效果相当低级。

左边—原始的 BMP 图片。右边—被 DMA 加密的 BMP

新型恶意勒索软件DMA Locker分析 新型恶意勒索软件DMA Locker分析  

现在比较更多的文件,看看被 DMA 加密之后是怎么变化的。

Example 1 – HTML files:

比较原始文件:

新型恶意勒索软件DMA Locker分析

比较加密后的文件:

新型恶意勒索软件DMA Locker分析

  Example 2 – PNG files:

比较原始文件:

新型恶意勒索软件DMA Locker分析

比较加密后的文件:

新型恶意勒索软件DMA Locker分析

可以看到,原始文件的头部是一样的,加密文件头部也是一样的。似乎加密的是一些数据块,可能是 8 或者 16 个字节一次加密。从 PNG 文件可以看出,从 0×10 处开始加密的数据就不同了,然而在 0×10,0×11 。。。处都是 0

0×05  剖析

这个勒索软件目前来看是分布式的,并且不具备反分析的能力。所有用到的字符串和 API 函数均是普通文本。实际上,该恶意软件甚至“帮助”了分析人士,通过其提供的一系列调试的字符串(原文 + 译文):

<span style="font-size: 10.5pt;">[+]&nbsp;Plik&nbsp;jest&nbsp;aktualnie&nbsp;zaszyfrowany,&nbsp;pomijanie..&nbsp;//The&nbsp;file&nbsp;is&nbsp;already&nbsp;encrypted,&nbsp;skipping..</span><span style="font-size: 10.5pt;"></span>

<span style="font-size: 10.5pt;">[*]&nbsp;Rozmiar&nbsp;pliku&nbsp;=&nbsp;%I64d&nbsp;bajtow..&nbsp;//File&nbsp;size&nbsp;=&nbsp;%I64d&nbsp;bytes..&nbsp;</span><span style="font-size: 10.5pt;"></span>

<span style="font-size: 10.5pt;">[+]&nbsp;Rozpoczeto&nbsp;szyfrowanie&nbsp;pliku:&nbsp;%s&nbsp;//Started&nbsp;encrypting&nbsp;the&nbsp;file:&nbsp;%s&nbsp;</span><span style="font-size: 10.5pt;"></span>

<span style="font-size: 10.5pt;">[+]&nbsp;Zakonczono&nbsp;szyfrowanie&nbsp;pliku:&nbsp;%s&nbsp;//Finished&nbsp;encrypting&nbsp;the&nbsp;file:&nbsp;%s</span><span style="font-size: 10.5pt;"></span>

<span style="font-size: 10.5pt;">[+]&nbsp;Rozpoczeto&nbsp;zapisywanie&nbsp;z&nbsp;pamieci&nbsp;do&nbsp;pliku:&nbsp;%s&nbsp;//Started&nbsp;dumping&nbsp;from&nbsp;memory&nbsp;to&nbsp;a&nbsp;file:&nbsp;%s</span><span style="font-size: 10.5pt;"></span>

<span style="font-size: 10.5pt;">[+]&nbsp;Zakonczono&nbsp;zapisywanie&nbsp;z&nbsp;pamieci&nbsp;do&nbsp;pliku:&nbsp;%s&nbsp;//Finished&nbsp;dumping&nbsp;from&nbsp;memory&nbsp;to&nbsp;a&nbsp;file:&nbsp;%s</span><span style="font-size: 10.5pt;"></span>

<span style="font-size: 10.5pt;">[*]&nbsp;Plik&nbsp;jest&nbsp;aktualnie&nbsp;odszyfrowany,&nbsp;pomijanie..&nbsp;//The&nbsp;file&nbsp;is&nbsp;already&nbsp;decrypted,&nbsp;skipping..</span><span style="font-size: 10.5pt;"></span>

<span style="font-size: 10.5pt;">[+]&nbsp;Rozpoczeto&nbsp;deszyfrowanie&nbsp;pliku:&nbsp;%s&nbsp;//Started&nbsp;decrypting&nbsp;file:&nbsp;%s</span><span style="font-size: 10.5pt;"></span>

<span style="font-size: 10.5pt;">[+]&nbsp;Zakonczono&nbsp;deszyfrowanie&nbsp;pliku:&nbsp;%s&nbsp;//Finished&nbsp;decrypting&nbsp;file:&nbsp;%s</span><span style="font-size: 10.5pt;"></span>

<span style="font-size: 10.5pt;">Alokacja,&nbsp;error:&nbsp;%d&nbsp;//Allocation&nbsp;error:&nbsp;%d</span><span style="font-size: 10.5pt;"></span>

<span style="font-size: 10.5pt;">DMA&nbsp;Locker</span><span style="font-size: 10.5pt;"></span>

<span style="font-size: 10.5pt;">Otwieranie&nbsp;pliku:&nbsp;%d&nbsp;//Opening&nbsp;file:&nbsp;%d</span>

感谢这些日志,找到了代码比较重要的一部分。

程序一执行起来,一个新的线程部署开来—作用是检查下列进程:

rstrui.exe

ShadowExplorer.exe

sesvc.exe

cbengine.exe

如果其中一个被检测到,那么恶意软件就会终止它。在部署了这个线程的日志之后。(波兰语):

“阻塞系统恢复进程”  

新型恶意勒索软件DMA Locker分析

这个恶意软件包括两个黑名单而不是一系列的攻击扩展名,一个是目录:

新型恶意勒索软件DMA Locker分析

另一个是文件的扩展名:

新型恶意勒索软件DMA Locker分析  

在他们包括的黑名单子串的文件直接被跳过。

恶意软件枚举所有的文件—浏览系统盘,在网络畅通情况下—尝试加密每个文件(除了黑名单)

新型恶意勒索软件DMA Locker分析

一个简单的标志判断恶意软件是加密模式还是解密模式:

新型恶意勒索软件DMA Locker分析

加密(解密也是)在一个新的线程中部署。

新型恶意勒索软件DMA Locker分析

  加密密钥

加密的密钥 32 位长。在最新的版本中,恶意软件的 key 是在原始文档的最后硬编码的,然后读取。然而,过程复杂。

在执行的过程中,两个原始文件的备份被释放: fakturax.exe   ntserver.exe ,但是只有 fakturax.exe 才包含 Key,   ntserver.exe 中被清楚了。在读取完这个 key 之后, fakturax.exe 被删除了,而且这个 Key 也随之丢失。这是为何呢,通过原始文件的副本(如果我们知道感染源那这个就不是问题,例如,恶意文件通过 e-mail 获得),我们可以很简单的恢复这个 key ,。

测试这些版本的恶意软件(上述提及的版本 2 ,例如, 4190df2af81ece296c465e245fc0caea ),这个就足以从原始文件的末端找到 key 。(警告:这不是本样品的原始密钥。这是仅仅是演示它是如何工作的以及在哪里能够找到真正的 Key 。试图恢复文件之前,请确保您所做的备份,以防万一,如果在其他一些版本的算法是不同的)

新型恶意勒索软件DMA Locker分析  

将其键入文本框:

新型恶意勒索软件DMA Locker分析

为了能够找到所有的文件。

加密算法

作者声称他使用的是 AES RSA 算法。在代码里这些看起来是怎样的呢?

文件被一块一块的加密,一个单元是 16 个字节( 4 dwords )。 K ey 32 位长,在加密之前已经做了预处理。这两个元素—预处理的 key 和输入文件的数据块—都是被拷贝进一个缓冲区中,这个缓冲区作为加密的中间过程。

下面是一个样本文件: square.png 被加密函数加密。使用的 Key 11111 …” 。(拷贝的文件的数据块在图片当中被选中了)

新型恶意勒索软件DMA Locker分析  

加密之后(输出标记为灰色):

新型恶意勒索软件DMA Locker分析  

输出之后又被拷贝进原始缓冲区中,包括整个文件。每个加密的文件都有前缀“ ABCXYZ11 ”,一个有趣的值,这个被勒索软件用来确认加密文件(这个在新版本中有介绍)。下面我们可以看到 dump 至磁盘上的样本文件:

新型恶意勒索软件DMA Locker分析

16 个字节长度的数据块文件被 AES ECB 模式加密。

0×06 总结

首先,并不是所有的恶意软件作者说的都是实话。这里的 Key 文件既不是 RSA 加密也不是随机生成的,而是保存在原始文件中。

第二,立刻删除恶意软件也不是最好的解决方法,有时候我们需要其恢复数据。

如果你遭遇到勒索软件,在做任何事之前记得要尽量收集其信息。万一你找不回数据,最好的办法是将其放到一些有名的门户或者专业论坛上去让人分析。我们正在收集各种威胁的样本,尝试去解决这些问题。

*原文地址: blog.malwarebytes ,东二门陈冠希/编译,部分内容有修改,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

原文  http://www.freebuf.com/articles/network/96738.html
正文到此结束
Loading...