欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

关于Emotet变种的深入分析(二)

来源:本站整理 作者:佚名 时间:2017-05-20 TAG: 我要投稿

一、背景
本文是FortiGuard实验室对Emotet最新变种深入分析的第二篇文章。在第一篇文章中,我们分析了如何绕过服务端的反调试和反分析技术,从C&C服务器上下载3~4个恶意模块(.dll文件)。在第一篇中,我们只分析了其中一个模块(我将其命名为“module2”)。在这篇文章中,我们会分析其他模块的工作流程。
二、从微软Outlook PST文件中窃取邮件地址
正如我在第一篇文章中介绍的那样,我们正在分析的第一个模块(我将其命名为“module1”)在某个线程函数(ThreadFunction)中完成加载,模块的主要功能是读取PST文件,遍历所有的Outlook账户。PST文件是微软Outlook中个人文件夹所对应的文件,保存了用户的电子邮件信息、日历、任务以及其他项目。PST文件通常位于计算机中的“Documents\Outlook Files”目录,如图1所示:

图1. PST文件
微软提供了一套名为MAPI(Microsoft Outlook Messaging API,微软Outlook消息API)的API函数,开发者可以使用MAPI来处理PST文件。module1中使用了MAPI。
一旦module1文件运行起来,它会创建一个临时文件,用来存储已窃取的Outlook相关信息,包括Outlook版本信息、电子邮件地址等。接下来module1会加载某些MAPI函数。module1加载和使用MAPI的方式如图2所示。

图2. 加载MAPI函数
接下来,该模块会根据计算机上的Outlook账户,读取所有的PST文件,遍历每个账户的每个文件夹中(如收件箱、已删除邮件、垃圾邮件、已发送邮件等)带有未读标识的所有邮件信息。该模块会窃取每封未读邮件中的发件人姓名和邮件地址。Facebook发给我的一封通知邮件如图3所示:

图3. 未读邮件示例
对于图3所示的这封未读邮件,module1窃取的具体信息如图4所示。其中“Facebook”代表的是发件人名字,而“notification+kr4yxeragnmn@facebookmail.com”代表的是发件人邮箱地址。

图4. 保存在内存缓冲区中的已窃取的邮件信息
正如我之前提到的,已窃取的数据会保存在一个临时文件中,本例中,该文件名为“AE74.tmp”。当module1准备加密已窃取的信息并将该信息发往服务器时就会读取这个文件。加密前的数据如图5所示,该数据读取自“AE74.tmp”文件。

图5. 加密前的数据
你可以看到,这个数据中包含Outlook版本以及已窃取的邮件信息。加密完成后,module1会通过POST请求将该数据发往C&C服务器。WireShark抓取的对应报文如图6所示。

图6. 发往C&C服务器的加密数据
三、使用C&C服务器模板发送垃圾邮件
这是Emotet恶意软件四个模块中最大的一个模块(我将其命名为“module4”)。该模块的主要功能是向已窃取的邮件地址发送垃圾邮件。当该模块在线程中执行时,它会调用CoCreateGuid函数生成一个GUID,然后使用base64算法对GUID进行编码,将其作为cookie值发往C&C服务器。服务器的响应报文中包含加密的垃圾邮件信息以及目标邮件地址。如下两张图分别代表C&C服务器返回的响应报文以及解密后的报文内容。

图7. 发往C&C服务器的GUID以及收到的响应报文

图8. 解密后的垃圾邮件模板以及邮件地址
一旦module4收到解密后的数据,它会解析出数据中包含的垃圾邮件模板以及目标邮件地址。module4支持25端口(常规端口)以及587端口(SSL)上的SMTP协议。图9显示了module4如何使用SMTP协议散布垃圾邮件,图10显示了Wireshark中抓取的报文内容,图11显示了邮件客户端中收到的垃圾邮件。

图9. 生成SMTP报文的相关代码和数据

图10. Wireshark中抓取的垃圾邮件

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载