全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程

admin 2021年4月30日01:17:48评论60 views字数 4135阅读13分47秒阅读模式

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程

点击上方 蓝字 关注我们


近日,僵尸网络Emotet终于“自我毁灭”。这个自2014年出现的病毒,当时还是一个仅用于窃取财物数据的银行木马,在7年的时间里,演变成一个被全球通缉的僵尸网络,于今年1月被欧洲刑警组织捣毁,其“自毁模块”也于4月25日已生效。
 
事实是,近几年来,Emotet通过不断更换外层混淆器,调整自身的代码逻辑和更新C&C服务器,疯狂的与安全软件进行对抗。仅在去年7月,Emotet通过传播钓鱼邮件窃取银行账户并在目标网络内部传播,短时间内袭击了全球5%的企业和组织,破坏力极其之大。美国国土安全部曾公开表示:“Emotet对州、地方、地区各级政府、私有部门和公共部门产生影响”。
 
全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程

对此,火绒工程师深度分析并起底Emotet与安全软件的对抗过程,并发布专业分析报告,以此作为重要参考依据,应对未来出现的其他病毒家族样本。报告还原了Emotet具体执行流程;分析梳理了Emotet通过更换外层混淆器和内层恶意代码,在各阶段对抗安全软件的手段;同时还深入剖析了Emotet同源样本——Cridex。欢迎点击下方链接查看详细的报告内容。

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
查杀图
 
尽管在全球范围内,Emotet将成为过去式,但是依旧有其他僵尸网络家族层出不穷,给社会带来了极大损失和影响。黑客利用僵尸程序,感染庞大的网络平台,并有针对性的发起各式各样的攻击行为,或造成大量机密和个人隐私泄漏,或导致整个基础信息网络瘫痪,甚至从事网络欺诈等其他违法犯罪活动。

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
僵尸网络形成过程图
 
根据火绒处理过的有关僵尸网络的案例,除了Emotet之外,还有Qakbot,Trickbot等病毒攻击的情况,由于僵尸网络攻击往往呈现大面积攻击态势,且擅于利用横向渗透等方式造成更大的影响,对企业用户危害更大。为此,火绒在最近公测的企业版2.0中上线了【僵尸网络防护】功能,可以帮助用户拦截“僵尸程序”执行远程命令,从而阻止网络黑客对终端设备的控制。
 

附详细分析报告:
 

一、详细分析

 
通过我们分析发现,Emotet木马病毒主要通过钓鱼邮件进行传播。钓鱼邮件中会将恶意文档(通常为doc、docx、xls、xlsx等)伪装为交易发票等重要信息,从而诱导用户打开。当用户打开附件中的恶意文档并启用宏后,便会感染病毒,成为僵尸网络中的一个节点。具体病毒执行流程如下图所示:

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
病毒执行流程图



恶意文档



钓鱼邮件中带毒宏文档执行后,主机会向C&C服务器发送请求,下载执行真正的Emotet木马可执行程序。加载执行Emotet木马的方式会根据木马的形式不同而不同,通常与宏病毒中的代码配合完成加载(比如动态库形式的木马需要用rundll32加载执行)。在我们举例的Emotet宏文档病毒代码中,会通过命令行启动执行带命令行的powershell,依次尝试从几个不同的C&C服务器下载动态库形式的木马模块,如果下载成功则使用rundll32加载执行。相关现象及代码,如下图所示:


全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
带毒宏文档

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
启动带命令行的powershell

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
powershell下载执行木马

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
启动powershell下载执行木马模块



Emotet外层混淆器



Emotet木马模块的外层为混淆器,用于对抗分析和杀软查杀。随着Emotet病毒的长时间的演变,外层的混淆器也在不断进行变化。从对Emotet家族的样本分析来看,外层混淆器具有阶段性特征,但每个阶段之间并没有直 接的演化关联。并且当对外层混淆器特征进行样本查询时,发现存在不同家族使用相同混淆器的情况,因此猜测病毒使用的混淆器可能不是Emotet团伙自身维护。在各阶段的混淆器中存在常见的对抗虚拟沙盒的手段,如冷门API调用, 检查具体函数实现等。相关代码,如下图所示:


全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
冷门动态库和函数

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
检查具体函数实现

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
将解密内层PE代码放在动态库导出函数中

病毒混淆器一般分为2-3层, 最外层解密执行shellcode, shellcode解密加载最终的PE执行,或者是中间有多层shellcode多次加载的情况。同时加载PE的方式也有直接内存加载执行或者创建新进程注入等方式。下面就几个明显的阶段性混淆器进行简单说明:

1.简单内存加载
最开始时混淆器有2层, 外层解密并执行shellcode,shellcode负责加载执行内层的PE文件。具体代码,如下图所示:

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
加载执行

2.多层shellcode注入加载 + 环境检测
这个阶段的混淆器总共有3层,外层的MFC混淆器解密执行第二层shellcode,第二层shellcode解密执行第三层shellocde,第三层shellcode检测执行环境(检测虚拟机,沙箱,关闭微软防火墙服务等)并将最终的PE以创建新进程注入的方式加载执行。具体代码,如下图所示:

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
检测环境并将PE注入执行

3. 控制流在多个内存区域间跳转
这个阶段的混淆器较为复杂,且持续了很长一段时间。最外层的混淆器解密并加载执行子PE,子PE比较特殊,文件以0x10字节大小对齐, windows无法直接加载执行。子PE加载执行原始的PE文件,原始的PE文件经过特殊处理,病毒代码片段分布在两个部分,最终加载完成后,病毒的执行控制流会在三个内存区域跳转(其中一个为垃圾代码段)。相关代码,如下图所示:

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
控制流在多个内存区域间跳转

