1. 1. 勒索病毒应急 - Windows
  2. 2. 一、勒索病毒攻击链概述
    1. 2.1. 1.1 典型攻击流程
    2. 2.2. 1.2 常见勒索家族(2024-2026)
  3. 3. 二、VSS (Volume Shadow Copy) 删除检测 ★关键
    1. 3.1. 2.1 为什么攻击者删除VSS
    2. 3.2. 2.2 VSS删除方式与检测
      1. 3.2.1. vssadmin delete shadows
      2. 3.2.2. wmic shadowcopy delete
      3. 3.2.3. PowerShell方式
      4. 3.2.4. WMI Provider日志
      5. 3.2.5. diskshadow.exe (少见但有效)
    3. 3.3. 2.3 综合VSS删除检测脚本
  4. 4. 三、BCDEdit恢复禁用检测
    1. 4.1. 3.1 攻击者操作
    2. 4.2. 3.2 检测
    3. 4.3. 3.3 恢复被禁用的恢复模式
  5. 5. 四、其他反恢复操作检测
    1. 5.1. 4.1 Windows备份删除
    2. 5.2. 4.2 磁盘管理操作
    3. 5.3. 4.3 安全软件禁用
    4. 5.4. 4.4 防火墙规则修改
  6. 6. 五、USN Journal 大规模文件重命名检测
    1. 6.1. 5.1 USN Journal概述
    2. 6.2. 5.2 分析USN Journal
    3. 6.3. 5.3 识别加密时间窗口
  7. 7. 六、勒索家族识别
    1. 7.1. 6.1 通过加密后缀识别
    2. 7.2. 6.2 通过勒索信识别
    3. 7.3. 6.3 在线识别工具
    4. 7.4. 6.4 勒索病毒样本获取
  8. 8. 七、VSS恢复操作
    1. 8.1. 7.1 检查VSS是否存活
    2. 8.2. 7.2 从VSS恢复文件
    3. 8.3. 7.3 第三方工具恢复
  9. 9. 八、Safe Mode勒索病毒
    1. 9.1. 8.1 Safe Mode攻击原理
    2. 9.2. 8.2 检测
  10. 10. 九、紧急隔离操作
    1. 10.1. 9.1 网络隔离
    2. 10.2. 9.2 进程终止
    3. 10.3. 9.3 快速取证保全
  11. 11. 十、Windows加固 - 勒索防护
    1. 11.1. 10.1 Attack Surface Reduction (ASR) 规则
    2. 11.2. 10.2 Controlled Folder Access (受控文件夹访问)
    3. 11.3. 10.3 其他加固措施
  12. 12. 十一、恢复选项决策树
    1. 12.1. 11.1 评估恢复可行性
    2. 12.2. 11.2 检查已知解密工具
    3. 12.3. 11.3 系统重建清单

Windows应急响应 - 16 勒索病毒应急-Windows

勒索病毒应急 - Windows

勒索病毒(Ransomware)是Windows环境中破坏性最强的威胁之一——直接导致业务中断和数据丢失

本章覆盖: 勒索行为检测、VSS删除识别、恢复选项、家族识别、加固措施

交叉参考: 14.6-勒索病毒应急

一、勒索病毒攻击链概述

1.1 典型攻击流程

1
初始入侵 → 权限提升 → 横向移动 → 数据窃取(双重勒索) → 禁用防护 → 删除备份 → 加密文件 → 投放勒索信

从入侵到加密的时间(Dwell Time): 从数小时(自动化)到数周(人工操作APT)

现代勒索多为**人工操作(Human-Operated Ransomware)**——攻击者手动渗透后批量部署加密

关键时间窗口: 攻击者删除备份和加密文件之间通常只有分钟级间隔

1.2 常见勒索家族(2024-2026)

家族 加密后缀 勒索信文件名 特征
LockBit 3.0/4.0 随机字符串 RESTORE-MY-FILES.txt 速度快,多线程
BlackCat/ALPHV 随机7字符 RECOVER-[ID]-FILES.txt Rust编写
Royal/BlackSuit .royal/.blacksuit README.BlackSuit.txt 无RaaS模式
Akira .akira akira_readme.txt 多平台
Play .play ReadMe.txt 无RaaS
Clop .clop ClopReadMe.txt 大规模数据泄露
Phobos .phobos/.eking info.txt + info.hta 主攻RDP入侵
Medusa .MEDUSA !!!READ_ME_MEDUSA!!!.txt 数据泄露站

