2021年11月,由欧洲刑警组织捣毁的Emotet僵尸网络卷土重来,以极快的速度恢复且初具规模,重新对外提供恶意软件分发服务。根据监测,近几个月来Emotet感染活动非常活跃,不断升级病毒组件,并针对日本地区进行了重点攻击,也由此波及了部分关联的中国企业。微步情报局对Emotet僵尸网络的背后团伙、攻击事件及手法、资产通信进行了深入的分析,目前主要的结论如下:
团伙画像:Emotet僵尸网络主要通过伪装成收款单、节日祝福、新冠疫情通告等内容的钓鱼邮件进行传播。其攻击的地区遍布全球,对各种制造、互联网、金融等行业均有涉及,近期我们也观测到其针对国内政企单位的大范围攻击活动,值得警惕。
技术特点:Emotet木马载荷使用WordPress失陷站存储,且木马回连的C2服务器同样为失陷站点,因此从网络资产维度难以追踪到攻击者的真实身份。对抗检测的技术较为成熟:样本层面加壳或使用混淆器混淆,且二进制文件通过随机字节改变哈希值,流量层面使用HTTPS协议加上自定义的加密信道进行通信。
危害:受Emotet感染的机器会加入僵尸网络,定期接收任务执行,用于窃取本地账密,邮件和发送钓鱼邮件,代理和下载执行其他第三方银行木马、勒索软件等功能,造成企业敏感信息泄露,甚至造成内部范围传播并勒索,危害很大。
微步情报局通过对该僵尸网络通信协议的详细分析并进一步依赖于自有的网络空间测绘系统对全网进行的分析,累计发现了上千台Emotet活跃的主控服务器,位于美国的最多,德国、法国次之。
微步通过对相关样本、IP和域名的溯源分析,提取多条相关IOC,可用于威胁情报检测。微步云沙箱、互联网安全接入服务OneDNS等均已支持对团伙的检测。OneDNS可以实现自动拦截阻断,通过在DNS解析环节碰撞情报,在C2服务器反连时直接拦截恶意域名,避免真实的攻击危害发生,保护员工安全上网。2.1 团伙画像
团伙画像 |
特点 | 描述 |
平台 | Windows |
攻击目标 | 从最初的只针对银行客户,转变为攻击制造、互联网、金融、科技等行业 |
攻击地区 | 从最初的欧洲地区,扩展到亚洲、美洲地区 |
攻击目的 | 刚出现时作为银行木马,窃取客户银行登录凭证,直接获得财产收益。现在构建僵尸网络,直接售卖肉鸡给其他黑客或散播银行木马、勒索病毒获利 |
攻击向量 | 钓鱼、漏洞、爆破 |
武器库 | Emotet木马,Nirsoft Mail PassView,WebBrowser PassView |
2.2 攻击流程
该团伙的完整攻击流程和运转模式如下:
2.3 技术特点
Emotet木马具有成熟的免杀方案,对于主模块和下载执行的子模块均会添加随机字节改变样本哈希。以两次下发的同一子模块对比为例:
对于会以文件形式落地的样本,在外层使用混淆器多层加载真正的payload,达到免杀的目的。
对于主模块payload以及子模块使用的API均通过函数名称hash值获得。
使用的字符串均异或加密存储,且在使用后会立刻释放对应的明文内存。
在二进制代码特征上使用OLLVM控制流平坦化以及大数运算混淆改变特征,使得基于代码特征检测更加困难。
2.4 资产特点
使用WordPress失陷站存放Emotet主模块载荷;
使用失陷站点作为C2服务器,只使用IP地址+端口的形式进行访问,不使用域名,常在80、443、8080等端口架设HTTPS服务,证书为非法证书且不是用于网页服务;
2.5 历史变迁
Emotet家族木马在2014年首次出现,开始时作为银行木马,攻击德国银行客户,通过窃取的银行登录凭证,直接窃取受害者财产。后来经过黑客组织的长期运营,由钓鱼邮件散播的木马构建了庞大的僵尸网络,盈利方式逐步转变为直接售卖肉鸡和提供威胁分发服务。随着木马对抗技术的升级和僵尸网络的不断扩大,Emotet逐渐演变成为最具威胁的木马,影响的地区遍布全球,分发的Trickbot银行木马、Ryuk勒索病毒等破坏了正常的生产生活,也造成巨大的财产和经济损失。在2021年1月,欧洲刑警和德国,乌克兰等多个国家联合组织行动,捣毁了Emotet的基础网络设施,宣告运营7年之久的僵尸网络结束。然而平静仅持续了10个月左右,Emotet借由Trickbot木马卷土重来。
安全研究人员在研究Emotet木马时发现,大量的木马样本具有相同的功能代码,但根据内嵌的通信密钥可以将木马划分为不同的代际版本(Epoch)。不同代际的木马会使用不同的通信密钥,各自维护着自身的C2服务器列表,理论上彼此之间不交叉重叠,并且在下发任务和更新维护方面会有所区别。截至目前,总共有5个代际的木马,在被欧洲警方捣毁前活跃的木马版本为Epoch1-Epoch3。3.1 基本信息
Emotet主要通过钓鱼邮件传播,钓鱼邮件的内容一般为收款单、节日祝福、新冠疫情通知等。
当受害者打开附件中的恶意文档或正文中的下载链接下载的文档后,便会下载安装Emotet木马。Emotet执行后会连接C2服务器上线,请求任务执行。上线后接收到的第一个任务模块便是注册模块(信息收集模块),负责将受害主机的系统信息,进程信息和域信息上传至服务器。主机信息上传成功后,受害主机正式成为僵尸网络的一个节点,定期发送请求,接收执行服务器下发的模块。目前下发的模块有账密窃取模块、垃圾邮件发送模块、代理模块以及购买分发服务黑客的第三方模块等。木马整体的执行流程如下图所示:
3.2 详细分析
钓鱼邮件的附件中或链接指向的宏文档一般为欺骗性的提示内容,告诉用户文档处于保护视图,如果想要查看或编辑,需要点击启用内容按钮。一旦用户点击启用内容或者用户的Office软件默认启用宏,那么文档中的恶意宏代码便会执行。下面以一个带有MS Excel 4.0宏表的XLS文档为例:
宏代码被拆分在不同的工作表中,并将颜色设置为白色来隐藏。执行时使用FORMULA函数把打散的代码重新拼接到宏表的单元格中,按照从上到下的顺序依次执行。宏脚本主要负责从存储Emotet载荷的失陷站上下载Emotet动态链接库(DLL文件),使用Regsvr32加载执行。3.2.1 C2和通信协议
Emotet主模块以及下发的子模块通信的C2地址均异或加密硬编码在各自的文件中,在请求时,依次遍历C2列表请求,直到请求到存活的C2为止。
Emotet主模块及下发的子模块均相同的协议(HTTPS + ECDH(NIST256p))与C2服务器进行通信,即在HTTPS协议的基础上又做了一层加密。病毒作者对该协议封装良好,使用该协议时,只需要提供请求的命令号以及对应的数据,即可完成整个通信过程。
样本中内嵌了两个异或加密后的ECC公钥ECK1、ECS1,分别用于生成通信密钥和校验回包数据。
客户端产生自己的ECC密钥对,使用私钥和ECK1产生协商密钥,协商密钥通过SHA256哈希算法衍生出用于数据加密的AES通信密钥。同理,C2服务器端在接收到客户端的公钥后,也可以通过公钥和ECK1对应的私钥产生相同的通信密钥。客户端要发送的原始数据包含两个部分:请求的命令号和对应的数据,协议第一步首先对命令号和数据进行打包。将要发送的原始数据计算SHA256,并拼接命令号,得到要发送的命令数据,那么C2服务器端在收到后就可以根据哈希值校验数据的完整性。命令数据的结构及实例如下:
将得到的命令数据用通信密钥使用AES-CBC算法加密得到加密命令数据,并将客户端公钥拼接在头部,在尾部添加随机字节,生成最终请求的数据(随机字节特殊处理,可以通过尾部找0x00后对齐字节的方式去掉)。请求数据的结构及实例如下:
生成请求数据后,使用HTTPS协议向C2服务器的随机名URI发送请求,并且根据数据大小不同选择不同的请求方式。如果数据包小于1KB,则将数据base64后放到HTTP头中的Cookie字段,以GET请求方式进行传送。
当数据大于1KB将数据伪装成表单提交文件的方式,以POST请求方法发送请求。发送请求后,会接收到的C2服务器的针对性的回应数据。首先使用通信密钥解密,并使用ECS1密钥对数据进行校验,校验通过后不同模块会根据自己的逻辑对数据进行处理,如解析其中的子模块,垃圾邮件信息等。数据结构及实例如下:
3.2.2 主模块分析
Emotet主模块成功执行后,根据自身是否为管理员会将自身转移到Systemx86(System32或SysWow64)或%APPDATA%或随机目录下,创建服务运行或启动新进程执行。
转移后的Emotet启动执行后会收集主机基础信息定时向C2发送上线请求(请求命令号为1),包括Bot标识名、模块路径hash、当前模块的编译时间,系统版本等。另外在Emotet接收执行模块后,在下次的请求中会带入这些模块的ID号,用于确认模块执行成功,从而C2推送其他新的模块执行。上线数据的结构及实例如下:
发送上线请求后,会收到要执行的模块,并根据要求的执行方式加载执行。模块数据结构及实例如下:序号 | 加载方式 |
1 | 下载到当前目录下的随机名文件.dll,使用regsrv32 以当前进程句柄和文件目录为参数加载执行 |
2 | 使用当前的密钥和Bot标识名作为参数内存加载执行 |
3 | 下载到当前目录下的随机名文件.exe,创建进程执行 |
4 | 下载到当前目录下的随机名文件.exe, 使用当前用户token执行 |
5 | 内存加载执行DllRegisterSever导出函数 |
6 | 下载到前目录下的随机名文件.dll,使用regsrv32加载执行 |
3.2.3 子模块分析
主模块会下载属于自身的多个功能子模块,都以序号2的方式加载执行,完成Bot注册,窃取邮箱账密、浏览器账密、邮件内容、发送垃圾邮件等功能。Epoch5代际木马下发的子模块列表如下:ID | 名称 | 功能 |
77 | 信息收集模块 | 上传进程列表、系统信息、网络信息、域信息 |
18 | Nirsoft Mail Pass Viewer模块 | 窃取Outlook,Thunderbird,Gmail等邮箱客户端中账密信息 |
| Nirsoft WebBrowser Pass View模块 | 从IE、火狐、谷歌等浏览器中窃取保存的账密信息 |
| Outlook通信地址收集模块 | 从本地Outlook收件箱和发件箱中收集联系人名称和邮件地址 |
| Outlook邮件内容收集模块 | 从本地Outlook收件箱中收集邮件内容 |
| Thunderbird通信地址收集模块 | 从本地Thunderbird收件箱和发件箱中收集联系人名称和邮件地址 |
| Thunderbird通信地址收集模块 | 从本地Thunderbird收件箱收集邮件内容 |
| 垃圾邮件模块 | 接收C2下发的垃圾邮件任务,给指定目标发送带有Emotet病毒的钓鱼邮件。 |
(1)信息收集模块
当一个全新的主机首次发送上线包后,将会接收到信息收集模块,该模块会收集比上线包更详细的主机信息,包括当前进程列表、系统的详细信息(cmd命令systeminfo)、网络信息(cmd命令ipconfig /all)和域信息(cmd命令nltest /dclist:)等。并且只有在C2接收到该信息后,Bot才算注册成功,否则C2只会一直返回该模块,而不会下发其他模块。主机数据的结构如下:(2)Nirsoft Mail PassView模块样本外层负责加载执行内嵌的命令行版的Nirsoft Mail PassView模块,窃取Outlook,Thunderbird,Gmail等邮箱客户端中账密信息。使用scomma命令行参数将账密以csv的格式导入到文件中,读取后压缩发送至C2服务器。
(3)Nirsoft WebBrowser PassView模块样本外层负责加载执行内嵌的命令行版Nirsoft WebBrowser PassView,用于从IE、火狐、谷歌等浏览器中窃取保存的账密信息。使用scomma命令行参数将账密以csv的格式导入到文件中,读取后压缩发送至C2服务器。
(4)Outlook通信地址收集模块
样本外层负责加载执行内部Outlook通信地址收集模块,用于收集发件箱和收件箱中的联系人名称和对应的邮箱地址,完成后写入到临时文件中。然后读取临时文件,将收集到的内容发送至服务器。
样本外层负责加载执行内部Outlook邮件内容收集模块,用于收集收件箱中的邮件内容,完成后写入到临时文件中。然后读取临时文件,将收集到的内容发送至服务器。该模块会遍历Thunderbird邮件客户端存储邮件的%APPDATA%\Thunderbird\Profiles目录,解析INBOX收件箱和Sent已发送邮件,提取联系人名和邮箱地址,发送至服务器。
该模块会遍历Thunderbird邮箱存储邮件的%APPDATA%\Thunderbird\Profiles目录,解析其中的INBOX收件箱文件,提取发件人,收件人以及邮件内容,发送至服务器。
该模块向C2服务器请求垃圾邮件任务,服务器返回曾经窃取的邮件账密,目标邮箱,垃圾邮件内容等信息。
接收到任务数据后,该模块会遍历测试C2服务器返回的邮箱账号是否可用。找到可用的邮箱后,组装钓鱼邮件,将垃圾邮件发送给目标受害者。4.1 版本信息
对比在欧洲警方捣毁前的E1-E3版本的木马样本来看,现在活跃的E4-E5版本的样本基本延续使用了前版本的多处代码,比如基本混淆方法、字符串加密算法、API名称Hash算法、上线信息等与之前的一致。修改最为明显的是木马通信协议的改变,在E1-E3版本时使用RSA+AES的方式加密通信的内容,而E4-E5版本选择使用ECC+AES的方式进行。对于子模块的加载方式,Emotet也做了调整,新增了两种针对DLL形式载荷的加载方式。
4.2 拓线信息
通过微步空间测绘技术可以得到全球的Emotet C2服务器列表,C2主要集中在欧州、美州和东南亚地区,这也与Emotet攻击的主要地区相吻合。具体分布如下图所示:Emotet C2服务器所在的运营商主要集中在DigitalOcean、OVH SAS、GMO-Z.COM和Hetzner Online GmbH 。Emotet架设回连控制的服务主要分布在8080和443端口上。因此Emotet在使用失陷站点(通常Web服务会占用443,80端口)架设服务时,会优先选择443端口。如果443端口被原有的Web站点占用,则选用8080端口。同样如果8080端口被占用,则选择7080端口,以此类推,直到找到可用端口。具体分布如下图所示:
4.3 其他信息
Emotet是长期活跃的木马家族,会不定期升级模块和变换攻击手法。在分析的过程中,Emotet就将所有的模块从原来的32位升级到了现在的64位,这使得木马样本的检出变得更加困难。同时Emotet还将钓鱼文档的附件内容由Word或Excel宏文档转变成CMD命令的快捷方式(LNK文件),来执行powershell脚本,下载执行主模块payload。这样做可以使得木马的成功加载不依赖用户点击执行宏,只要用户双击附件中的快捷方式便可成功安装木马。
5.1 威胁处置
对于已经感染Emotet的机器,根据进程与C2服务器的网络连接或可疑的Regsvr32进程(命令行中的启动文件指向%APPDATA%或Systemx86目录下的随机名文件)找到木马进程并将其结束。删除木马进程对应的木马文件以及用于持久化驻留的开机启动项或服务项。
由于木马会盗取本地邮箱和浏览器中的账密,对于曾经在本地登录并保存的账密应该立即修改密码。排查本地邮件客户端中与自身有邮件往来的联系人,有很大概率这些账户也收到了类似的钓鱼邮件,感染了木马。
在清理完Emotet木马的组件后,需要查找其他可能存在的Emotet分发的病毒威胁,如Trickbot、Qakbot、CobaltStrike木马等。
5.2 安全加固
安装可信的EDR或杀毒软件,并保持病毒库更新,确保能够第一时间查杀病毒文件或防御攻击行为。
定期更新系统和常见的办公软件,修补已知的安全漏洞。
谨慎点击电子邮件中的附件或可疑链接,如果遇到邮件附件文档中有提示启用内容或启用宏的提示,不要选择启用,而是删除文件和对应的邮件,或将文件提交安全管理员处置。
对于需要密码登录的账号(如邮箱,网络平台,网上银行等),选择使用强密码并定期更新。如果对应平台支持,最好开启双因素身份认证。如果账号出现未知的异地登录,说明账密或其他凭证信息已经泄露,应该立即修改密码或冻结账号。
1. 内容转载,请微信后台留言:转载+转载平台
2. 内容引用,请注明出处:以上内容引自公众号“微步在线研究响应中心”
点击下方,关注我们
第一时间获取最新的威胁情报
文章来源: http://mp.weixin.qq.com/s?__biz=Mzg5MTc3ODY4Mw==&mid=2247495635&idx=1&sn=911ca0c4f198cabd2632f6193e68aa3b&chksm=cfca8cc7f8bd05d1af573aa164b142646f19b0497d564f09154d2cb1ca2c703bfa7f54260545#rd
如有侵权请联系:admin#unsafe.sh