我注意到nmap -sn
不再提供远程主机的 MAC 地址,如我可以使用 nmap 来发现 IP 和 mac 地址吗?
我希望得到类似netdiscover
输出的内容。仅 IP 和 MAC 地址。
Nmap 版本 7.80
wolf@linux:~$ nmap -V
Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
例如
wolf@linux:~$ nmap -sn -oG - 10.10.10.*
# Nmap 7.80 scan initiated Wed May 20 12:38:57 2020 as: nmap -sn -oG - 10.10.10.*
Host: 10.10.10.1 () Status: Up
Host: 10.10.10.2 () Status: Up
Host: 10.10.10.3 () Status: Up
# Nmap done at Wed May 20 12:38:59 2020 -- 256 IP addresses (3 hosts up) scanned in 2.25 seconds
wolf@linux:~$
答案1
首先,如果-oG -
正在使用(即使使用 root/sudo),您将无法看到 MAC 地址。
user@linux:~$ sudo nmap -n -sn 10.10.10.* -oG -
# Nmap 7.60 scan initiated Sat May 29 12:10:09 2020 as: nmap -n -sn -oG - 10.10.10.*
Host: 10.10.10.1 () Status: Up
Host: 10.10.10.2 () Status: Up
Host: 10.10.10.3 () Status: Up
# Nmap done at Sat May 29 12:10:11 2020 -- 256 IP addresses (3 hosts up) scanned in 2.31 seconds
user@linux:~$
第二,即使-oG -
删除后,您仍然无法看到 MAC 地址。
user@linux:~$ nmap -n -sn 10.10.10.*
Starting Nmap 7.60 ( https://nmap.org ) at 2020-05-29 12:11 +00
Nmap scan report for 10.10.10.1
Host is up (0.00086s latency).
Nmap scan report for 10.10.10.2
Host is up (0.0020s latency).
Nmap scan report for 10.10.10.3
Host is up (0.00082s latency).
Nmap done: 256 IP addresses (3 hosts up) scanned in 2.71 seconds
user@linux:~$
以 root 身份或使用 sudo 运行它,以便 nmap 可以发送原始数据包以获取远程 MAC
user@linux:~$ sudo nmap -n -sn 10.10.10.*
Starting Nmap 7.60 ( https://nmap.org ) at 2020-05-29 12:11 +00
Nmap scan report for 10.10.10.2
Host is up (0.00022s latency).
MAC Address: AA:AA:AA:AA:AA:02 (NIC manufacturer here)
Nmap scan report for 10.10.10.1
Host is up (-0.100s latency).
MAC Address: AA:AA:AA:AA:AA:01 (NIC manufacturer here)
Nmap scan report for 10.10.10.3
Host is up (0.00061s latency).
MAC Address: AA:AA:AA:AA:AA:03 (NIC manufacturer here)
Nmap done: 256 IP addresses (4 hosts up) scanned in 3.60 seconds
user@linux:~$
答案2
为此,运行 nmap根。
请注意,根据您是否是 root 权限,的行为-sn
不会相同:
-sn(无端口扫描)
此选项告诉 Nmap 在主机发现后不要进行端口扫描,而只打印出响应主机发现探测的可用主机。这通常称为“ping 扫描”,但您也可以请求运行 traceroute 和 NSE 主机脚本。默认情况下,这比列表扫描更具侵入性,并且通常可用于相同目的。它允许对目标网络进行轻度侦察而不会引起太多注意。知道有多少主机处于启动状态对攻击者来说比列表扫描提供的每个 IP 和主机名的列表更有价值。
系统管理员也经常发现此选项很有价值。它可以轻松用于计算网络上的可用机器或监控服务器可用性。这通常称为 ping 扫描,比 ping 广播地址更可靠,因为许多主机不回复广播查询。
使用 -sn 执行的默认主机发现默认包括 ICMP 回显请求、TCP SYN 到端口 443、TCP ACK 到端口 80 以及 ICMP 时间戳请求。当由非特权用户执行时,只有 SYN 数据包会(使用连接调用)发送到目标上的端口 80 和 443。当特权用户尝试扫描本地以太网上的目标时,除非指定了 --send-ip,否则将使用 ARP 请求。-sn 选项可以与任何发现探测类型(-P* 选项,不包括 -Pn)结合使用,以获得更大的灵活性。如果使用任何这些探测类型和端口号选项,则会覆盖默认探测。当运行 Nmap 的源主机和目标网络之间有严格的防火墙时,建议使用这些高级技术。否则,当防火墙丢弃探测或其响应时,可能会错过主机。
在 Nmap 的先前版本中,-sn 被称为 -sP。
来源:nmap 手册
另一种间接的方法是 ping 每个主机,然后检查您的 ARP 表。