二、VSS (Volume Shadow Copy) 删除检测 ★关键

2.1 为什么攻击者删除VSS

VSS(卷影副本)是Windows内置的备份机制,存储文件的历史版本

如果VSS存在,受害者可直接从卷影副本恢复文件,无需支付赎金

因此,几乎所有勒索病毒都会在加密前删除VSS

检测VSS删除 = 检测勒索病毒的前兆行为

2.2 VSS删除方式与检测

vssadmin delete shadows

最常见的VSS删除命令:

1
2
3
vssadmin delete shadows /all /quiet
vssadmin resize shadowstorage /for=C: /on=C: /maxsize=401MB
vssadmin resize shadowstorage /for=C: /on=C: /maxsize=unbounded

检测:

1
2
3
4
5
6
7
8
# 搜索vssadmin执行记录 (Security 4688)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688} |
Where-Object { $_.Properties[8].Value -match 'vssadmin.*delete|vssadmin.*resize' } |
Select-Object TimeCreated,
@{N='User';E={$_.Properties[1].Value}},
@{N='Process';E={$_.Properties[5].Value}},
@{N='CommandLine';E={$_.Properties[8].Value}} |
Format-List

wmic shadowcopy delete

1
2
wmic shadowcopy delete
wmic shadowcopy list brief

检测:

1
2
3
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688} |
Where-Object { $_.Properties[8].Value -match 'wmic.*shadowcopy.*delete' } |
Select-Object TimeCreated, @{N='Cmd';E={$_.Properties[8].Value}}

PowerShell方式

1
2
3
Get-WmiObject Win32_ShadowCopy | ForEach-Object { $_.Delete() }
# 或
Get-CimInstance Win32_ShadowCopy | Remove-CimInstance

检测: 查看PowerShell 4104日志中的ShadowCopy/Delete关键词

WMI Provider日志

1
2
3
4
5
6
7
8
9
# VSS相关事件日志
# Application日志 — VSS Error Events
Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName='VSS'} -ErrorAction SilentlyContinue |
Select-Object TimeCreated, Id, LevelDisplayName, Message -First 20 | Format-List

# System日志 — 卷影副本被删除
Get-WinEvent -FilterHashtable @{LogName='System'} -ErrorAction SilentlyContinue |
Where-Object { $_.Message -match 'shadow cop' -or $_.ProviderName -match 'VSS' } |
Select-Object TimeCreated, Id, ProviderName, Message -First 20 | Format-List

diskshadow.exe (少见但有效)

1
2
3
:: 使用diskshadow脚本删除
diskshadow /s delete_shadows.txt
:: 脚本内容: delete shadows all

检测同理,搜索4688中的diskshadow执行

2.3 综合VSS删除检测脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 一键检测所有VSS删除相关命令
$vssPatterns = @(
'vssadmin.*delete.*shadows',
'vssadmin.*resize.*shadowstorage',
'wmic.*shadowcopy.*delete',
'Win32_ShadowCopy.*Delete',
'Remove-CimInstance.*ShadowCopy',
'diskshadow.*delete',
'bcdedit.*recoveryenabled.*no',
'bcdedit.*bootstatuspolicy.*ignoreallfailures',
'wbadmin.*delete.*catalog',
'wbadmin.*delete.*systemstatebackup'
)
$regex = ($vssPatterns -join '|')

Write-Host "=== Checking Security 4688 ===" -ForegroundColor Cyan
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688} -ErrorAction SilentlyContinue |
Where-Object { $_.Properties[8].Value -match $regex } |
Select-Object TimeCreated,
@{N='User';E={$_.Properties[1].Value}},
@{N='CommandLine';E={$_.Properties[8].Value}} |
Format-List

