核心痛点先讲清楚
Windows Server,用户坚持长期用 Administrator 登录一旦勒索病毒运行,直接拿到完整管理员权限:
可以执行 vssadmin delete shadows /all 清空本机 VSS 快照
可以修改 NTFS ACL 权限,把你前面写的 C# 锁目录直接干掉
Windows Defender【受控文件夹访问 CFA】在管理员账号下,病毒依然有机会绕过 / 关闭 Defender
👉 单纯靠本机 ACL、VSS、C# 程序锁文件夹,全部都不再是可靠防线。管理员权限下,本机所有防护都能被病毒撤销。
但是依然有成熟方案,这套思路专门应对【服务器必须日常 Administrator 登录】的场景,分层防御,不能单点依赖。
核心思路:隔离 “写入权限”,把备份介质做到不常驻在线,配合进程 / 文件过滤限制
分成四层:
第一层:目录级 独占文件锁 + 白名单进程拦截(C# 可实现辅助,配合系统策略)
第二层:文件系统微过滤驱动(真正内核拦截,最强,C# 不能写,只能调用现成产品)
第三层:备份架构:快照导出 → 离线轮换存储(最重要兜底)
第四层:服务器系统加固,压缩病毒横向扩散和提权机会
重点:不要指望完全阻止管理员账号下运行的恶意程序读文件;重点阻止【恶意程序修改 / 加密】目标目录,并且保证备份无法被病毒触碰
方案 A:使用微软官方工具 —— File Server Resource Manager (FSRM) 文件屏蔽(Windows Server 自带,免费,强烈优先上)
Windows Server(2016/2019/2022)自带 FSRM 文件服务器资源管理器,内核级文件屏蔽,不需要第三方软件,不需要写驱动。
✅ 作用:阻止特定后缀的文件写入你的保护目录。
勒索病毒典型特征:生成 .locky .conti .crypto .xyz .ransom 等加密后缀,同时会删除原文件,写入加密后的新文件。
FSRM 可以直接配置:禁止在 D:\SafeData 目录写入所有勒索常见后缀。
注意:FSRM 不能阻止病毒覆盖原有正常后缀(比如直接重写 xxx.docx),但可以拦截病毒生成加密副本、勒索说明文件。
配合【文件审计】,一旦目录出现大量文件修改,触发告警。
FSRM 可以用 PowerShell 配置,C# 也可以调用 PowerShell 执行配置
# 安装FSRM角色
Install-WindowsFeature FS-Resource-Manager
# 创建勒索后缀文件屏蔽组
New-FsrmFileGroup -Name "RansomwareExtensions" -IncludePatterns @("*.locky","*.conti","*.crypt","*.xyz","*.encrypted","*.ransom","*.readme")
# 创建屏蔽规则,保护D:\SafeData
New-FsrmFileScreen -Path "D:\SafeData" -FileGroup "RansomwareExtensions" -Active:$true
方案 B:目录采用备用数据流 + 只读 ACL + 专属白名单进程(C# 程序做调度,适合你的场景)
局限:Administrator 账号下病毒依然能改 ACL,所以不能单独作为防护,只能作为多层防护中的一环 **
原理:
C# 额外增加行为检测(勒索行为特征):监控目标目录,如果短时间大量文件被修改 / 删除,自动触发紧急锁定。
勒索病毒典型行为特征:
短时间数十 / 上百个文件被修改、原文件删除、新增勒索提示 txt。
// 目录监控 + 应急自动锁目录 核心片段
using System.IO;
var watcher = new FileSystemWatcher(@"D:\SafeData");
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.Deletion;
watcher.IncludeSubdirectories = true;
int modifyCount = 0;
DateTime windowStart = DateTime.Now;
watcher.Changed += (s, e) =>
{
var now = DateTime.Now;
// 10秒窗口,超过10个文件修改,判定疑似勒索,自动锁目录
if ((now - windowStart).TotalSeconds >10)
{
modifyCount = 0;
windowStart = now;
}
modifyCount++;
if(modifyCount>10)
{
// 调用前面ACL代码,立刻把目录设置回只读
protector.SetReadOnly();
// 日志、邮件告警
}
};
watcher.EnableRaisingEvents = true;
⚠️ 短板:病毒可以直接 kill 掉你的 C# 进程,绕过这个监控,管理员权限可以终止任何用户态程序。
方案 C(最有效,推荐作为核心防护):第三方文件系统微过滤驱动(推荐)
这类产品内核层拦截所有进程对目录的写入操作,维护进程白名单:
不管当前账号是不是 Administrator,不在白名单里的任何进程,尝试写入 / 删除保护目录,直接在内核拒绝。
白名单只允许:你的 C# 程序、ERP、Office 等可信程序读写;任何 exe(勒索病毒),哪怕是管理员运行,写保护目录直接被拦截。
产品选型参考(Windows Server 支持):
DiskProtector / Open Source:OSSEC + 文件锁
商业:VeraCrypt 不是(不行,挂载后全盘可写);推荐:Drive Sentry、SoftPerfect File Access Manager、或者专业服务器防勒索软件(如 CrowdStrike、SentinelOne、火绒企业版、360 企业版)
火绒企业版、360 企业版,都有【目录保护,进程白名单】功能,就是基于微过滤驱动,专门解决管理员登录服务器场景。
✅ 优势:内核层,管理员权限的恶意程序也无法写入保护目录,无法删除目录内文件。
❌ 缺点:商用软件要付费;开源驱动稳定性需要测试;C# 不能开发驱动。
✅【备份架构是重中之重,管理员环境下唯一不会被病毒干掉的防线】
关键点:本机任何介质,只要服务器能访问,Administrator 下的勒索病毒就能破坏所以备份必须设计为:非长期在线,离线轮换
推荐备份工作流(适配你的 Windows Server)
定时任务触发(C# 或者任务计划程序)
C# 调用 VSS,对 D 盘创建快照
C# 读取 VSS 快照里面D:\SafeData,复制文件到外接 USB 硬盘 /iSCSI 存储(临时挂载)
复制完成,自动卸载 / 弹出硬盘,断开存储链路
两块硬盘 A/B 轮换:本周 A 盘,下周 B 盘。
为什么双盘轮换:防止病毒潜伏很久,在备份的时候把加密文件同步进备份盘。
补充:不要用永久挂载的 NAS!NAS 一旦一直在线,服务器中毒,病毒会访问 NAS 并加密 NAS 文件。NAS 只能按需临时挂载,备份完立刻断开共享。
【针对你的 Windows Server,整套落地防御组合(推荐)】
优先级排序:
① 部署企业杀毒(火绒企业版 / 360 企业版)开启【目录保护,进程白名单】(内核驱动,核心防线)配置:保护D:\SafeData,只允许指定白名单进程写入;任何其他程序(哪怕管理员运行),尝试修改里面文件直接拦截。
② Windows Server 安装 FSRM 文件屏蔽,拦截勒索后缀写入
③ C# 小程序做辅助:密码解锁临时授权场景 + 文件行为监控告警用途:用户需要手动修改文件时,C# 输入密码,临时加入进程白名单(调用企业防护软件 API);监控目录批量修改行为,邮件告警。
④ 离线轮换备份(双移动硬盘 / 离线 iSCSI),快照导出,备份完断开介质
⑤ 系统加固
关闭不必要 RDP 端口;RDP 开启 MFA 或者 IP 白名单;勒索病毒大量通过 RDP 爆破入侵服务器
服务器上禁止日常浏览器上网,尽量不在服务器打开邮件附件(勒索最主要入口)
开启 Windows 安全审计,监控大量文件删除 / 修改事件,告警
限制 powershell、wscript 的执行策略,阻断很多勒索脚本
❌ 哪些方案不要再单独使用(在 Administrator 长期登录场景基本无效)
你接下来可以选择:
写一套完整 C# 程序:VSS 快照导出文件到外接硬盘、备份完成自动弹出 USB 盘、双硬盘轮换、备份日志 + 邮件告警;(作为备份执行工具)
写一套 PowerShell 脚本,配置 FSRM 勒索后缀屏蔽 + 文件审计;
或者火绒企业版目录保护(进程白名单)的部署配置。
该文章在 2026/9/16 11:56:16 编辑过