漏扫和渗透的区别
上周有个做运维的漏扫朋友问我,他们公司刚买了一套漏扫工具,和渗是区别不是就不用再做渗透测试了。我当时回了一句:你拿体温计测出发烧,漏扫不代表你知道是和渗肺炎还是普通感冒。他愣了一下,区别说懂了。漏扫
漏扫和渗透,和渗很多人觉得是区别一回事,反正都是漏扫找漏洞。但两者干的和渗事,从根上就不一样。区别
漏扫是漏扫查户口,渗透是和渗入室盗窃
漏扫工具的工作方式,说白了就是区别拿着一份已知漏洞清单,挨个去问目标系统:你有没有这个毛病?比如扫描器发现你的服务器开着445端口,Windows系统版本是2016,就会在报告里写一条“可能受MS17-010影响”。它不验证漏洞能不能真正被利用,只负责告诉你“理论上这里有风险”。
渗透测试不一样。渗透测试工程师会真的尝试利用这个漏洞。拿MS17-010来说,他会实际构造攻击载荷,看能不能拿到shell,能不能提权,能不能横向移动到内网其他机器。漏扫说“你家门锁是A级锁,容易被撬”,渗透是直接撬开进去,看看保险柜里有什么,再拍张照片告诉你损失可能有多大。
这个区别在实际工作中影响很大。我见过一个客户,漏扫报告列了三百多个漏洞,运维团队加班修了两个月,结果渗透测试一上来,从一个没打补丁的OA系统弱口令进了内网,十分钟拿到域控。那三百多个漏洞里,真正被利用的只有两个。
误报率决定了你信谁
漏扫的误报率高得离谱。一个没配好的扫描策略,能把一台正常运行的Linux服务器报出上百个“高危漏洞”。原因很简单——它只看版本号。你装了OpenSSH 7.4,它就报CVE-2018-15473,但你的发行版可能早就backport了修复补丁,版本号没变而已。运维看到这种报告,第一反应往往是“又是误报”,然后整份报告都不看了。
渗透测试的误报率几乎为零。因为测试人员必须拿出证据:截图、命令回显、拿到的数据。他说能进后台,就会给你看后台管理界面。他说能读数据库,就会把表结构导出来给你看。没有证据的漏洞,在渗透报告里根本不会写。
但渗透测试也有它的局限。它依赖测试人员的技术水平和经验,不同的人测同一个系统,结果可能差很多。漏扫工具虽然笨,但胜在稳定,每次扫的结果差不多,不会因为工程师今天状态不好就漏掉一个已知漏洞。
成本和时间不在一个量级
漏扫便宜。商业漏扫工具一年授权几万块,扫一遍内网几百台机器,一晚上跑完。开源工具像Nessus、OpenVAS,甚至不要钱。渗透测试按人天算,一个中等规模的Web系统,认真测一遍至少三到五天,高级渗透测试工程师一天报价几千到上万不等。一个完整的内部网络渗透,周期经常是按周算的。
所以现实中的做法通常是:漏扫做日常巡检,每月跑一次,把明显的问题修掉;渗透测试做年度体检或者上线前验收,针对核心系统深入测。两者不是替代关系,是互补关系。
有个做金融的客户跟我说过他们的流程:开发环境用漏扫卡一道,上线前必须过渗透,生产环境每季度漏扫加一次定向渗透。听起来很重,但他们去年真的被监管罚过一次,因为一个已知漏洞没修——漏扫报告里早就写了,运维觉得“内网系统没人会打”,结果被人从外网跳板进来端了。
别把体温计当CT机
回到开头那个问题。漏扫告诉你“哪里可能有问题”,渗透告诉你“问题到底有多严重”。漏扫是广度优先,渗透是深度优先。漏扫覆盖全,但浅;渗透覆盖窄,但深。
如果你只有预算做一件事,先做漏扫,把已知的、低垂的果实摘掉。但别指望漏扫能告诉你系统到底能不能被攻破。那就像拿体温计测出38度,然后跟医生说“我没事,就是有点热”——医生会让你去做血常规的。
工具是工具,人是人。漏扫替代不了渗透,渗透也替代不了漏扫。两者都做,才是正常的做法。
(责任编辑:知识)














