夜雨聆风学习资料网

ARTICLE · 1018755

蓝队防御实战体系·第20篇|Office宏与脚本威胁防御

蓝队防御实战体系·第20篇|Office宏与脚本威胁防御

系列引言

上一篇我们给PowerShell这把“双刃剑”装上了刀鞘,但PowerShell在攻击链中通常扮演“第二阶段载荷”的角色。攻击者真正敲开大门的“第一脚”,往往是伪装成发票、简历、合同的Office文档或脚本文件。钓鱼邮件附带一个带宏的Word,或一个双击即执行的HTA/JS/VBS文件,是初始访问的经典路径。今天,我们把这条链路从头到尾加固。

学习目标

通过本篇,你将理解Office宏攻击的完整生命周期,掌握WScript(VBS/JS)、HTA、CHM、LNK等脚本型攻击手法,了解红队如何通过社会工程诱导用户“启用内容”以及利用远程模板注入绕过静态检测,并掌握宏与脚本威胁的检测焦点:进程链异常、网络下载、文件落地、注册表持久化

核心内容讲解

1. Office宏攻击的完整生命周期

阶段
攻击者动作
防御控制点
投递
钓鱼邮件附带.docm/.xlsm
邮件网关、附件过滤
诱导
伪装成“发票”“合同”,提示“启用内容”
用户意识、受保护视图
启用宏
用户点击“启用内容”
组策略禁用宏、受保护视图、MOTW
宏执行AutoOpen
/Document_Open事件触发
Office宏日志、进程链监控
下载载荷
使用URLDownloadToFileWinHttp
网络监控、代理拦截
持久化
写入Startup文件夹、注册表Run
注册表/文件监控
C2通信
使用远程控制码加载框架
网络流量分析、DNS监控

红队典型宏代码逻辑(仅供授权测试学习):

Vba
' AutoOpen宏:文档打开时自动执行
Sub AutoOpen()
    Dim str As String
    ' 构造远程下载命令
    str = "powershell -NoP -NonI -W Hidden -Exec Bypass -Command ""..."
    ' 通过Shell执行
    Shell "cmd /c " & str, vbHide
End Sub

2. 远程模板注入(Remote Template Injection)

这是绕过静态宏检测的经典技术。攻击者将宏保存在远程模板.dotm)中,受害者文档本身不含恶意代码。

攻击流程

  1. 攻击者创建一个正常的Word文档。
  2. 修改文档的settings.xml.rels,将模板指向远程地址。
  3. 受害者打开文档时,Word自动下载远程模板,加载其中的宏。
  4. 宏执行,下载第二阶段载荷。

攻击迹象

  • Word进程发出网络请求下载.dotm.dot文件。
  • winword.exe
    进程创建cmd.exepowershell.exe子进程。

检测方法

Powershell
# 使用Sysmon Event ID 22(DNS查询)和Event ID 3(网络连接)
Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" |
Where-Object {$_.Id -eq 22 -and $_.Message -match "winword.exe" -and $_.Message -match "\.dotm"}

3. 脚本宿主攻击:WScript、HTA、CHM、LNK

除了Office宏,攻击者还大量使用Windows脚本宿主LOLBins

载体
文件扩展名
执行方式
MITRE ATT&CK
VBScript
.vbs
wscript.exe
cscript.exe
T1059.005
JScript
.js
wscript.exe
T1059.007
HTA
.hta
mshta.exe
T1218.005
CHM
.chm
hh.exe
T1218.001
LNK
.lnk
双击
T1204.002
WSF
.wsf
wscript.exe
T1059.005
XLL
.xll
Excel加载项
T1137.006

红队HTA攻击示例逻辑(仅供授权测试学习):

攻击迹象

  • mshta.exe
    进程创建了powershell.execmd.exe子进程。
  • wscript.exe
    创建了网络连接。
  • explorer.exe
    创建了mshta.exe(用户双击了HTA文件)。

4. 核心防御:Mark of the Web(MOTW)与受保护视图

