当本应用程序验证主机为实时或正在运行,那么它将开始扫描端口以收集关于在电脑上运行的服务的信息。服务发现的目标范围可包括 TCP 和 UDP 端口。
TCP 端口 (RFC 793) 是逻辑连接的端点,连网的电脑可通过它参与“对话”。
周知端口是那些在互联网上最普遍开放的端口。
端口的范围可能超出了周知端口的范围。每一项漏洞检查可能添加一个待扫描的端口集。各种后门、特洛伊木马、病毒和其他蠕虫病毒会在自行安装到电脑后创建端口。流氓程序和黑客会使用这些端口访问已受侵害的电脑。这些端口没有预先定义,它们会随着时间改变。输出报告将显示在漏洞测试中扫描了哪些端口,包括恶意创建的端口。
各种类型的端口扫描方法均以自定义选项形式提供。大多数内置扫描模板包括隐藏扫描 (SYN) 方法,在此方法中,端口扫描仪进程发送带有 SYN(同步)标记的 TCP 数据包。这是最可靠的方法。同时也很快。事实上,一个 SYN 端口扫描的速度是使用全连接方法扫描(亦是 TCP 端口扫描方法的其他选项之一)速度的大约 20 倍。
穷举模板和渗透测试是例外,因为它们能允许本应用程序确定最佳的扫描方法。此选项使得在某些情况下穿过防火墙扫描成为可能;然而可靠性却有些降低。
尽管大部分模板在扫描范围中包括了 UDP 端口,但它们却将 UDP 端口限制在了众所周知的号码内。在 UDP 端口运行的服务包括 DNS、TFTP 和 DHCP。如果您想使您的扫描绝对彻底,那么您可加入更多的 UDP 端口,但这样做会增加扫描时间。
扫描所有可能的端口会花费大量时间。如果扫描是穿过防火墙进行,且防火墙已被设置丢弃发向非授权设备的数据包,那么一次完整的端口扫描可能花费几小时至几天。如果您配置本应用程序扫描所有端口,那么您可能需要修改其他参数。
服务发现是资源最敏感的扫描阶段。本应用程序会发送成百上千份数据包,扫描为数不多的资产的端口。
扫描的端口越多,扫描的时间越长。扫描最大号码的端口也不一定更准确。根据发现数据选择目标端口是最好的方法。如果您只是不确定要扫描哪些端口,就使用众所周知的号码。但注意,攻击者可能故意避开这些端口,或探测其他端口以寻找服务攻击的机会。
注意: 本应用程序依靠网络设备来返回已关闭 UDP 端口的“ICMP 端口不可到达”数据包。
如果您想更彻底一点,则使用攻击性更强模板的 TCP 端口目标列表,例如穷举或渗透测试模板。
如果您计划扫描 UDP 端口,请牢记除了先前提到的可靠性问题,扫描 UDP 端口亦可能花费大量的时间。默认情况下,本应用程序将只发送每秒两个 UDP 数据包,以避免触发内置于大部分网络设备 TCP/IP 堆栈的 ICMP 速率限制机制。发送更多的数据包可能造成数据包丢失。一次完整的 UDP 端口扫描根据带宽和目标资产的数量,可能需要多达九个小时。
除非有必要,否则不要运行完整 UDP 端口扫描以减少扫描时间。由于 UDP 是“无连接”协议,所以 UDP 端口扫描一般比 TCP 端口扫描时间要长。在 UDP 扫描中,本应用程序会把来自资产的无响应解释为一个端口为开放或已过滤的指示,这会减慢进程。当配置本应用程序以执行 UDP 扫描后,应用程序会匹配目标资产的数据包交换速度。Oracle Solaris 仅每秒响应 2 个 UDP 数据包失败以作为一项速率限制功能,所以在此环境下的这种扫描可能在某些情况下非常缓慢。
ヒント: 您可以禁用端口扫描,运行一项漏洞测试,从而实现最“隐密的”扫描。但这样做会使本应用程序无法发现服务,这将妨碍指纹识别和漏洞发现。
如果您想扫描额外 TCP 端口,在额外端口文本框内输入编号或范围。
注意: 如果您想使用 PowerShell 扫描,则添加端口 5985 到端口列表(如未包括)。如果您已启用了 PowerShell 但不想应用此功能扫描,则确保端口 5985 不在端口列表中。参看 配置扫描凭证 以了解更多。
如果您想扫描额外 UDP 端口,在额外端口文本框内输入需要的范围。
注意: 您可以咨询技术支持以修改默认服务文件设置。
此属性文件列出了每一个端口和通常在其运行的服务。如果扫描无法识别出端口的实际服务,则服务名称将来自扫描结果的这份文件。
默认文件 default-services.properties 位于以下目录:<installation_directory/plugins/java/1/NetworkScanners/1。
您可以使用列有您自己的端口/服务映射的自定义版本。
您可以在资产和服务发现过程中修改默认扫描设置,以最大化速度和资源利用。如果您不修改任何这些目录性能设置,那么扫描将根据网络条件自动调整。
改变与数据包相关的设置可能影响性能三角。参看在调整时,始终记住“三角”结构。缩短发送延迟间隔在理论上会增加扫描速度,但亦可能导致网络阻塞(视带宽而定)。延长发送延迟间隔会增加准确性。同时,更长的延迟可能亦是避免被防火墙或 IDS 设备加入黑名单的必需方法。
在以下解释如何扫描端口的部分中,所指示的数字为默认设置,可以修改。本应用程序发送一块 10 个数据包至目标端口,等待 10 毫秒,再发送 10 个数据包,对范围内每个端口均重复此过程。在扫描末尾,应用程序再发送一轮数据包,针对未收到响应的每个数据包块等待 10 毫秒。本应用程序对每个端口重复此尝试五次。
如果本应用程序在定义的重试数目内接收到响应,则它将进入扫描的下一个阶段:服务发现。如果应用程序在用尽模板中定义的所有发现方法后仍未收到响应,则它将在扫描日志中报告资产为失效。
当目标资产位于本地系统段中(不在防火墙后),扫描会更快地发生,因为资产将响应端口已关闭。当设备在防火墙后时会产生困难,这样会消耗数据包,致使它们不返回至扫描引擎。在此情况下,本应用程序将等待端口扫描间的最长时间。TCP 端口扫描可以超过五个小时,尤其当扫描包括了 65K 端口的完整端口扫描。
尝试扫描在防火墙内本地段的资产。不要尝试在某个会像防火墙一样丢弃数据包的设备外执行完整 TCP 端口扫描,除非有必要。
您可以修改以下性能设置:
注意: 对于最小重试数、数据包每秒速率和同时连接请求,默认值 0 禁用了手动设置,在此情况下,本应用程序会自动调整这些设置。若要启用手动设置,则输入值 1 或更大。
这是尝试联络目标资产的最大数值。如果超过了限制而没有响应,则不会扫描已知资产。UDP 重试数的默认值是 5,对于穿过防火墙的扫描来说,这是很高的值。如果 UDP 扫描花费的时间比预计长,则尝试把重试值减少到 2 次或 3 次。
您可以从默认的 4 次开始减少最大重试数,从而加速扫描进程。在通信紧张或防火墙规则严格的网络中,降低发送数据包的重试数是很好的精确性调整方法。在像这样的环境中,更容易丢失数据包。您可以考虑将重试值设为 3。要注意,扫描可能需要的时间更久。
设置在重试间等待的毫秒数值。您可以设置一个初始超时间隔,这是扫描将使用的第一个设置。您亦可以设置一个范围。对于最大超时间隔来说,任何低于 5 毫秒的值都会禁用手动设置,在此情况下,本应用程序会自动调整设置。发现可能根据变化的网络条件自动调整间隔设置。
这是在向每个目标主机发送数据包间等待的毫秒数值。
注意: 减少这些设置可能造成扫描结果不准确。
增加发送 TCP 数据包的延迟间隔将阻止扫描为路由器带来过重负担、触发防火墙或被入侵检测系统 (IDS) 加入黑名单中。增加发送数据包的延迟间隔亦是以消耗时间的前提下增加准确性的方法。
您可以通过降低端口扫描 10 至 25 毫秒的延迟来增加准确性。
这是在发现尝试期间每秒发送数据包的数值。增加此速率可以提高扫描速度。但是在极为拥塞的网络中可能有更多的数据包被丢弃,这会使扫描结果不准确。
注意: 若要启用失败速率限制,您必须选择隐藏 (SYN) 扫描方法。参看 扫描模板。
另一项称为失败速率限制(亦被称为失败复位速率限制)的控制可强制执行最小数据包每秒速率。当一个目标主机限制其响应端口扫描的 RST(复位)速率时,此功能可提高扫描速度。但是在这些情况下强制执行此数据包设置可能导致扫描漏过端口,这样会降低扫描准确性。禁用失败速率限制可能导致当目标主机限制其响应端口扫描的 RST(复位)速率时最小数据包设置被忽略。这可能增加扫描的准确性。
这是同时向目标主机发送发现连接请求的数值。越多的同时请求意味着更快的扫描(根据网络带宽会有所变化)。如果已设置扫描延迟值,则此设置将无效果。