Write-Host "=== Checking Sysmon ID 1 ===" -ForegroundColor Cyan
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Sysmon/Operational'; Id=1} -ErrorAction SilentlyContinue |
Where-Object { $_.Properties[10].Value -match $regex } |
Select-Object TimeCreated,
@{N='Image';E={$_.Properties[4].Value}},
@{N='CommandLine';E={$_.Properties[10].Value}} |
Format-List

Write-Host "=== Checking PowerShell 4104 ===" -ForegroundColor Cyan
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-PowerShell/Operational'; Id=4104} -ErrorAction SilentlyContinue |
Where-Object { $_.Properties[2].Value -match 'ShadowCopy|vssadmin|shadowstorage' } |
Select-Object TimeCreated,
@{N='Script';E={$_.Properties[2].Value.Substring(0, [Math]::Min(300, $_.Properties[2].Value.Length))}} |
Format-List

三、BCDEdit恢复禁用检测

3.1 攻击者操作

1
2
3
4
5
6
:: 禁用Windows恢复模式
bcdedit /set {default} recoveryenabled No
:: 忽略所有启动失败
bcdedit /set {default} bootstatuspolicy ignoreallfailures
:: 禁用自动修复
bcdedit /set {current} safeboot network

目的: 防止用户通过恢复模式修复系统

3.2 检测

1
2
3
4
5
6
7
# 搜索bcdedit修改
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688} |
Where-Object { $_.Properties[8].Value -match 'bcdedit' } |
Select-Object TimeCreated,
@{N='User';E={$_.Properties[1].Value}},
@{N='CommandLine';E={$_.Properties[8].Value}} |
Format-List
1
2
# 检查当前BCD配置
bcdedit /enum | Select-String "recoveryenabled|bootstatuspolicy|safeboot"

3.3 恢复被禁用的恢复模式

1
2
3
4
:: 重新启用恢复模式
bcdedit /set {default} recoveryenabled Yes
bcdedit /deletevalue {default} bootstatuspolicy
bcdedit /deletevalue {current} safeboot

四、其他反恢复操作检测

4.1 Windows备份删除

1
2
3
:: 删除Windows备份目录
wbadmin delete catalog -quiet
wbadmin delete systemstatebackup -keepVersions:0

检测同上,搜索4688中的wbadmin命令

4.2 磁盘管理操作

1
2
3
4
:: 清除回收站
rd /s /q %SYSTEMDRIVE%\$Recycle.Bin
:: 删除系统还原点
powershell -command "Get-ComputerRestorePoint | Disable-ComputerRestore"

4.3 安全软件禁用

1
2
3
4
5
6
7
# 检测Windows Defender被禁用
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688} |
Where-Object {
$_.Properties[8].Value -match 'Set-MpPreference.*-DisableRealtimeMonitoring.*True' -or
$_.Properties[8].Value -match 'sc\s+stop\s+WinDefend' -or
$_.Properties[8].Value -match 'net\s+stop.*WinDefend'
} | Select-Object TimeCreated, @{N='Cmd';E={$_.Properties[8].Value}}
1
2
3
4
5
6
7
8
9
# 检查Defender当前状态
Get-MpComputerStatus | Select-Object RealTimeProtectionEnabled,
AntivirusEnabled, AntispywareEnabled,
BehaviorMonitorEnabled, IoavProtectionEnabled

# 检查Defender排除项(攻击者可能添加排除)
Get-MpPreference | Select-Object -ExpandProperty ExclusionPath
Get-MpPreference | Select-Object -ExpandProperty ExclusionExtension
Get-MpPreference | Select-Object -ExpandProperty ExclusionProcess
1
2
3
4
5
# Windows Defender事件日志
# Event ID 5001 = 实时保护已禁用
# Event ID 5007 = 配置已更改
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Windows Defender/Operational'; Id=5001,5007} -ErrorAction SilentlyContinue |
Select-Object TimeCreated, Id, Message | Format-List

4.4 防火墙规则修改

1
2
3
4
5
6
# 检测防火墙被禁用
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688} |
Where-Object {
$_.Properties[8].Value -match 'netsh.*advfirewall.*set.*state.*off' -or
$_.Properties[8].Value -match 'Set-NetFirewallProfile.*-Enabled.*False'
} | Select-Object TimeCreated, @{N='Cmd';E={$_.Properties[8].Value}}

