- ```html
下面不可能存在于基于网络的下面漏洞扫描器中 下面不可能存在于基于网络的漏洞扫描器中
一个基于网络的漏洞扫描器,核心工作方式很固定:它坐在网络这一头,于基于网向另一头的络的漏洞目标发送数据包,然后根据返回的扫描响应判断是否存在漏洞。整个过程里,器中扫描器不接触目标主机的下面键盘、不读取它的于基于网内存、不翻看它的络的漏洞本地文件系统。它只能看到目标暴露在网络接口上的扫描那层皮。
所以,器中如果有人在扫描器的下面功能列表里看到“本地提权漏洞检测”,而且这个检测不依赖任何远程可触发的于基于网行为,那基本可以断定是络的漏洞胡扯。本地提权漏洞——比如脏牛(CVE-2016-5195)——需要攻击者在目标机器上执行代码,扫描或者至少能运行某个本地程序。器中一个网络扫描器能做的,是发现目标是否运行了存在该漏洞的内核版本,但它无法确认漏洞是否真的可利用,因为它没法在目标上跑一个本地提权exploit。它只能猜。猜和“检测”是两回事。
还有一种东西也不会出现在真正的网络漏洞扫描器里:实时内存取证。有些商业产品宣传自己“能发现内存中的恶意代码注入”,听起来很唬人。但网络扫描器怎么读内存?它又没有在目标上装agent。除非它利用某个远程代码执行漏洞先打进去,再上传工具读内存——那它就已经不是扫描器了,而是攻击框架。扫描器的定位是评估,不是入侵。一旦它开始尝试实际利用漏洞并驻留,性质就变了。
再说一个更具体的。你不可能在一个基于网络的漏洞扫描器里找到“检查目标主机是否安装了杀毒软件并列出其版本”这种功能,除非那个杀毒软件恰好开了一个网络端口,并且那个端口会泄露版本信息。比如某些老版本的Symantec Endpoint Protection管理接口会暴露版本号,但那是特例,不是通用能力。扫描器不能凭空知道目标上装了什么软件,它只能看到目标愿意告诉它的东西。WMI、SSH、SMB这些协议能提供一些信息,但前提是扫描器有凭据,而且目标开放了对应服务。没有凭据的扫描器,面对一个只开了80端口的Web服务器,永远不知道它背后有没有装杀毒软件。
另一个容易混淆的点:基于网络的扫描器不可能检测“物理安全漏洞”。比如机箱锁没锁、USB口是否禁用、BIOS有没有设密码。这些信息不在网络协议里。除非目标自己通过某个管理接口上报了这些状态,但那是资产管理系统的活儿,不是漏洞扫描器的。扫描器只看网络层和应用层。
我见过一些产品文档里写“支持检测弱密码策略”,比如密码最小长度、复杂度要求。这其实也做不到,除非扫描器能远程登录到域控制器并查询组策略。但那需要域管理员凭据,而且本质上是在做配置审计,不是漏洞扫描。真正的网络漏洞扫描器检测弱密码的方式是:尝试用常见密码去登录目标服务(比如SSH、RDP、数据库),如果能登进去,就报告“存在弱密码”。它不关心目标的密码策略是什么,它只关心能不能猜中。所以“检测密码策略”这个说法本身就是误导。
还有一类东西:基于网络的扫描器无法判断一个漏洞是否已经被修补,如果修补方式不改变网络响应的话。比如某个服务在内存里修复了缓冲区溢出,但版本号没变,banner也没变。扫描器发过去的探测包不会再导致崩溃,但扫描器不知道这是因为补丁生效了,还是因为这次运气好没触发。它只能根据版本号或者已知的补丁特征来判断。如果目标故意伪装版本号,扫描器就瞎了。
最后说一个最根本的:基于网络的漏洞扫描器不可能“保证没有漏报”。它只能报告它发现的,不能报告它没发现的。有些人把扫描器当成审计神器,觉得跑一遍就万事大吉。但扫描器看不到加密流量里的漏洞,看不到需要交互才能触发的漏洞,看不到只在特定时序下才出现的竞争条件漏洞。它看到的是目标在网络上的影子,不是目标本身。把影子当成全部,那是使用者的问题,不是扫描器的问题。但如果你在扫描器的功能列表里看到“零漏报”这种词,那它一定在撒谎。
``` 顶: 5751踩: 555






评论专区