生活中有许多的漏洞很影响人们的使用,有了扫描器可以很大程度的减少漏洞出现,方便人们更加方便的使用。
漏洞扫描器和病毒扫描器没什么不同。两者的目标都是在目标中发现异常的东西。病毒扫描器会扫描电脑里的本地资源和本地存储来发现潜在恶意软件。漏洞扫描器扫描一些目标找出潜在的有漏洞的软件。两者都是使用类似的技术。
基于指纹扫描
扫描器查找可识别的特征,这些特征由扫描器制作者提供或从公共数据库获取。比如
- 一个病毒扫描器会查找恶意执行文件才存在的字节序列。如果它发现这串序列,就认为发现了一个恶意文件
- 一个网络扫描器会检测一定的服务响应,来识别服务器使用的确切版本。这种方式可以非常简单,如响应直接携带版本信息,也可能非常复杂,如只能从特定行为上识别。
基于指纹扫描有如下优点:
- 非常快,因为除了序列匹配,并没有其它操作
- 它是非侵入式,没有什么副作用
- 实现简单,不需要额外定制代码,同时也有公共指纹库作为基础来建立自身数据库
但它也有缺点:
- 不准确,指纹不能确保发现结果是真实恶意
- 也没有绝对证据证明上报结果是恶意,因为只是匹配指纹,会有非常多误报
- 局限于现有指纹,无法识别变种,或新恶意软件
基于行为的扫描(启发式扫描)
另外一种扫描恶意内容的方法是通过分析目标的行为。这意味着扫描器需要清楚目标的工作模式。比如:
- 一个启发式病毒扫描器发现一个潜在执行文件。它会对执行文件进行逆向分析来检查代码是干什么的(检查它的动作是否恶意)或者在安全环境运行它来查看结果
- 一个web漏洞扫描器发现一个允许用户输入的标签,它会尝试发送一些意外数据来蒙骗目标,然后分析响应检查是否成功
启发式扫描有下列优势:
- 从理想层面,它能够发现任意威胁,甚至是定制的0day或1day。这要依赖软件的先进程度
- 它更准确,因为它可以检查假设是否正确。有时它甚至可以提供POC
但有如下不足:
- 它比基于指纹的方式更占资源,需要的时间更长。
- 制造一个这样的扫描器非常困难,对人员要求高,需要对每种检查写专门代码。
两全其美的方案
很多专业扫描器都尝试使用这两种扫描方案,但主要扫描方式依赖于进行的扫描目标:
- 病毒扫描器大多主要是基于指纹,一些高端会有基于行为,但一般是可选。
- 网络扫描器大多也是基于指纹,它主要是用于发现过时软件版本和不当配置
- web扫描器主要是启动式,适当时候会用指纹
通过上面所说的我们对扫描器有了简单的了解,以后遇到相似的问题也可以通过使用扫描器来解决一些问题。