五、USN Journal 大规模文件重命名检测

5.1 USN Journal概述

USN (Update Sequence Number) Journal记录NTFS卷上的所有文件变更

勒索病毒加密时会产生大量文件重命名/修改操作,在USN Journal中留下明显痕迹

路径: $Extend\$UsnJrnl:$J (需要特殊工具读取)

5.2 分析USN Journal

1
2
# 使用fsutil读取USN Journal概要信息
fsutil usn queryjournal C:
1
2
3
:: 使用MFTECmd (Eric Zimmerman)解析USN Journal
:: 先提取$J: 使用RawCopy或FTK Imager
MFTECmd.exe -f "$J" --csv "C:\IR\" --csvf usn_journal.csv

在解析后的CSV中搜索:

短时间内大量 RenameNewName 操作(文件被重命名为加密后缀)

大量 DataOverwrite + Close 操作(文件内容被加密覆写)

操作集中在同一进程

1
2
3
4
5
6
# 如果已经解析USN到CSV,搜索加密特征
$usn = Import-Csv "C:\IR\usn_journal.csv"
# 统计文件扩展名变更(重命名)
$usn | Where-Object { $_.UpdateReasons -match 'RenameNewName' } |
Group-Object { [System.IO.Path]::GetExtension($_.Name) } |
Sort-Object Count -Descending | Select-Object Count, Name -First 20

5.3 识别加密时间窗口

1
2
3
4
5
6
7
# 基于文件系统时间戳估算加密开始时间
# 搜索被加密文件的修改时间分布
$encryptedExt = ".lockbit" # 替换为实际的加密后缀
Get-ChildItem -Path "C:\Users\" -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.Extension -eq $encryptedExt } |
Group-Object { $_.LastWriteTime.ToString("yyyy-MM-dd HH:mm") } |
Sort-Object Name | Select-Object Count, Name | Format-Table

六、勒索家族识别

6.1 通过加密后缀识别

1
2
3
4
5
6
# 统计异常文件扩展名
Get-ChildItem -Path "C:\Users\" -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.Extension -and $_.Extension.Length -gt 1 } |
Group-Object Extension |
Sort-Object Count -Descending |
Select-Object Count, Name -First 30

常见加密后缀与家族映射(示例):

.lockbit / .{random_hex} → LockBit

.phobos / .eking / .eight → Phobos

.play → Play

.akira → Akira

.royal / .blacksuit → Royal/BlackSuit

.clop → Clop

6.2 通过勒索信识别

1
2
3
4
5
6
7
8
9
10
11
12
# 搜索常见勒索信文件名
$ransomNoteNames = @(
'README.txt', 'DECRYPT*.txt', 'RECOVER*.txt', 'RESTORE*.txt',
'HOW_TO_DECRYPT*', 'HOW_TO_RECOVER*', '*_readme.txt',
'!!!READ_ME*', 'info.hta', 'info.txt',
'DECRYPT-FILES.txt', 'YOUR_FILES*',
'*.hta' # 很多家族使用HTA格式的勒索信
)
foreach ($pattern in $ransomNoteNames) {
Get-ChildItem -Path "C:\" -Filter $pattern -Recurse -ErrorAction SilentlyContinue -Depth 3 |
Select-Object FullName, LastWriteTime -First 5
}
1
2
3
4
5
6
# 读取勒索信内容(提取IOC)
$ransomNote = Get-ChildItem -Path "C:\Users\" -Filter "README*" -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1
if ($ransomNote) {
Write-Host "=== Ransom Note: $($ransomNote.FullName) ===" -ForegroundColor Red
Get-Content $ransomNote.FullName
}

6.3 在线识别工具

