| name | recovering-from-ransomware-attack |
| description | 按照 NIST 和 CISA 框架执行结构化勒索软件事件恢复,包括环境隔离、取证证据保全、 干净基础设施重建、从已验证备份优先还原系统、凭据重置,以及针对再感染的验证。 涵盖 Active Directory 恢复、数据库还原和按依赖顺序重建应用栈。
|
| domain | cybersecurity |
| subdomain | ransomware-defense |
| tags | ["ransomware","recovery","incident-response","backup","defense"] |
| version | 1.0.0 |
| author | mahipal |
| license | Apache-2.0 |
从勒索软件攻击中恢复
使用场景
- 勒索软件加密了生产系统,且已决定从备份恢复
- 在实际事件发生前构建或验证勒索软件恢复手册
- 收到解密密钥(支付赎金或执法机构提供)并需要安全解密
- 需要对剩余系统进行部分恢复与解密并行操作
- 进行恢复演练以验证 RTO 承诺
不要在完成遏制和取证范围确定之前使用。在不了解攻击者访问权限和持久化机制的情况下过早恢复,将面临再感染风险。
前置条件
- 事件已声明,遏制阶段已完成(所有攻击者访问已切断)
- 取证证据已保全(磁盘镜像、内存转储、网络捕获)
- 备份完整性已验证(不可变/气隙隔离副本确认干净)
- 干净构建媒体可用(操作系统安装媒体、黄金镜像)
- 恢复环境已准备(与已入侵基础设施隔离的干净网络段)
- 恢复优先级列表已记录(按依赖顺序的第 1/2/3 级系统)
工作流程
步骤一:建立干净恢复环境
构建与已入侵网络隔离的恢复基础设施:
步骤二:首先恢复身份基础设施
Active Directory 必须在任何加入域的系统之前恢复:
# AD 恢复流程
# 步骤 2a:从已知良好的备份还原 AD
# 使用 DSRM(目录服务还原模式)启动
# 1. 从 ISO 构建干净的 Windows Server
# 2. 使用 AD 还原模式提升为 DC
# 3. 从不可变备份还原系统状态
# 验证 AD 备份是在入侵前创建的
# 对比备份时间戳与最早已知的入侵日期
wbadmin get versions -backuptarget:E: -machine:DC01
# 在 DSRM 中还原系统状态
wbadmin start systemstaterecovery -version:02/15/2026-04:00 -backuptarget:E: -machine:DC01 -quiet
# 还原后,重置关键账户
# 重置 krbtgt 密码两次(使所有 Kerberos 票据失效)
# 这防止了黄金票据持久化
Import-Module ActiveDirectory
Set-ADAccountPassword -Identity krbtgt -Reset -NewPassword (ConvertTo-SecureString "NewKrbtgt2026!Complex#1" -AsPlainText -Force)
# 等待复制(至少 12 小时),然后再次重置
Set-ADAccountPassword -Identity krbtgt -Reset -NewPassword (ConvertTo-SecureString "NewKrbtgt2026!Complex#2" -AsPlainText -Force)
# 重置所有特权账户密码
$privilegedGroups = @("Domain Admins", "Enterprise Admins", "Schema Admins", "Administrators")
foreach ($group in $privilegedGroups) {
Get-ADGroupMember -Identity $group -Recursive | ForEach-Object {
Set-ADAccountPassword -Identity $_.SamAccountName -Reset `
-NewPassword (ConvertTo-SecureString (New-Guid).Guid -AsPlainText -Force)
Set-ADUser -Identity $_.SamAccountName -ChangePasswordAtLogon $true
}
}
# 验证 AD 健康状态
dcdiag /v /c /d /e /s:DC01
repadmin /showrepl
步骤三:还原前验证备份完整性
mount -o ro,noexec /dev/backup_lv /mnt/backup_verify
clamscan -r --infected --log=/var/log/backup_scan.log /mnt/backup_verify
find /mnt/backup_verify -name "*.encrypted" -o -name "*.locked" \
-o -name "*.lockbit" -o -name "DECRYPT_*" -o -name "readme.txt" \
-o -name "RECOVER-*" -o -name "HOW_TO_*" | tee /var/log/ransomware_check.log
RESTORE VERIFYONLY FROM DISK = '/mnt/backup_verify/databases/erp_db.bak'
WITH CHECKSUM
步骤四:按优先级顺序还原系统
遵循基于依赖关系的恢复序列:
恢复顺序:
第 1 阶段(0-4 小时):身份和基础设施
1. 域控制器(AD、DNS、DHCP)
2. 证书颁发机构(如适用)
3. 核心网络服务(DHCP、NTP)
第 2 阶段(4-12 小时):关键业务系统
4. 数据库服务器(SQL、Oracle、PostgreSQL)
5. 核心业务应用程序(ERP、CRM)
6. 邮件(Exchange、M365 混合)
第 3 阶段(12-24 小时):重要系统
7. 文件服务器
8. Web 应用程序
9. 监控和安全工具(SIEM、EDR)
第 4 阶段(24-48 小时):剩余系统
10. 开发环境
11. 归档系统
12. 非关键应用程序
# Veeam Instant Recovery - VMware/Hyper-V 最快还原
# 直接从备份文件启动 VM,然后迁移到生产存储
# 第 1 级系统即时恢复
Start-VBRInstantRecovery -RestorePoint (Get-VBRRestorePoint -Name "DC01" |
Sort-Object CreationTime -Descending | Select-Object -First 1) `
-VMName "DC01-Recovered" `
-Server (Get-VBRServer -Name "esxi01.recovery.local") `
-Datastore "recovery-datastore"
# 验证后迁移到生产存储
Start-VBRQuickMigration -VM "DC01-Recovered" `
-Server (Get-VBRServer -Name "esxi01.prod.local") `
-Datastore "production-datastore"
步骤五:验证已恢复系统并加固
在将已恢复系统连接到生产环境之前:
# 检查持久化机制
# 计划任务
Get-ScheduledTask | Where-Object {$_.State -ne "Disabled"} |
Select-Object TaskName, TaskPath, State, Author |
Export-Csv C:\recovery\scheduled_tasks.csv
# 服务
Get-Service | Where-Object {$_.StartType -eq "Automatic"} |
Select-Object Name, DisplayName, StartType, Status |
Export-Csv C:\recovery\auto_services.csv
# 启动项
Get-CimInstance Win32_StartupCommand |
Select-Object Name, Command, Location, User |
Export-Csv C:\recovery\startup_items.csv
# WMI 事件订阅(常见持久化方式)
Get-WmiObject -Namespace root\subscription -Class __EventFilter
Get-WmiObject -Namespace root\subscription -Class __EventConsumer
# 注册表运行键
Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run"
Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce"
Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
# 验证无未授权的管理员账户
Get-LocalGroupMember -Group "Administrators"
Get-ADGroupMember -Identity "Domain Admins"
# 连接生产环境前应用最新补丁
Install-WindowsUpdate -AcceptAll -AutoReboot
步骤六:分阶段网络重新连接
第 1 阶段:重新连接身份基础设施
- DC 在生产 VLAN 上线
- 验证复制和认证
- 监控可疑的认证模式
第 2 阶段:重新连接第 1 级系统
- 每次一个系统
- 继续下一个前 EDR 监控 1 小时
- 验证应用程序功能
第 3 阶段:重新连接剩余系统
- 每组 5-10 个系统
- 持续监控再感染指标
全程:SOC 处于高度警戒状态
- EDR 处于主动封锁模式
- 所有先前 IOC 加载到检测规则
- 在已恢复系统上部署诱饵文件
核心概念
| 术语 | 定义 |
|---|
| DSRM | 目录服务还原模式:允许 AD 数据库还原的域控制器特殊启动模式 |
| krbtgt 重置 | 将 krbtgt 账户密码重置两次可使所有 Kerberos 票据失效,防御黄金票据持久化 |
| 即时恢复 | 直接从备份存储启动 VM 以立即可用,同时在后台迁移数据的备份技术 |
| 证据保全 | 在恢复开始前保留取证镜像和日志,是执法机构和保险索赔的必要条件 |
| 干净构建 | 从可信安装媒体重建系统,而非尝试清理受感染系统 |
| 依赖链 | 基于服务依赖关系(如 AD 在域成员之前)的系统恢复顺序 |
工具与系统
- Veeam Instant Recovery:直接从备份启动 VM,RTO 接近零,然后实时迁移到生产环境
- Microsoft DSRM:从备份还原域控制器的 AD 专用恢复模式
- DSInternals PowerShell 模块:验证 AD 数据库完整性,识别恢复后被入侵的凭据
- Rubrik Instant Recovery:在数秒内将备份挂载为实时 VM,用于快速恢复验证
- ClamAV:扫描备份文件还原前的开源防病毒工具
常见场景
场景:制造公司在 LockBit 攻击后的完整恢复
背景:一家拥有 300 台服务器的制造商有 80% 的基础设施被 LockBit 加密。48 小时前的不可变备份已验证为干净。生产线停止,每天损失 50 万美元。
方案:
- 建立恢复 VLAN(10.99.0.0/24),与已入侵网络隔离
- 使用 Veeam Instant Recovery 从不可变备份还原 2 台域控制器(2 小时)
- 间隔 12 小时两次重置 krbtgt 密码,重置所有管理员密码
- 使用 dcdiag 验证 AD,使用 DSInternals 扫描黄金票据指标
- 还原 ERP 数据库(SAP)并验证数据一致性(4 小时)
- 还原 MES(制造执行系统)和 SCADA 历史记录(3 小时)
- 首先在隔离 OT 网络中让生产线控制器上线
- 在持续 EDR 监控下分 48 小时分阶段重新连接
- 总恢复时间:72 小时(在 96 小时 RTO 承诺内)
常见陷阱:
- 在未验证持久化机制不存在的情况下急于重新连接系统,导致再感染
- 从最新备份还原而未验证其早于入侵时间(攻击者可能已污染最近备份)
- 未将 krbtgt 密码重置两次,允许攻击者维持黄金票据访问
- 以错误顺序还原系统(应用服务器先于其数据库依赖)
输出格式
## 勒索软件恢复状态报告
**事件 ID**:[ID]
**恢复开始**:[时间戳]
**当前阶段**:[1-4]
**预计完成**:[时间戳]
### 恢复进度
| 阶段 | 系统 | 状态 | 开始时间 | 完成时间 | RTO 目标 |
|-------|---------|--------|---------|-----------|------------|
| 1 - 身份 | DC01、DC02、DNS | 完成 | HH:MM | HH:MM | 4 小时 |
| 2 - 关键 | ERP、DB01、DB02 | 进行中 | HH:MM | -- | 12 小时 |
| 3 - 重要 | FS01、邮件、Web | 待处理 | -- | -- | 24 小时 |
| 4 - 剩余 | 开发、归档 | 待处理 | -- | -- | 48 小时 |
### 验证清单
- [ ] AD 完整性已验证(dcdiag、repadmin)
- [ ] krbtgt 密码重置(2 次,间隔执行)
- [ ] 所有管理员密码已重置
- [ ] 持久化机制已扫描
- [ ] EDR 已部署并在已恢复系统上激活
- [ ] IOC 已加载到检测规则
- [ ] 诱饵文件已部署