4. 简单内存加载+垃圾指令混淆
最新版本的混淆反而没那么复杂,只有简单的内存加载执行逻辑,但是会在指令之间插入一些垃圾API调用或者垃圾汇编代码,从而改变病毒的二进制特征,对抗特征查杀。具体代码,如下图所示:

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
使用垃圾指令或调用混淆



Emotet内层恶意代码



通过对病毒不同变种内层PE进行分析发现,不同于外层混淆器,内层PE的混淆有一个明显演变的过程。下面将其简单分为3个阶段进行说明:

1. 没有混淆
病毒所使用的字符串均以明文的方式存储,所调用的API均为正常静态导入。具体如下图所示:

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
病毒使用的字符串和API均未混淆

2.API动态获取、字符串加密
病毒对使用的API以计算hash值的方式遍历内存加载的模块与其导出函数的名称,通过比对存储的hash值,从而得到对应的API函数地址。病毒对使用的字符串进行异或加密存储,在每次使用时,分配空间解密使用。具体如下图所示:

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
病毒只对使用的导入函数进行混淆,字符串依然明文存储

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
导入函数和字符串均混淆

3. 控制流平坦化和大数运算混淆
在原有API动态获取和加密字符串的基础上,病毒使用控制流平坦化和大数运算进行混淆。这使得相同的代码编译得到的二进制特征各不相同,从而增大安全软件的检出难度,阻碍分析人员对病毒功能逻辑的分析。

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
控制流平坦化使逻辑难以分析

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程

大数运算混淆改变二进制特征

Emotet木马虽然不断更新演变,更改病毒行为特征和更新内外层混淆手段,但其主要功能基本没有变化。Emotet的主要功能为下载执行恶意模块,其中包括自身的更新模块和其他病毒模块(Qakbot、Trickbot等)。病毒在首次启动时都会将自身转移到其他目录(APPDATA或SYSTEM目录),然后添加转移后的病毒开机自启从而驻留。开机自启的方式有创建注册表Run项,在STARTUP目录创建自身快捷方式、以服务启动和添加计划任务启动等。病毒运行后会与C&C服务器建立连接,发送上线信息并接收服务器端传来的恶意模块。病毒与C&C服务器之间的通信均为加密通信,加密算法从开始的RSA+RC4,后面转变为RSA+AES。对于从病毒服务器端传来的恶意执行模块,开始是病毒将模块存储在注册表键值中,并通过检测注册表的变化来加载执行下发的模块。后期,病毒可以通过解析数据包中的控制信息选择以不同的方式加载执行,可以直接内存加载、创建文件添加开机启动或计划任务方式启动等。具体相关代码,如下图所示:

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
导入RSA公钥并生成通信AES密钥

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
开始时接收的文件存储在注册表中

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
接收文件加载执行

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
通信的加密算法发生变化

二、同源样本分析


通过同源性分析发现, Cridex与Emotet的恶意代码中存在诸多相似代码,所以可以推断Cridex和Emotet系为同源样本。Cridex的首次出现时间为2011年,Emotet的首次出现为2014年,我们根据样本的出现时间和同源性推断,Cridex可能为Emotet的前身。相关同源性代码,如下图所示:

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
同源性代码(1)

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
同源性代码(2)



外层混淆器



在我们溯源到的样本中,Cridex所使用的外层混淆器主要代码逻辑与Emotet混淆器非常相似,且用于解密内层原始PE的shellcode主要代码逻辑对比,如下图所示:

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
最外层混淆对比

在溯源到的样本中,Cridex和Emotet的内层混淆代码(我们暂且称上述代码解密执行的shellcode部分为内层混淆)相似度极高。由此可以得知,Cridex与Emotet所使用的混淆器存在一定的相似性。内层混淆代码对比,如下图所示:

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
内层混淆代码对比



内层恶意代码



Cridex内层恶意代码部分基本不存在混淆代码,相较于Emotet来说混淆程度较低。Cridex内层恶意代码功能包括:通过hook浏览器和Explorer的方式,根据远程服务器下发的窃取策略,盗取用户凭证、用户邮箱登录用户名及密码、FTP登录密码、用户浏览器数据等信息,或根据C&C服务器下发的策略任意修改用户的HTTP请求内容。相关关键代码,如下图所示:
 
全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
窃取用户邮箱、FTP账户密码

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
将窃取到的账户、密码拼接到回传数据中
 
全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
收集用户浏览器数据

Cridex作为Emotet的前身,其病毒功能较为单一。虽然Cridex病毒的C&C服务器可以任意下发用于信息窃取的相关配置,但是该病毒只能用于窃取用户的关键账号、密码信息。而Emotet从其发展而来,不再执行特定的恶意攻击,而是成为了网络威胁的分发平台,通过散播其他病毒威胁获利。Emotet曾分发过Trickbot,Ryuk等病毒,进而对互联网环境造成了更加广泛的安全风险。

三、附录


经过长时间追踪,火绒共捕获数百万Emotet家族相关样本,病毒hash仅以部分样本hash为例。病毒hash,如下图所示:

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程


全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程

扫码二维码

获取更多精彩

火绒安全实验室

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程

全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程
分享、在看与点赞都在这儿
点下给小编加点料
全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程

本文始发于微信公众号(火绒安全实验室):全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月30日01:17:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   全球最大僵尸网络自毁 火绒起底Emotet与安全软件对抗全过程http://cn-sec.com/archives/362687.html

发表评论

匿名网友 填写信息