ID Ransomware (https://id-ransomware.malwarehunterteam.com/)

上传勒索信或加密文件样本即可识别家族

No More Ransom (https://www.nomoreransom.org/)

提供已知家族的免费解密工具

VirusTotal: 上传勒索病毒样本获取检测结果

6.4 勒索病毒样本获取

1
2
3
4
5
6
7
8
# 搜索可能的勒索病毒可执行文件
# 检查最近创建的可执行文件
Get-ChildItem -Path "C:\Users\","C:\Windows\Temp\","C:\ProgramData\" -Include "*.exe","*.dll","*.bat","*.ps1" -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.CreationTime -gt (Get-Date).AddDays(-7) } |
Select-Object FullName, CreationTime, Length,
@{N='SHA256';E={(Get-FileHash $_.FullName -Algorithm SHA256).Hash}} |
Sort-Object CreationTime -Descending |
Format-List
1
2
3
4
5
# Prefetch中搜索可疑的最近执行程序
Get-ChildItem "C:\Windows\Prefetch\*.pf" |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-3) } |
Sort-Object LastWriteTime -Descending |
Select-Object Name, LastWriteTime -First 20

七、VSS恢复操作

7.1 检查VSS是否存活

1
2
3
4
5
6
7
# 列出现有卷影副本
vssadmin list shadows

# PowerShell方式
Get-CimInstance Win32_ShadowCopy | Select-Object ID, InstallDate, VolumeName, DeviceObject

# 如果输出为空 = 卷影副本已被删除

7.2 从VSS恢复文件

1
2
3
4
5
6
7
8
9
10
# 如果卷影副本存在,挂载并恢复文件
# 方法1: 使用mklink创建符号链接
$shadows = Get-CimInstance Win32_ShadowCopy
foreach ($shadow in $shadows) {
$deviceObj = $shadow.DeviceObject
$linkPath = "C:\IR\Shadow_$($shadow.InstallDate.ToString('yyyyMMdd_HHmmss'))"
cmd /c "mklink /d `"$linkPath`" `"$deviceObj\`""
Write-Host "Mounted: $linkPath$deviceObj"
}
# 然后可以浏览 C:\IR\Shadow_*\ 目录恢复文件
1
2
3
4
5
:: 方法2: 使用vssadmin + wmic
vssadmin list shadows
:: 记录Shadow Copy Volume路径,类似: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
:: 创建符号链接
mklink /d C:\IR\ShadowMount \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\
1
2
3
# 方法3: "Previous Versions" (右键→属性→以前版本)
# 需要VSS存在且Volume Shadow Copy服务运行
# 适合少量文件恢复

7.3 第三方工具恢复

ShadowExplorer: GUI工具浏览和导出卷影副本中的文件

Arsenal Image Mounter: 可挂载VSS作为独立卷

Recuva / R-Studio: 尝试恢复被删除(但未覆写)的原始文件

PhotoRec / TestDisk: 基于文件签名的数据恢复(适合未加密但被删除的文件)

八、Safe Mode勒索病毒

8.1 Safe Mode攻击原理

部分勒索家族(如Snatch, AvosLocker, REvil)重启机器进入安全模式后再加密

安全模式下大多数安全软件和EDR不运行

安全模式下文件锁更少,加密更完整

攻击方式:

1
2
3
4
5
6
:: 注册为安全模式启动的服务
bcdedit /set {current} safeboot minimal
:: 将勒索病毒注册为安全模式可用的服务
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal\RansomService" /ve /t REG_SZ /d "Service" /f
:: 重启
shutdown /r /f /t 0

8.2 检测

1
2
3
4
5
6
7
8
9
# 检查bcdedit安全模式配置
bcdedit /enum | Select-String "safeboot"

# 检查SafeBoot注册表(哪些服务在安全模式下运行)
# Minimal = 安全模式, Network = 带网络的安全模式
Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal" |
Select-Object PSChildName | Sort-Object PSChildName
Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Control\SafeBoot\Network" |
Select-Object PSChildName | Sort-Object PSChildName
1
2
3
4
5
6
7
8
9
# 搜索近期的安全模式启动事件
# System日志 Event ID 12 — 系统启动时间
Get-WinEvent -FilterHashtable @{LogName='System'; Id=12} -ErrorAction SilentlyContinue |
Select-Object TimeCreated, Message -First 10