MOTW是Windows给从Internet下载的文件添加的隐藏标记(ADS流:Zone.Identifier)。

查看MOTW

Powershell
Get-Item"C:\Users\User\Downloads\invoice.docx" -Stream *
# 输出:Stream "Zone.Identifier",内容:"ZoneId=3"(3表示Internet)

受保护视图:Office检测到MOTW后,自动在受保护视图中打开文档——宏被禁用、ActiveX被禁用、编辑被禁止。

绕过MOTW的攻击手法

  • 压缩包(.zip、.iso)内的文件可能不继承MOTW。
  • 通过WebDAV或SMB共享投递文件(无ZoneId=3)。
  • 使用Unblock-File移除标记。

蓝队对策

Powershell
# 强制所有Office文档在受保护视图中打开
reg add "HKCU\Software\Microsoft\Office\16.0\Word\Security\ProtectedView" /v DisableInternetFilesInPV /t REG_DWORD /d 0 /f
reg add "HKCU\Software\Microsoft\Office\16.0\Word\Security\ProtectedView" /v DisableUnsafeLocationsInPV /t REG_DWORD /d 0 /f

5. 最强防线:ASR(Attack Surface Reduction)规则

Windows Defender的ASR规则能从根本上阻断Office和脚本的恶意行为。

关键ASR规则

规则名称
描述
MITRE
Block all Office applications from creating child processes
禁止Office创建子进程
T1566
Block Office applications from creating executable content
禁止Office创建可执行内容
T1137
Block Office applications from injecting code into other processes
禁止Office注入代码
T1055
Block Win32 API calls from Office macros
禁止宏调用Win32 API
T1137
Block execution of potentially obfuscated scripts
阻止混淆脚本
T1059
Block JavaScript or VBScript from launching downloaded executable content
阻止脚本启动下载的可执行内容
T1204

配置方式

Powershell
# 使用PowerShell启用ASR规则
Add-MpPreference -AttackSurfaceReductionRules_Ids BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550 -AttackSurfaceReductionRules_Actions Enabled
# 查看当前规则
Get-MpPreference | Select-Object AttackSurfaceReductionRules_Ids, AttackSurfaceReductionRules_Actions

验证:在实验机上创建带宏的文档,尝试创建子进程,观察是否被阻断。

6. Office宏日志与审计

Office本身产生宏执行日志,是重要的检测数据源。

Sysmon配合检测规则

Yaml
titleOffice宏创建子进程
logsource:
productwindows
servicesysmon
detection:
selection_parent:
EventID1
ParentImage|endswith:
      - '\WINWORD.EXE'
      - '\EXCEL.EXE'
      - '\POWERPNT.EXE'
      - '\OUTLOOK.EXE'
selection_child:
Image|endswith:
      - '\cmd.exe'
      - '\powershell.exe'
      - '\wscript.exe'
      - '\cscript.exe'
      - '\mshta.exe'
      - '\rundll32.exe'
      - '\regsvr32.exe'
conditionselection_parent and selection_child
levelcritical
Yaml
title脚本宿主启动下载行为
logsource:
productwindows
servicesysmon
detection:
selection:
EventID1
Image|endswith:
      - '\wscript.exe'
      - '\cscript.exe'
      - '\mshta.exe'
CommandLine|contains:
      - 'http://'
      - 'https://'
      - 'DownloadFile'
      - 'DownloadString'
conditionselection
levelhigh

