应对操作系统安全漏洞的基本方法
2023年3月,应对微软在月度补丁日修复了Windows中一个已被在野利用的操作提权漏洞(CVE-2023-23397)。攻击者通过一封特制邮件就能让Outlook客户端泄露用户的系统Net-NTLM哈希,整个过程不需要用户点击任何链接。安全这个案例说明一件事:操作系统漏洞从公开到被利用的漏洞时间窗口,可能短到以小时计。本方 补丁管理是应对应对漏洞的第一道防线,但它的操作难点从来不在"打不打",而在"什么时候打"和"怎么打"。系统我见过不少中小企业的安全服务器,补丁滞后周期以季度为单位。漏洞原因很实际——业务系统跑在特定内核版本上,本方贸然更新可能导致驱动不兼容、应对服务崩溃。操作所以务实的系统做法是分层处理:面向互联网的终端和网关设备优先打,内部隔离网段可以适当放宽窗口期,但必须建立补丁台账,清楚知道每台机器缺哪些KB编号。 微软每月第二个周二发布安全更新,这个节奏已经持续了二十多年。但零日漏洞不会挑日子。2021年Exchange Server的ProxyLogon漏洞在补丁发布前就被大规模利用,很多管理员是在周末被叫起来应急的。这种情况下,临时缓解措施比等待补丁更关键。比如关闭不必要的服务端口、在WAF上添加规则拦截特定URI、启用Windows Defender的Attack Surface Reduction规则。这些手段不能根治,但能争取时间。 权限控制经常被忽视,但它对漏洞的实际影响很大。同一个本地提权漏洞,在普通用户账户下利用,攻击者拿到的是普通权限;如果用户日常以管理员身份登录,漏洞被触发后攻击者直接获得系统控制权。UAC(用户账户控制)不是摆设,但很多人嫌弹窗烦就把它关了。我的习惯是:日常操作使用标准账户,需要安装软件或修改系统设置时再通过单独的管理员账户提权。多花几秒钟,换来的是一层实实在在的缓冲。 应用程序白名单是另一个被低估的手段。Windows自带的AppLocker或者企业级的WDAC(Windows Defender Application Control),可以限制只有签名过的可执行文件才能运行。漏洞利用通常需要落地一个payload,无论是exe还是dll。白名单策略直接掐断了这条路径。配置起来确实麻烦,需要先做一段时间的审计模式,收集正常运行的软件清单,再逐步收紧规则。但一旦跑顺了,很多漏洞利用链在第一步就断了。 日志和监控是事后补救的基础。Windows事件日志里,事件ID 4688记录进程创建,4689记录进程终止。如果开启了命令行审计,还能看到完整的启动参数。攻击者利用漏洞后通常会执行whoami、net user、systeminfo这类探测命令,这些行为在日志里留下的痕迹很明显。问题在于,默认的日志容量太小,很多机器只保留几小时就覆盖了。把安全日志调大,转发到中央日志服务器,是最基本的操作。 还有一点容易忽略:固件和驱动。操作系统漏洞不全是内核或用户态的问题,UEFI固件、网卡驱动、显卡驱动都可能成为攻击面。2022年曝光的Lenovo UEFI固件漏洞允许攻击者在SPI闪存中植入持久化后门,重装系统都清不掉。这类漏洞的修复依赖厂商推送固件更新,而很多用户根本不知道自己的机器有没有固件更新可用。定期去厂商支持页面查一下,比等推送靠谱。 漏洞不会消失。代码是人写的,人就会犯错。应对的核心不是追求零漏洞,而是把从漏洞公开到系统修复的时间差压缩到可接受的范围内。补丁、权限、白名单、日志、固件,这几件事做到位,大部分 opportunistic 的攻击就绕过去了。剩下的针对性攻击,那是另一个层面的对抗了。
-
上一篇
-
下一篇