如何扫描 20k 主机以检查它们是否启动?

信息安全 地图 主机发现
2021-08-27 01:43:12

我有一个大约 20000 个主机名的列表,我需要检查哪些主机名已启动。我会说他们中的98%都失败了。我已经尝试过 powershell 和 python 脚本但没有取得多大成功(无法在每个脚本中设置一个合适的超时)。我正在尝试将 NMap 与以下命令一起使用:

nmap.exe -iL hostnames.txt -sn --host-timeout=200ms -oN results.txt

即使这样,每个宕机的主机也需要大约 8 秒的时间,因为 NMap 在尝试将主机名解析为 IP 地址时会卡住。另外,我在开头看到一条警告说 NMap 无法导入所有必要的 NPCap 函数,但我不知道这是否是负责任的。

难道我做错了什么?有什么建议吗?

2个回答

有一些用于大规模扫描的工具已经实施了优化来解决这个问题。最知名和最发达的选择之一是masscan。它可以达到 10 MPPS(每秒百万数据包)的速度,并且可以在大约 6 分钟内扫描整个 IPv4 互联网。它甚至还有一些标志,可以让您在本地网络上进行基准测试,而不会向整个互联网发送垃圾邮件。Masscan 进行了优化,不需要您的操作系统保持完整的 TCP/IP 连接,只是为了查看哪些主机正在响应。

你可以倒过来做。

  1. Nmap 扫描块中的所有数字 IP 地址,将活动的 IP 地址保存到文件中
  2. 将这些 IP 解析为主机名。(我怀疑 DNS 服务器故意放慢速度,同时提醒安全观察员。)
  3. 做一个差异来确定哪些与您的列表匹配。

我会这样做,如果我的目标是“在某个时间点”确定哪些主机正在运行......解析他们的名字可能会在以后出现,并且会花费它想要的所有时间。只是一个想法。