7. 深度对抗:EvilClippy混淆 + 远程模板注入 + 宏下载载荷

  • 红队攻击手法(T1137.001, T1221, T1566.001):

    • 攻击步骤
      1. 攻击者使用宏混淆工具修改Word文档的VBA项目,破坏静态解析并隐藏VBA项目。
      2. 修改settings.xml.rels,将模板指向远程地址。
      3. 发送钓鱼邮件,附件为invoice.doc
      4. 用户打开文档,Word自动下载远程模板并加载其宏。
      5. 宏执行PowerShell下载器,在内存中加载远程控制码。
      6. 载荷使用HTTPS回连C2,无文件落地。
    • 攻击迹象
      • Word文档打开后发出网络请求下载.dotm文件。
      • winword.exe
        创建了powershell.exe子进程。
      • PowerShell命令行包含IEXDownloadStringFromBase64String
      • 进程与未知IP建立HTTPS连接。
  • 蓝队检测与防御方案

    • 检测
      1. 网络层
        :使用Suricata检测HTTP流量中的.dotm.dot.xlsm文件下载:
        Text
        alert http $HOME_NET any -> $EXTERNAL_NET any (
            msg:"疑似远程模板下载";
            flow:established,to_server;
            http.uri; content:".dotm"; nocase;
            sid:1000010; rev:1;
        )
      2. Sysmon事件ID 1
        :检测winword.exe创建子进程。
      3. Sysmon事件ID 22+3
        :检测Word的网络活动。
      4. YARA扫描
        :扫描%TEMP%%APPDATA%下新创建的.dll.exe文件。
    • 阻断
      1. ASR规则
        :启用Block all Office applications from creating child processes
      2. 组策略禁用宏
        用户配置 → Microsoft Word 2016 → Word选项 → 安全 → 宏设置→ 禁用所有宏,并发出通知
      3. 受保护视图
        :强制所有来自Internet的文件在受保护视图中打开。
      4. 网络层阻断
        :使用Web代理拦截对.dotm.dot等扩展名的下载。
      5. WDAC
        :阻止mshta.exewscript.execscript.exe的网络访问。
      6. 邮件网关
        :过滤包含宏的Office附件。

8. 防御与检测视角(必须)

  • 检测点1:Office进程异常子进程创建

    • 监控点
      :Sysmon Event ID 1,关注WINWORD.EXEEXCEL.EXEPOWERPNT.EXEOUTLOOK.EXE创建cmd.exepowershell.exemshta.exe等子进程。
    • 规则思路
      ParentImage ENDSWITH (WINWORD.EXE OR EXCEL.EXE) AND Image ENDSWITH (cmd.exe OR powershell.exe OR mshta.exe)→ 严重告警,正常Office不应创建这些子进程,立即隔离文档并采集完整进程树。
  • 检测点2:远程模板下载行为

    • 监控点
      :Sysmon Event ID 22(DNS查询)与Event ID 3(网络连接),关注winword.exeexcel.exe发起的对.dotm.dot.xlsm的下载请求。
    • 规则思路
      Image ENDSWITH winword.exe AND QueryName CONTAINS .dotm→ 高告警,结合HTTP URI字段判断是否为远程模板注入。
  • 检测点3:脚本宿主异常网络行为

    • 监控点
      :Sysmon Event ID 13,关注wscript.execscript.exemshta.exe的命令行含URL、创建网络连接或子进程。
    • 规则思路
      Image ENDSWITH (wscript.exe OR mshta.exe) AND (CommandLine CONTAINS http OR NetworkConnect TO external_ip)→ 高告警,脚本宿主主动外连是明确的恶意特征,立即阻断并取证。

全文总结与下篇预告

今天,我们封堵了初始访问的第一道门。你理解了Office宏攻击的完整生命周期(投递→诱导→启用→执行→下载载荷→C2),掌握了远程模板注入这一绕过静态检测的经典手法,认识了WScript、HTA、CHM、LNK等脚本型攻击载体。在防御侧,你学会了MOTW+受保护视图的第一道防线、ASR规则的“核武器”级阻断,以及进程链监控+网络下载检测的日志分析思路。更重要的是,你看到了红队宏混淆+远程模板注入+载荷下载的完整攻击链与蓝队的多层封堵策略。

从软件到脚本,我们加固了操作系统的“软”层面。但攻击者最底层的目标,是固件和硬件——BIOS、UEFI、TPM、Bootloader。一旦固件被植入后门,重装系统也无法清除。下一篇《固件与硬件安全:UEFI、Bootkit防御》将深入这个“最底层”的攻防战场。

文末思维导图

相关学习资料

返回首页浏览学习资料