原文地址:http://drops.wooyun.org/papers/14912

作者:Mr.Right、Gongmo、K0r4dji

申明:文中提到的攻击方式仅为曝光、打击恶意网络攻击行为,切勿模仿,否则后果自负。

0x00 前言


近期,越来越多的人被一种恶意软件程序勒索,电脑上的多种重要文件都被加密而无法打开,并且无计可施,只能乖乖支付赎金,以对文件解密。

网上关于该类病毒的详细分析案例很多,在此不再详述。本文分享主要通过WireShark从流量分析判断勒索邮件、再进行深入分析。

0x01 截获邮件样本


通过监控某政府邮件服务器发现,近期大量用户收到此诈骗勒索邮件,邮件的发件人一般为陌生人,收件人指向明确,且带有跟收件人名称一致的ZIP附件,邮件内容一般为“请检查附件的XX,为了避免罚款,你必须在X小时内支付。”的诈骗威胁内容。

解压ZIP附件可发现病毒文件。

0x02 WireShark分析


对于邮件协议的分析,我们首先按OSI七层模型对其数据进行建模,对网络协议的每层进行分析,最后汇总其安全性。(同样适用于其它协议)

(一) 物理层分析

暂不做分析。

(二) 链路层分析

由于该流量接入点为邮件服务器边界出口,所以多为SMTP数据。该数据链路层帧格式为以太帧(Ethernet II),共14字节,前12字节表示两端的MAC地址,后两字节0x0800表示后接IPV4协议。

此层数据无异常。

(三) 网络层分析

从网络层数据开始,我们就会逐渐发现异常。当然,这个数据在网络层对我们有用的也就是源、目的IP地址。源地址10.190.3.172为邮件服务器地址,目的地址191.102.101.248 (哥伦比亚)为发件方地址。

简单做几个测试,就发现有异常:

  1. 191.102.101.248并未开放TCP25端口;

  2. 191.102.101.248与elynos.com无关;

初步判断发件人的邮箱是伪造的。

(四) 传输层分析

我们简单统计一下该数据的TCP25端口,发现在包数量等于28的附近区域,有大量不同IP发来的邮件,且字节长度也基本相等,可以初步判断大量邮箱收到差不内容的异常邮件。

提取一封follow tcpstream,可看出,也是一封勒索邮件。

(五) 会话层分析

SMTP协议在会话层一般分析要素包括:认证过程、收发关系、加密协商、头部协商等。

将一封邮件的会话Follow TCPStream,可以看出邮件的发件人是来自外部的“陌生人”。

我们将部分邮件收发关系进行汇总,可以看出虽然发着同样的勒索邮件,但其发件人地址为了躲避垃圾邮件过滤,伪造了大量的邮箱地址及域名。

(六) 表示层分析

在表示层分析要素一般包括编码和列表等,由于此邮件属于正常通信邮件,在表示层无异常因素。

(七) 应用层分析

针对此案例,应用层分析目标包括:邮件正文内容安全、邮件附件安全、是否为垃圾邮件等。

1.指向性:收件人邮箱名为:[email protected],邮件正文称呼为“dear voice5”,邮件附件名称为“voice5_*.zip”,可看出此勒索邮件为骗取点击率,进行了简单的社工。

2.邮件正文:

“Please check the bill in attachment.

In order to avoid fine you have to pay in 48 hours.”

明显的诈骗威胁内容。

3.将此邮件内容Save一下,可得到附件内容。通过分析,可确认附件为敲诈勒索病毒。(本文不详述)

0x03 勒索病毒分析


(注:本章节不全属于Wireshark分析范畴)

(一)病毒初始化文件

1)病毒文件一共是6个,其中红框中的3个文件是隐藏文件,js文件是引导用户打开的文件。为了防止杀毒软件查杀病毒,病毒文件首先是按照pe结构分开的,js命令把pe文件组合在一起,构成一个完成的bin文件。

2)组合好的病毒文件会放到c:\User\Username\Appdata\Local\temp目录下,然后后台运行。如下图红色框中

在IDA中打开bin文件。大段大段的加密数据文件。如下图所示:

(二)病毒行为

1)病毒解密还原后,才能正常执行。病毒文件经过了很多的亦或乘除等算法,通过VirtualAlloc在内存中存放一段代码,然后调用RtlDecompressBuffer进行解压,并在内存里还原代码。所有API函数都是动态调用的。下图是其中的一小部分还原数据的内容。

2)在内存解密,申请分页,并拥有执行能力。

3)病毒会在HEKY_CURRENT_USER下创建一个属于用户的key值。

4)病毒会判断系统版本:从Win2000,xp 一直到最新的Win10以及Win Server 2016;

由于我们的虚拟机是win7;所以这里判断出是win7 zh代表中国。

病毒开始构造一个连接,准备发往作者的服务器。构造如下:

Id=00&act=00&affid=00&lang=00&corp=0&serv=00&os=00&sp=00&x64=00;

很明显这是在获取系统的一些信息,包括ID号,版本号,语言等。

病毒准备提交的网址:

下面的IP地址;都要尝试连接一次。

通过wireshark截取的数据我们发现:有些IP地址的php网页已经丢失了。

除此之外,病毒尝试连接部分c&c服务器网址,部分如下:

5)如果病毒c&c服务器没有返回信息;则病毒一直处于等待状态。

6)感染文件。首先循环便遍历扫描文件。

下图是病毒要修改的文件格式:

文件名生成部分算法:

文件名被修改过程分为两部分,前半部分代表系统的key值,后半部分通过算法生成。文件名改名加密算法的局部过程,从”0123456789ABCDEF”当中随机选取一个字符充当文件名的局部。随机函数采用CryptGenRandom()

文件内容加密总体流程:

首先文件以只读形式打开,防止其他文件访问其内容,接着通过AES-128算法加密器内容,最后置换文件。完成文件加密。

文件内容:经过AES-128位算法加密。

打开文件

把加密后的数据写回文件:

然后通过API函数替换文件。

8)桌面背景被换为:

0x04 总结


  1. 此类勒索邮件标题、正文、附件内容基本相同,只是针对收件人名称稍作修改。

  2. 为躲避邮件过滤系统,发送者邮箱使用和伪造了大量不同的IP和邮箱地址。

  3. 虽然此勒索病毒最终需要通过针对附件样本的分析才能判断确认,但基于流量分析可以发现诸多异常,完全可以在流量通信层面进行归纳阻断。

  4. 随着大量比特币病毒流入国内,各种敲诈勒索行为日渐增多,对应这种病毒,我认为防范大于修复。因为比特币病毒对文件的加密算法部分相对复杂,还原的可能性较小。并且每台机器又不一致。所以,我们尽量做好预防才是根本。以下是几点需要我们提高警觉性的:(1)及时更新杀毒软件。(2)注意防范各种不明确的邮箱附件。(3)及时备份重要信息到其他存储介质。