nmap 扫描给定域名的所有已解析 IP 地址?

信息安全 地图 网络扫描仪 主机发现
2021-08-31 17:19:06

我正在使用 nmap 扫描给定的域名 example.com,它解析为 2 个 ip 地址,然后 nmap 只选择一个 ip 地址进行扫描

例如:

#nmap -vv -sV scanme.nmap.org
Starting Nmap 7.01 ( https://nmap.org ) at 2016-11-01 15:52 CET
NSE: Loaded 35 scripts for scanning.
Warning: Hostname scanme.nmap.org resolves to 2 IPs. Using 45.33.32.156.
Initiating Ping Scan at 15:52
Scanning scanme.nmap.org (45.33.32.156) [4 ports]
Completed Ping Scan at 15:52, 0.17s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 15:52
Completed Parallel DNS resolution of 1 host. at 15:52, 0.30s elapsed
Initiating SYN Stealth Scan at 15:52
Scanning scanme.nmap.org (45.33.32.156) [1000 ports]
Discovered open port 22/tcp on 45.33.32.156
Discovered open port 80/tcp on 45.33.32.156
Discovered open port 9929/tcp on 45.33.32.156

是否有强制 nmap 扫描所有 2 个 IP 地址的选项,而不仅仅是一个?谢谢

3个回答

Nmap 有一个脚本可以做到这一点,resolveall. 界面没有想象中那么好:您必须通过resolveall.hosts脚本参数提供主机名以下是如何做到这一点,并将任何已解析的地址添加到扫描队列中:

nmap --script resolveall --script-args newtargets,resolveall.hosts=example.com

编辑:如评论中所述,Nmap 7.40 及更高版本不需要resolveall.hosts脚本参数;您可以直接在命令行上提供目标,也可以像往常一样提供目标-iLnewtargets参数需要被解析的地址添加到扫描队列中,而不是仅仅列出它们在脚本的输出。Nmap 的未来版本(高于 7.60)将具有非 NSE 功能来执行此操作,但选项和语法尚未确定。

编辑 2:Nmap 7.70(今天发布)具有内置--resolve-all选项的此功能无需使用resolveallNSE 脚本,该脚本将在未来的版本中删除,也无需使用newtargetsscript 参数。

您可以运行一个 for 循环:
for srv in $(host example.com |awk '{print $4}'); do nmap $srv; done

或者,如果您有一个每行一个条目的列表:
for srv in $(cat list.txt); do nmap $srv; done

自 Nmap 7.70 [2018-03-20] 以来有一个“--resolve-all”参数,它就是这样做的 https://nmap.org/changelog.html

要让 Nmap 扫描所有解析的地址而不是只扫描第一个,请使用 --resolve-all 选项。