我有一个循环 DNS 记录,想用 nmap 进行测试,目前它只尝试其中一个 IP(如果我运行循环,它会按顺序检查每个 IP)。
有没有办法让 nmap 从 dns 记录中测试所有 A/AAAA 记录?
例子: nmap -p25 rr-test.jacobdevans.com
答案1
我认为没有循环是不可能的。尝试使用nping
。IPv4nmap
示例:
$ host -t MX gmail.com | awk '{print $NF}' | xargs -I{} host -t A {} | awk '{print $NF}' | xargs -e nping -c 1 -p 25,465 | grep -P "(SENT)|(RECV)"
SENT (0.0014s) Starting TCP Handshake > 74.125.204.26:25
RECV (0.3228s) Handshake with 74.125.204.26:25 completed
SENT (1.0036s) Starting TCP Handshake > 74.125.201.26:25
RECV (1.1765s) Handshake with 74.125.201.26:25 completed
SENT (2.0065s) Starting TCP Handshake > 74.125.28.26:25
RECV (2.2137s) Handshake with 74.125.28.26:25 completed
SENT (3.0086s) Starting TCP Handshake > 173.194.222.26:25
RECV (3.0475s) Handshake with 173.194.222.26:25 completed
SENT (4.0116s) Starting TCP Handshake > 74.125.30.27:25
RECV (4.1853s) Handshake with 74.125.30.27:25 completed
SENT (5.0142s) Starting TCP Handshake > 74.125.204.26:465
SENT (6.0163s) Starting TCP Handshake > 74.125.201.26:465
SENT (7.0184s) Starting TCP Handshake > 74.125.28.26:465
SENT (8.0196s) Starting TCP Handshake > 173.194.222.26:465
SENT (9.0217s) Starting TCP Handshake > 74.125.30.27:465
对于 IPv6 使用命令:
$ host -t MX gmail.com | awk '{print $NF}' | xargs -I{} host -t AAAA {} | awk '{print $NF}' | xargs -e nping -c 1 -6 -p 25,465 | grep -P "(SENT)|(RECV)"
答案2
Nmap 可以完成类似的事情resolveall
NSE 脚本。它需要newtargets
脚本参数需要设置,以便实际将其他地址添加到扫描队列,而不是仅列出它们。因此您的解决方案将是:
nmap --script resolveall --script-args newtargets -p25 rr-test.jacobdevans.com
这对于具有多个 A(或 AAAA,带选项)记录的名称有效-6
,所有这些记录都会在响应单个查询时返回。可以通过从池中返回单个 A 记录来响应每个查询来实现循环 DNS;脚本resolveall
将无法检测到这一点,因为它只发送一个查询。
编辑:我忘了这是 Nmap 7.40 中的新功能,因此早期版本不会以相同的方式工作。对于这些版本(回到版本 5.50),您需要使用以下语法:
nmap --script resolveall --script-args "newtargets,resolveall.hosts={rr-test.jacobdevans.com}" -p25