最快的端口扫描方法。国家地图?

最快的端口扫描方法。国家地图?

我正在寻找一种快速方法来扫描代理上常用的开放端口。我通过 php 执行此操作,并且一直在使用 nmap 并提出了以下命令:

<?php
system("nmap -PN -p U:1194,T:21,22,25,53,80,110,111,143,443,465,993,995,3306,8443,553,554,1080,3128,6515,6588,8000,8008,8080,8081,8088,8090,8118,8880,8909,1723,7080 {$_SERVER['REMOTE_ADDR']} 2>&1"); 
?>

问题是扫描通常需要 1-2 秒才能完成,即使我刚刚定义了端口 80,它仍然需要 1-2 秒左右。

然而,在 PHP 中执行此操作将几乎立即返回或在 0.5 秒内超时:

    if( @fsockopen( $_SERVER['REMOTE_ADDR'], $port, $errstr, $errno, 0.5 ) )
    die("php_tests_callback({success: false, message: 'Client has port $port open'});");

所以我想知道是否有更优化的使用 NMAP 的方法或替代程序?我几乎想编写某种 php 分叉进程来运行大量 fsockopen。

编辑:

显然,在发布问题之前我需要阅读 NMAP man。我提出了这些参数,通常可以将扫描时间缩短到 0.50 秒或更多:

system("nmap -T5 --host-timeout 4s --min-rate 1000 -PN -p U:1194,T:21,22,25,53,80,110,111,143,443,465,993,995,3306,8443,553,554,1080,3128,6515,6588,8000,8008,8080,8081,8088,8090,8118,8880,8909,1723,7080 {$_SERVER['REMOTE_ADDR']} 2>&1"); 

但是,我仍然愿意接受其他建议/应用。

答案1

看看雨图网络托管的 Nmap 扫描仪。它是 2 年前在 Nmap 开发团队的指导下作为 Google Summer of Code 项目开发的

答案2

尝试使用-n禁用 DNS 解析的选项。

答案3

事实上 -T5 --host-timeout 是正确的方法。

udp 端口​​扫描可能会减慢扫描速度。通过删除此端口 udp1194,您可以进一步加快扫描速度。

我可能是错的,因为 -T5 选项可能已经取消了 udp 扫描,因为它花费的时间太长。

根据 nmap 开发人员编写的“Nmap 发现协议”,我引用:

UDP 扫描的另一大挑战是快速完成扫描。开放和过滤的端口很少发送任何响应,导致 Nmap 超时并重新传输,以防探测或响应丢失。关闭的端口通常是一个更大的问题。它们通常会发回 ICMP 端口不可达错误。但与关闭 TCP 端口发送的 RST 数据包响应 SYN 或连接扫描不同,许多主机默认对 ICMP 端口不可达消息进行速率限制。 Linux 和Solaris 对此特别严格。例如,Felix 上的 Linux 2.4.20 内核将目标不可达消息限制为每秒一条(在 net/ipv4 I icmp.c 中)。

扫描 UDP 端口很重要,因为许多易受攻击的服务都使用该协议,但 UDP 扫描的时序特征和性能要求与 TCP 扫描有很大不同。特别值得关注的是 ICMP 错误率限制,这种情况极为常见,并且对 UDP 扫描的影响远高于 TCP。当性能至关重要时,我不建议结合 TCP 和 UDP 扫描。

相关内容