停止 Nmap 扫描并保留 XML 输出

信息安全 地图 网络扫描仪
2021-09-01 20:54:23

每次我运行 Nmap 时,我都会使用该-oA标志。XML 输出是一个重要的输出项,因为我将它输入到许多解析器以及带有db_import. --resume选项可以恢复扫描,但它与 XML 输出不兼容。

我经常会遇到这样的情况,扫描将在合理的时间内完成 99.XX%,然后需要两倍的时间才能完成最后一个百分比。

有没有办法让 nmap 完成扫描并尽早完成 XML 输出过程?我想避免必须通过手动/自定义脚本重新扫描或手动完成 xml 文件。

我尝试关闭 eth0 接口,认为这会使 Nmap 崩溃/退出扫描,但这似乎根本没有帮助。

注意:我知道可以在扫描开始时添加一些标志来降低超时并防止出现此问题。但是这个问题更侧重于已经开始没有这些标志的扫描。

2个回答

这里的 Nmap 开发人员:抱歉,没有完全停止扫描并最终确定 XML 输出的选项。--resume如您所述,该选项仅适用于 Normal 和 Grepable 输出。它也无法应付--randomize-hosts以下是我们需要进行的开发阶段,以使这成为可能:

  1. 扩展--resume为最后完成的主机解析 Nmap 的 XML 输出。不太难。
  2. 更改 Nmap 的 XML 输出流以破坏格式良好的 XML 文件的最终标记(如果--append-output--resume已启动)。棘手,但可行。
  3. 扩展 Nmap 的信号处理程序以最终确定 XML 输出(如果有)。困难,因为 SIGINT 和 SIGSTOP 信号处理程序应该尽可能小,并且不能依赖文件句柄处于可用状态。也许将这部分作为不同的信号处理程序(如 SIGUSR1 或其他东西)和/或将其绑定到 ctrl 键序列。还要记住 Nmap 在 Windows、Linux、OS X、FreeBSD、Solaris 和许多其他平台上的工作方式必须相同,因此在这些情况下信号处理可能看起来非常不同。

随时为此向http://issues.nmap.org/new添加功能请求,请参考此问题和答案。

更新:在Nmap 7.40中添加了恢复(但没有使用中断信号或类似信号完成(关闭打开的 XML 标记)):

从 Nmap 的 XML 输出中添加了扫描恢复。现在您可以 --resume 取消所有 3 种主要输出格式的扫描

您是否尝试向进程发送 sighup 或 sigstop?

类似kill -s STOP [pid]-s SIGSTOP