# 搜索bcdedit safeboot设置
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688} |
Where-Object { $_.Properties[8].Value -match 'bcdedit.*safeboot' } |
Select-Object TimeCreated, @{N='Cmd';E={$_.Properties[8].Value}}

九、紧急隔离操作

9.1 网络隔离

1
2
3
4
5
6
7
8
9
10
11
# 立即断网(防止横向扩散和数据泄露)
# 方法1: 禁用所有网卡
Get-NetAdapter | Disable-NetAdapter -Confirm:$false

# 方法2: 防火墙阻断所有出站(保留本地管理)
New-NetFirewallRule -DisplayName "IR-BlockAll-Outbound" -Direction Outbound -Action Block -Enabled True
# 允许特定管理IP
New-NetFirewallRule -DisplayName "IR-AllowAdmin" -Direction Inbound -Action Allow -RemoteAddress "10.0.0.100" -Enabled True

# 方法3: 修改默认网关(软隔离)
# Get-NetRoute -DestinationPrefix "0.0.0.0/0" | Remove-NetRoute -Confirm:$false

9.2 进程终止

1
2
3
4
5
6
7
8
9
# 如果已识别勒索进程,立即终止
# 注意: 终止加密进程可能导致部分文件损坏(半加密状态)
# 但通常"停止加密保住剩余文件"优先于"让加密完成保证完整性"

# 查找高CPU和高IO的进程(可能正在加密)
Get-Process | Sort-Object CPU -Descending | Select-Object -First 20 Name, Id, CPU, WorkingSet64

# 终止可疑进程
# Stop-Process -Id <PID> -Force

9.3 快速取证保全

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 在隔离后立即采集关键取证数据
$irDir = "C:\IR\Ransomware_$(Get-Date -Format yyyyMMdd_HHmmss)"
New-Item -ItemType Directory -Path $irDir -Force | Out-Null

# 1. 运行中的进程
Get-Process | Select-Object Name, Id, Path, StartTime, CPU, WorkingSet64 |
Export-Csv "$irDir\processes.csv" -NoTypeInformation

# 2. 网络连接
Get-NetTCPConnection | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess |
Export-Csv "$irDir\network_connections.csv" -NoTypeInformation

# 3. 服务列表
Get-Service | Select-Object Name, DisplayName, Status, StartType |
Export-Csv "$irDir\services.csv" -NoTypeInformation

# 4. 计划任务
Get-ScheduledTask | Select-Object TaskName, TaskPath, State,
@{N='Action';E={$_.Actions.Execute}} |
Export-Csv "$irDir\scheduled_tasks.csv" -NoTypeInformation

# 5. 勒索信样本
Get-ChildItem -Path "C:\Users\" -Include "README*","DECRYPT*","RESTORE*","HOW_TO*","info.hta" -Recurse -ErrorAction SilentlyContinue |
Select-Object -First 1 | Copy-Item -Destination $irDir

# 6. 加密文件样本(用于家族识别)
Get-ChildItem -Path "C:\Users\" -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.Length -gt 0 -and $_.Extension -notin @('.exe','.dll','.sys') } |
Sort-Object LastWriteTime -Descending | Select-Object -First 3 |
Copy-Item -Destination $irDir

Write-Host "[+] Evidence collected: $irDir" -ForegroundColor Green

十、Windows加固 - 勒索防护

10.1 Attack Surface Reduction (ASR) 规则

ASR是Windows Defender的高级防护功能,可阻止常见攻击行为

1
2
3
# 查看当前ASR规则状态
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Actions

关键ASR规则(与勒索防护相关):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 阻止来自Office宏的Win32 API调用
Add-MpPreference -AttackSurfaceReductionRules_Ids 92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7B -AttackSurfaceReductionRules_Actions Enabled

# 阻止勒索软件使用的高级保护
Add-MpPreference -AttackSurfaceReductionRules_Ids C1DB55AB-C21A-4637-BB3F-A12568109D35 -AttackSurfaceReductionRules_Actions Enabled

# 阻止从Windows本地安全机制子系统窃取凭据 (lsass.exe)
Add-MpPreference -AttackSurfaceReductionRules_Ids 9E6C4E1F-7D60-472F-BA1A-A39EF669E4B2 -AttackSurfaceReductionRules_Actions Enabled

