一台没打补丁的网络Apache服务器,从扫描到被植入挖矿程序,安全中间只隔了四十分钟。漏洞这不是扫描危言耸听,是技术我上个月在客户内网做应急响应时亲眼看到的时间线。攻击者用的网络不是什么零日漏洞,就是安全三年前就公开的CVE-2021-41773路径穿越。问题出在哪?漏洞那台机器从上线到出事,从来没人扫过。扫描
漏洞扫描这事,技术说白了就是网络拿工具去戳目标,看它会不会喊疼。安全原理不复杂:扫描器维护一个漏洞特征库,漏洞把每个CVE对应的扫描请求模式、响应特征、技术版本信息都编码成规则。扫的时候逐条发探测包,比对返回结果。像Nessus、OpenVAS、Nuclei这些工具,本质上都是这个路子。差别在于特征库的覆盖面、探测包的构造精度、以及误报率控制。
但很多人把扫描当成万能药。装个Nessus,点一下“开始扫描”,等报告出来,然后呢?报告往文件夹里一扔,该干嘛干嘛。这种用法还不如不扫。扫描器不是神,它只能发现它认识的漏洞。一个自己写的业务逻辑漏洞——比如密码重置接口没做频率限制——扫描器根本看不出来。这类问题得靠人工审计代码或者做渗透测试。
我见过最离谱的一次,客户买了某商业扫描器,扫了全内网,报告显示“无高危漏洞”。我拿Nuclei跑了一遍,光Redis未授权访问就找出七台。问他们怎么扫的,答曰“用的默认策略”。默认策略为了控制误报,很多需要发送特定payload的检测项根本没开。扫描器的策略配置比扫描本身更重要。你得知道你的资产跑的是什么服务,然后针对性地开检测项。拿默认配置扫全端口,跟拿渔网捞鲸鱼差不多。
扫描频率也是个容易拍脑袋决定的事。有些团队定死了一个季度扫一次。季度?一个暴露在公网的Web应用,季度扫描的窗口期足够攻击者从扫描到提权再到横向移动走完整个杀伤链。我的建议是:互联网暴露面每周扫,内网核心资产每月扫,开发测试环境上线前必须扫。别嫌烦,脚本跑一遍的事,比出事之后熬夜强。
还有认证扫描的问题。不提供凭证的扫描叫“黑盒扫描”,只能看到表面。给了SSH或者SMB凭证之后,扫描器能登进去查补丁版本、查配置文件、查注册表,准确率能翻一倍不止。但很多运维不愿意给凭证,怕扫描器把生产环境搞崩。这个顾虑合理——确实有扫描器发畸形包导致服务假死的案例。解决办法是用只读账号,或者在测试环境先跑一遍验证稳定性。
最后说个容易被忽略的点:扫描器本身的漏洞。2023年有个案例,某企业用的扫描器版本存在RCE,结果扫描器自己被攻陷,成了攻击者进入内网的跳板。讽刺吧?扫漏洞的工具自己带漏洞。所以扫描器也得定期更新,别装完就不管了。
漏洞扫描不是安全工作的终点,甚至不是起点。它更像是一次体检,告诉你哪儿可能有毛病。真正治病得靠打补丁、改配置、修代码。光扫不修,不如不扫。