在 2019年大部分时间里处于沉寂状态的 Emotet 僵尸网络又重新爆发了! 研究人员认为,Emotet 可能正是在这段沉寂期间进行的基础设施维护和升级,只要它的服务器重新启动并运行,Emotet 便会携全新增强型威胁函数强势回归。
Emotet感染链分析
有证据表明,Emotet背后的运营团队Mealybug已经从维护自己的自定义银行木马发展成为了其他组织的恶意软件的分销商。在过去的一两个月中,研究人员已经确定了许多组织和政府机构受到了新一代Emotet的银行木马恶意软件的影响。除了恶意垃圾邮件活动之外,研究人员还看到Emotet用于安装其他形式的恶意软件(例如MegaCortex)或部署勒索软件病毒(例如Ryuk)。MegaCortex是一只专门经由Emotet木马联网下载的勒索软件,加密文档后向被害人获取赎金。今年8月IBM发现MegaCortex在美、法、荷及加国作乱,发作后会删光用户磁盘数据。但是近日研究人员Vitali Kremez及BleepingComputer发现,这只恶意程序的新变种更为凶猛,启动后会显示一则附上黑客收款用电子邮件,奇热内文为“Locked by MegaCortex”的勒索消息,但更厉害的是,它还会变更Windows系统的登录密码。
11月初,中国国内多家企业受到Emotet银行木马邮件攻击。此次攻击主要是利用大量群发钓鱼邮件,其邮件内容伪装成各种类型的商务往来信息,包括:发票交易、收据、会议邀请等。Emotet木马运行后会收集系统信息,加密后发送至服务器,然后继续下载第三方载荷,包括Qbot,The Trick等其他木马程序。统计数据,Emotet针对国内的钓鱼邮件攻击最严重地区为广东、北京、浙江、上海等地。数据显示,近期Emotet木马针对国内的攻击呈明显上升趋势,从事进出口贸易的企业是Emotet银行木马的主要目标。
自 2014 年Emotet被发现以来,它一直被用作银行木马。在短短 5 年的时间里,Emotet 已成功演变成目前最臭名昭著的网络威胁之一但从 2018 年开始,研究人员看到它在多起大型恶意垃圾邮件(malspam)活动中被用作僵尸网络,并用于传播其他恶意软件。目前,它在全球恶意软件的排名中仍然高居前列。
Emotet是一个可执行文档,最初是作为银行木马开发的。然而,近年来,它已演变成一个更具攻击性的恶意软件传播网络。一旦目标设备被感染,它可以用来执行垃圾邮件活动或下载其他恶意软件样本。Emotet发起的攻击活动非常专业,所以签名安全查询不太可能有效。
在评估Emotet对企业造成的风险级别时,重要的是要了解,安全检测软件只是位于安全堆栈的底部,因此很难准确发现Emotet造成的攻击。
感染生命周期
Emotet主要是进行电子邮件网络钓鱼活动的,攻击时,用户将收到一封看似正常的电子邮件,内容都是关于发票,订单或未付帐单。当用户打开文档,该文档可能是许多恶意软件类型之一。然后,该文档将调用批处理脚本,然后调用PowerShell,以循环浏览多个URL,以下载Emotet有效载荷。之后,有效载荷将运行,然后继续从事攻击。
在这篇文章中,我将介绍一个邪恶文档使用Emotet感染您的计算机的进程。
恶意文档
在此示例中,文档以电子邮件的附件形式出现,该附件声称是收件人可能已经下达的大笔订单,附件名为ORDER_DETAILS_FILE.doc。
该文档由一组混淆宏构成的,这些宏在两次攻击之间似乎基本保持不变如果文档已经在Microsoft Office保护模式下打开,则文档本身使用了一点社会工程,方法是请求用户启用编辑函数,以便能够查看或编辑文档。
可以看出,文档的左上角是一个很小的文本框(由映像中的红色圆圈突出显示),它很小,几乎看起来像是屏幕上的坏点。可以在此编辑框中更改每个恶意软件感染的位置。如果要对其进行扩展,则会在cmd.exe中找到稍后运行的命令行指令。宏抓取编辑框的内容,然后调用cmd.exe,将编辑框的内容作为参数传递。
批处理脚本
命令行是批处理脚本的混淆斑点,它大量使用环境变量扩展来构建要运行的命令。这种混淆处理有两个目的:它使它很难静态分析工具找出批处理脚本尝试(这使其逃避了某些检测技术),并且还提供了一种基本但有效的方法来阻止恶意软件在非标准环境中执行,因此提供了一些附加的反分析函数。
在上面的批处理脚本(已对其进行了混淆处理)中可以看到一个示例,其中在脚本的第一行中使用了环境变量“SESSIONNAME”。展开后,此变量内容的某些字母用于构建单词PowerShell。如果环境变量设置为意外值,则批处理脚本将无法建立单词“PowerShell”,并且恶意软件将停止工作。在正常会话中,该值为“Console”,而在RDP会话中,该值则类似于“RDP- tcp #1”。这使得脚本能够非常快速地测试一个真正的用户会话是否正在运行,或者文档是否正在从RDP会话运行,这是一个恶意软件分析师可能会做的事情
PowerShell
批处理脚本最终生成一个PowerShell脚本,然后调用它。这个脚本循环遍历一个包含5个URL的列表,这些URL被劫持来尝试下载有效载荷。它遍历每个URL,直到找到一个仍然有可用有效载荷的URL,然后下载“420.exe”。研究人员发现实际的编号在不同的文档之间是不同的,但是通常exe的名称都是三位数字。在研究人员的示例中,可执行文档被下载到C:\Users\Public中,尽管在其他示例中,研究人员看到了可执行文档也会被下载到C:\users\%username%\AppData\Local\Temp。
Emotet运行进程
此时,Emotet就开始运行,它会将exe从下载位置复制并重命名到C:\Windows\SysWOW64\ reswalaska.exe。至此,Emotet就拥有了你的系统。下图显示了以上进程的全部步骤。
缓解措施
对于运行Bromium安全平台的设备来说,此类攻击会被隔离在uVM中,并在用户关闭Word文档后立即将其删除。如果安装并启用了Bromium安全平台,则不需要进行必要的修复步骤。但是,最好还是从设备上删除文档,这样可以防止文件被转移到另一台设备上。
从邮件服务器删除电子邮件也是谨慎的做法,以避免不小心将其转发给不受保护的其他用户或组织。如果用户将文件保存到本地文件系统、u盘或网络文件共享,也应该删除它。这些都不是必需的,但这将是一个好习惯。
对未安装Bromium安全平台的设备该怎么办?
建议从邮件服务器中删除电子邮件,以免将其意外转发给其他用户或组织。如果用户将文件保存到本地文件系统、u盘或网络文件共享,也应该删除它。
没有安全平台的设备应该检查Emotet有效载荷本身,它可能位于以下位置:
作为一种检测设备是否被感染的方法,可以搜索代理日志,找出恶意软件试图下载有效载荷的域。只有在已经可以访问示例以从中提取域的情况下,这才有效。对于在虚拟机内部检测到恶意软件的Bromium客户而言,这应该很容易做到,以防止它传播到不受Bromium保护的其他设备。
在我撰写此文时,以下这些域仍在提供恶意载荷,因此你应谨慎对待。
如果发现了恶意软件的迹象,最好将计算机与网络隔离并重新映像。 Emotet可用于下载其他未知恶意软件,尽管依靠来自防护软件的扫描最终会发现Emotet,但可能还要花费更多时间才能检测到Emotet提供的任何有效载荷。
如何发现Emotet的网络钓鱼活动
要发现Emotet,就要对Emotet的网络钓鱼活动的行为进行分析,并深入研究通过运行Microsoft Word文档中经过混淆VBA宏来释放有效载荷的能力。
Emotet是一个高度模块化的银行木马,具有对应的基于决策树的算法来执行指定任务。
由于Emotet具有传递混淆有效载荷并通过自升级模块扩展其函数的能力,因此它已成为针对组织进行有针对性攻击的常用有效载荷下载器。
Emotet的运营商采用了“恶意软件即服务”业务模型,该木马用于下载和传播Trickbot等其他恶意软件系列。
自从2014年成立为银行木马以来,Emotet一直发展,直到成为一个多组件恶意软件家族。多年来,它采用了高度灵活的代码库,该库现在包括以下函数:
1.使用封装程序逃避恶意软件分类;
2.使用反分析技术;
3.间接执行有效载荷以破坏基于流程链的分析;
4.通过启动有效载荷即服务或窃取管理员凭据来行权限升级;
5.跨攻击阶段的混淆代码;
6.使用多种持久性机制;
7.加密的导入和函数名称;
8.代码中的多个JMP指令会混淆反向工程工具;
9.自我升级模块;
10.在受到威胁的网络内肆意传播的能力;
11.通过从网络浏览器和电子邮件客户端窃取通讯录和凭据,使受感染主机能够发送网络钓鱼电子邮件活动;
恶意行为分析
在本文中,研究人员将深入研究其通过运行Microsoft Word文档中混淆VBA宏来删除有效载荷的能力。在下一篇文章中,研究人员会举一个Emotet示例的二进制进行分析,探索恶意软件是如何工作的。
在这篇文章中,研究人员从Bromium 安全平台隔离的近期攻击中获得了一个样本。
Receipt (1).doc
MD5 097acffec441bdcd69ff3c56fdf0f615
SHA1 7049bbf580e598cc6bf111a0670f0d25a8ccd6c0
SHA256 6a1a7e4618a1803fce47331915610ffacc49abf261ee5783ef409e20b78c8e6d
恶意下载程序
样本中的Emotet攻击活动以超链接的形式传播,该超链接下载了Microsoft Word文档。打开后,文档会提示用户单击“启用内容”。默认情况下,如果文档包含宏或ActiveX控件,Microsoft Word会以安全警告提示用户。通常情况下,恶意软件作者利用社交工程诱骗用户单击“启用内容”按钮,以进行下一阶段的攻击。
在本例中,启用内容会使文档执行VBA AutoOpen宏。正如Emotet VBA脚本中所预期的那样,字符串被严重混淆,并包含许多零散的字符串。这是一项众所周知的技术,它使静态分析引擎更难检测恶意内容。
研究人员将遍历脚本以找到有趣的模式并对代码进行混淆处理:
混淆AutoOpen宏
变量‘dBCwQQZ’用字符串 ‘winmgmts:Win32_Process’定义
变量' TCXD_U '是用字符串' GetObject(winmgmts:Win32_ProcessStartup) '定义的
变量 ‘jDD_UwDB’由字符串 ‘GetObject(winmgmts:Win32_Process).Create’定义
将 ‘GetObject(winmgmts:Win32_ProcessStartup).ShowWindow’ 的参数设置为0
构造字符串‘powershell -e’
可以看到,VBA脚本引用了WMI类winmgmts:Win32_ProcessStartup和winmgmts:Win32_Process。执行时,autoopen() Sub使用这些WMI类启动PowerShell实例,该实例在后台运行Base64编码的命令。
间接执行
在Bromium控制器中查看了Base64编码的PowerShell命令
由于宏使用WMI来运行PowerShell,所以进程在后台使用WmiPrvSe.exe (WMI提供程序主机)启动。通过以这种方式执行PowerShell,恶意软件作者可以避开基于进程链的检测。
正如研究人员有关Ursnif使用的逃避技术的文章中所解释的那样,这是一种使用合法Windows进程从宏启动PowerShell的已知技术。Bromium检测到这种间接执行的类型,并将所有相关的进程创建归因于负责运行恶意VBA代码(在本例中为WINWORD.exe)的原始可执行文档。
混淆PowerShell命令
对Base64编码的字符串进行解码后,将产生如下图所示的输出。使用相同的字符串连接和大小写不匹配技术来混淆该命令,从而使分析人员和扫描引擎更难以理解。
解码后的字符串包含一个‘+’ 字符(用于连接字符串)和大小写混合字符
只需删除所有‘+’ 字符即可显示反混淆命令:
删除所有‘+’字符后的命令输出
上面的PowerShell命令展开并解码Base64编码的字符串,并将其作为数据流读取,直到到达字符串末尾为止。然后,它使用Invoke-Expression cmdlet的 ‘iex’ 别名在内存中运行结果输出,这是恶意软件作者执行命令的另一种流行技术。为了实现这一目标,它使用了变量$Verbosepreference,其中包含字符串 ‘SilentlyContinue’。从字符串中选择第一个和第三个字符(‘i’ 和 ‘e’),然后将其与‘X’连接起来以形成字符串 ‘ieX’。
字符串 ‘ieX’的形成,即Invoke-Expression cmdlet的别名
混淆PowerShell脚本
经过去混淆处理的PowerShell脚本首先使用'@'字符作为分隔符来拆分分配给变量$XXQCZAxA的字符串,然后进入ForEach循环,该循环迭代所得的URI数组,以使用Net.WebClient将可执行文档下载到受害者的文档系统中。类。该脚本使用环境变量$ env:userProfile来获取当前登录用户的用户配置文档目录。下载的文档将以文档名“ 15.exe”保存到受害者的用户个人资料目录(例如C:\ Users \ [Username])。如果下载的文档大小大于40KB,则脚本将退出ForEach循环,并使用Invoke-Item cmdlet运行“ 15.exe”。
经过反混淆处理的PowerShell命令
HTTP GET请求
从下面的截图中可以看到,PowerShell命令发送了一个HTTP GET请求,以从 hxxp://dautudatnenhoalac[.]com/wp-admin/DYAsI中检索第一阶段的Emotet可执行文档。来自网络服务器的响应指示所提供的文档名为 ‘s17zjCTuWfNF.exe’,并且有效载荷是PE格式的文档,如该文档开头的魔术字节0x4D5A('MZ')的ASCII表示所示。
HTTP GET请求,该请求下载第一阶段的Emotet有效载荷
恶意行为分析
下载有效载荷后,PowerShell运行’15.exe’ (PID: 2600)。然后,该进程从同一位置启动另一个 ’15.exe’ (PID: 2412) 实例。
通过PowerShell处理启动15.exe
’15.exe’ (PID: 2412) 的第二个实例将其自身复制到名为 ‘ipropmini.exe’的C:\Windows\SysWOW64 目录。然后,它创建一个服务,其中BinaryPath指向 C:\Windows\SysWOW64\ipropmini.exe,而DesiredAccess为18。DesiredAccess'18'授予对该服务的SERVICE_CHANGE_CONFIG和SERVICE_START访问权限。
创建服务以建立持久性
由于多种原因,通过Windows服务启动二进制文档是一种流行的技术。首先,它破坏了基于流程链的检测,其次,在服务启动时,即使二进制文档不是有效的服务可执行文档,也始终会执行该二进制文档。
可执行文档‘ipropmini.exe’ (由services.exe启动)产生自己的另一个实例,然后从Internet下载下一阶段的有效载荷。然后,可执行文档在第一个Emotet进程(‘15.exe’)上执行Process Hollowing,进而写入修改后的代码。
第一个Emotet进程‘15.exe’中的进程为空 (PID: 2600)
如果让Emotet继续运行,它将从远程服务器下载更多的有效载荷,生成多个进程并收集系统信息,然后通过加密的通道将其发送到命令与控制(C2)服务器。
在Bromium控制器中查看进程交互图
在Emotet感染生命周期中引发攻击
HTTP POST请求
Emotet使用HTTP POST将与系统相关的信息发送到C2服务器,并接收来自服务器的进一步命令和有效载荷作为响应。
对C2服务器的HTTP POST请求
IOC
https://www.bromium.com/emotet-analysis-catch-me-if-you-can/
https://www.bromium.com/emotet-technical-breakdown/