# 阻止Office应用创建子进程
Add-MpPreference -AttackSurfaceReductionRules_Ids D4F940AB-401B-4EFC-AADC-AD5F3C50688A -AttackSurfaceReductionRules_Actions Enabled

# 阻止通过WMI事件订阅实现持久化
Add-MpPreference -AttackSurfaceReductionRules_Ids E6DB77E5-3DF2-4CF1-B95A-636979351E5B -AttackSurfaceReductionRules_Actions Enabled

# 阻止PsExec和WMI命令发起的进程创建
Add-MpPreference -AttackSurfaceReductionRules_Ids D1E49AAC-8F56-4280-B9BA-993A6D77406C -AttackSurfaceReductionRules_Actions Enabled

10.2 Controlled Folder Access (受控文件夹访问)

直接保护指定文件夹免受未授权程序修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 启用受控文件夹访问
Set-MpPreference -EnableControlledFolderAccess Enabled

# 查看受保护的文件夹(默认包含Documents, Pictures, Videos等)
Get-MpPreference | Select-Object -ExpandProperty ControlledFolderAccessProtectedFolders

# 添加额外保护文件夹
Add-MpPreference -ControlledFolderAccessProtectedFolders "D:\ImportantData"
Add-MpPreference -ControlledFolderAccessProtectedFolders "E:\Backups"

# 添加允许的应用程序(白名单)
Add-MpPreference -ControlledFolderAccessAllowedApplications "C:\Program Files\MyApp\myapp.exe"

# 检查受控文件夹访问日志
# Event ID 1123 = 被阻止的访问, 1124 = 审计模式检测
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Windows Defender/Operational'; Id=1123,1124} -ErrorAction SilentlyContinue |
Select-Object TimeCreated, Id, Message -First 20 | Format-List

10.3 其他加固措施

备份策略:

3-2-1备份原则: 3份副本、2种存储介质、1份离线/离站

确保备份不可从生产环境直接访问(防止勒索同时加密备份)

定期测试备份恢复流程

访问控制:

实施最小权限原则

禁用不必要的管理员共享(ADMIN$, C$)

限制远程桌面访问(仅允许VPN后访问)

补丁管理:

及时修补已知漏洞(尤其是RDP、VPN、Exchange等边界服务)

优先修补CISA KEV (Known Exploited Vulnerabilities)列表中的漏洞

网络分段:

分离IT/OT网络

限制工作站间的SMB通信

部署网络检测(NDR)监控异常内网流量

十一、恢复选项决策树

11.1 评估恢复可行性

1
2
3
4
5
6
7
8
9
是否有未被加密的备份?
├── 是 → 验证备份完整性 → 清除感染 → 从备份恢复
└── 否 → VSS卷影副本是否存在?
├── 是 → 从VSS恢复文件
└── 否 → 是否有已知解密工具?
├── 是 → 使用解密工具(No More Ransom, Emsisoft等)
└── 否 → 是否可接受数据丢失?
├── 是 → 重建系统
└── 否 → 评估谈判(最后手段, 需法律顾问介入)

11.2 检查已知解密工具

No More Ransom: https://www.nomoreransom.org/

Emsisoft解密工具集: https://www.emsisoft.com/en/ransomware-decryption/

Kaspersky解密工具: https://noransom.kaspersky.com/

Avast解密工具: https://www.avast.com/ransomware-decryption-tools

注意: 仅适用于已被破解的旧版勒索家族; 主流活跃家族通常没有免费解密工具

11.3 系统重建清单

确认所有被控主机已识别(横向移动排查)

确认入侵入口已修补(RDP暴露、钓鱼邮件、漏洞)

重置所有域用户密码(尤其是管理员和服务账户)

重置krbtgt密码两次(间隔12小时以上)

从可信介质重装操作系统

从离线备份恢复数据

部署EDR/XDR解决方案

启用本章所述的所有加固措施

开展员工安全意识培训

建立事后复盘报告


上一章 目录 下一章
15-横向移动检测 Windows应急响应 17-挖矿病毒应急-Windows