极客之眼 Nmap:窥探世界的第一步
文章目录
- 参考
- 描述
- Nmap
- 极客之眼
- Nmap 与黑客的缠绵往事
- CIDR
- Nmap 的获取
- 检测 Nmap 是否已经安装
- 下载并安装 Nmap
- Linux
- MacOS 与 WIndows
- 区域扫描
- 基本扫描
- 扫描结果解析
- 域名解析服务
- 区域扫描
- CIDR
- 列表扫描
- 正向 DNS 查询与反向 DNS 查询
- 列表扫描
- 拒绝反向 DNS 查询
- 主机名与 CIDR
- IP 地址段
- 笛卡尔积
- 大满贯
- 目标来源
- 文件
- 随机
- 筛选
- --exclude
- 文件
- 跟踪
- 路由跟踪
- 数据包跟踪
参考
项目 | 描述 |
---|---|
搜索引擎 | Google 、Bing |
Nmap 官方 | Nmap Reference Guide |
从实践中学习 Nmap 渗透测试 | 大学霸 IT 达人 著 |
描述
项目 | 描述 |
---|---|
Linux 操作系统 | Kali-Linux(x86-64) |
Nmap | 7.93 |
Nmap
极客之眼
Nmap(Network Mapper) 是 一个免费的开源网络扫描工具,它可以用来探测主机和端口,以及执行漏洞扫描和安全审计。Nmap可以扫描单个主机或整个网络段,识别目标主机的操作系统、应用程序和服务,确定网络拓扑,并生成可视化的拓扑图和报告。Nmap 可在所有主要计算机操作系统上运行,并且提供控制台和图形版本。
Nmap 具有许多高级功能,包括对不同类型的扫描技术和扫描策略的支持,以及对大规模网络和高速网络的扫描性能的优化。Nmap 还支持自定义脚本,可以扩展其功能以满足不同的需求。
Nmap 在安全审计、渗透测试、网络管理和漏洞研究等领域广泛应用。由于其广泛的功能和开放源代码的特点,Nmap 已经成为网络安全领域中最受欢迎和使用的工具之一。
Nmap 与黑客的缠绵往事
Nmap 常常出现在一些与计算机黑客相关的电影和电视剧中,包括但不限于:
-
电影《银翼杀手2049》(Blade Runner 2049,2017),其中一个角色使用 Nmap 进行网络扫描。
-
《黑客帝国》(The Matrix,1999年):Nmap在该电影中被用于侦察目标网络。
-
《黑客帝国2:重装上阵》(The Matrix Reloaded,2003年):Nmap 在该电影中被用于扫描一个虚拟网络。
-
《黑客帝国3:矩阵革命》(The Matrix Revolutions,2003年):Nmap 在该电影中再次出现,被用于侦察和攻击目标网络。
这些作品中出现 Nmap 的场景都与黑客或计算机安全相关,显示了 Nmap 在网络安全领域中的重要性和广泛应用。
CIDR
CIDR(Classless Inter-Domain Routing,无类别域间路由) 是一种用于分配 IP 地址的标准方法,与传统的 IP 地址分配方式相比,它 可以更有效地利用IP地址空间。
在传统的IP地址分配方式中,IP 地址被分为 A、B、C、D、E 五类。每个类别的地址有不同的前缀位数,用于标识网络地址和主机地址。但是这种分配方式存在一些缺陷,如在分配 IP 地址时浪费了许多地址空间,并且不灵活,无法适应网络地址的快速增长。
为了克服这些缺陷,CIDR 被引入。CIDR 不再按照传统的IP地址分类,而是采用更加灵活的前缀长度来标识网络地址和主机地址。 CIDR通过允许网络管理员将不同的IP地址合并为一个更大的地址块,从而更有效地利用IP地址空间。CIDR还允许网络管理员按需分配地址,而无需受到传统IP地址分配方式的限制。
CIDR的出现解决了传统IP地址分配方式的许多问题,成为现代网络中IP地址分配的主流方式。
CIDR 的灵活高效
假设 有一个组织需要为其内部网络分配 IP 地址,其网络规模为 1000 个主机。在传统的 IP 地址分配方式中,该组织可以选择使用一个 B 类地址,其中网络地址占 16 位,主机地址占 16 位,总共有 65536 个地址,因此浪费了大量的地址空间。
而使用 CIDR,则可以选择一个 /22 前缀长度的地址块,其中网络地址占 22 位,主机地址占 10 位,总共有 1024个 地址。这样就不仅可以满足该组织的需要,而且可以更有效地利用IP地址空间,减少浪费。
另外,如果该组织的网络规模在未来增长到 2000个 主机,可以轻松地使用一个 /21 前缀长度的地址块来扩展网络,而无需更改现有的网络拓扑结构。
因此,CIDR 相比传统 IP 地址分配方式的优点在于更加灵活和高效,可以更好地适应网络规模和需求的变化。
Nmap 的获取
检测 Nmap 是否已经安装
获取 Nmap 的第一步是检查您是否已经拥有它。许多免费操作系统发行版(包括大多数 Linux 和 BSD 系统)都带有 Nmap 包,尽管它们可能没有默认安装。在 Unix 系统上,打开一个终端窗口并尝试执行如下命令:
nmap --version
如果 Nmap 存在并且在你的 PATH(环境变量), 您应该会看到类似于如下内容的输出。
Nmap version 7.93 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.6 openssl-3.0.8 libssh2-1.10.0 libz-1.2.13 libpcre-8.39 nmap-libpcap-1.7.3 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select
下载并安装 Nmap
Linux
如果你使用的是 Linux 系统,那么你可能可以通过软件包工具直接对 Nmap 进行下载安装。例如,在 Kali Linux 中,你可以使用如下命令来对 Nmap 进行下载安装:
apt install nmap
如果软件包工具找不到 Nmap 也不要灰心,你可以前往 Nmap 官网 进行下载。
注:
在 Nmap 官网进行软件包下载是,你可能看到的都是 rpm 格式 的软件包,这些软件包无法在基于 Debian 的 Linux 系统中直接安装。但你可以通过在控制台中执行如下命令将 rpm 格式 的软件包转化为 deb 格式的软件包。
sudo alien <Nmap 的 rpm 格式的软件包>
MacOS 与 WIndows
前往 Nmap 官网 进行 Nmap 软件包的下载并将其存放路径放置于环境变量中即可。
Nmap 官网中提供了更多的安装方法,如果上述内容无法满足您的需求,请前往 Nmap 官网中查询,此处就不再赘述了。
区域扫描
Nmap 是一个流行的网络扫描器,可以用来探测目标网络中的开放端口、操作系统类型、服务信息等。Nmap具有强大的功能和灵活性,可以通过各种选项和参数来配置扫描。
扫描目标通常是指在网络上寻找目标主机的 IP 地址和端口号,以了解网络的安全状态和漏洞。扫描目标可以是单个 IP 地址、IP 地址范围、CIDR 地址块、主机名或 URL 等。在扫描之前,需要先确定目标的范围和扫描的目的,以避免对网络造成不必要的干扰或风险。
需要注意的是,未经授权的扫描可能会触犯法律或违反道德规范,因此在进行扫描时应当获得合法授权,并遵守相关的法律法规和道德准则。同时,也应当尽可能保护自己的安全和隐私,避免将扫描结果泄露给未授权的人员或组织。
基本扫描
在终端中输入 nmap [目标IP地址] 来进行基本的主机扫描。例如,扫描192.168.1.1 主机,可以输入命令 nmap 192.168.1.1。如果想要扫描整个局域网内的主机,可以使用 nmap 192.168.1.0/24 命令,其中 /24 表示子网掩码。
举个栗子
执行如下命令以扫描 IP 地址为 172.17.48.10 的主机。
nmap 172.17.48.10
执行效果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 09:57 CST
Nmap scan report for localhost (172.17.48.10)
Host is up (0.0000060s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds
扫描结果解析
CST
CST(中国标准时间)是 China Standard Time 的缩写,指的是 UTC+8 时区,也就是 北京时间。它包括中国大陆、台湾、香港、澳门等地区的时间。
Nmap scan report for localhost (172.17.48.10)
指明扫描结果的来源,localhost 为目标计算机的名称,而 localhost 通常指本机的名称。172.17.48.10 为目标计算机的 IP 地址。
Host is up (0.0000060s latency).
Host is up 表示扫描的目标主机处于活动状态,即可访问和响应。而0.0000060s latency 则是指从扫描主机(即运行 Nmap 的计算机)到目标主机的 往返时延,也称为“延迟”或“延迟时间”。
Not shown: 998 closed tcp ports (reset)
-
reset
TCP Reset 是 TCP 协议中的一种标准控制消息,用于中止 TCP 连接或通知对方主机某些异常情况。 在扫描期间,Nmap通常会发送三种不同类型的TCP包来识别目标主机上的端口状态:SYN(同步)包、ACK(确认)包和 RST(重置)包。其中,SYN 包用于发起 TCP连接,ACK 包用于确认 TCP 连接,而 RST 包则用于重置TCP连接或表示某个端口不可用。在这个例子中,由于目标主机关闭了 998 个TCP端口,因此 Nmap 在扫描期间会收到 998 个 RST 包作为响应。 -
Not shown
其中的“Not shown”表示Nmap没有显示所有的端口扫描结果。在这个例子中,“Not shown: 998 closed tcp ports (reset)”表示在扫描期间发现了998个关闭的TCP端口,但这些端口并没有在扫描结果中显示。
PORT STATE SERVICE
其中的 PORT 列显示扫描到的端口号,而 STATE 列则显示相应端口的状态。在这个例子中,22/tcp 和 80/tcp 分别是两个开放的端口,其状态为 open。而 open 表示该端口处于开放状态,即目标主机正在运行该端口对应的服务或应用程序,并能够响应连接请求。
SERVICE 列则显示与相应端口关联的服务或应用程序的名称,这有助于识别目标主机上正在运行的服务和应用程序。在这个例子中,22/tcp 对应的服务是 SSH(Secure Shell),而 80/tcp 对应的服务是 HTTP(Hypertext Transfer Protocol)。
Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds
这是 Nmap 扫描的最后一行输出结果,它表示扫描已经完成,并提供了以下信息:
- 扫描了 1 个IP地址,即目标主机的 IP 地址。
- 扫描期间检测到 1 个主机处于活动状态,即 目标主机是活跃的,能够响应 Nmap 的请求。
- 整个扫描过程 耗时 0.23 秒,即 Nmap 在 0.23 秒内完成了对目标主机的扫描。
域名解析服务
Nmap 的目标除了可以使用 IP 地址来进行标识,还可以通过使用目标主机的域名来进行指定。Nmap 将使用 DNS(域名解析服务)服务解析域名以获取目标主机所处的 IP 地址,并对该 IP 地址所对应的主机进行扫描。对此,请参考如下示例:
nmap www.baidu.com
执行效果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 11:53 CST
Nmap scan report for www.baidu.com (112.80.248.76)
Host is up (0.038s latency).
Other addresses for www.baidu.com (not scanned): 112.80.248.75
Not shown: 998 filtered tcp ports (no-response)
PORT STATE SERVICE
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 5.51 seconds
区域扫描
在使用 Nmap 对目标进行扫描时,可以一次性指定多个目标来进行扫描,要求是这些目标需要以空格隔开。对此,请参考如下示例:
nmap 192.168.0.1 192.168.43.1 172.17.48.22
执行效果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 18:37 CST
Nmap scan report for 192.168.43.1
Host is up (0.0099s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
53/tcp open domain
Nmap done: 3 IP addresses (1 host up) scanned in 3.11 seconds
指定多个目标来进行扫描,仅仅在目标较少的情况是可行的。但不必担心,因为 Nmap 早已经为你担心过了。
Nmap 可以进行区域扫描,也就是指定一个或多个 IP 地址范围来进行扫描。
CIDR
你可以通过向 Nmap 提供一个使用 CIDR 来表示的 IP 地址范围来实现区域扫描。对此,请参考如下示例:
扫描 IP 地址范围 192.168.43.0 ~ 192.168.43.255 中的主机
nmap 192.168.43.0/24
执行结果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 12:02 CST
Nmap scan report for 192.168.43.1
Host is up (0.0054s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
53/tcp open domain
Nmap scan report for TwoMoons (192.168.43.12)
Host is up (0.0015s latency).
Not shown: 994 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
1688/tcp open nsjtp-data
2179/tcp open vmrdp
Nmap done: 256 IP addresses (2 hosts up) scanned in 6.56 seconds
扫描结果表明该次扫描总共花费时间 6.56 秒,扫描了 256 个 IP 地址,其中有 2 个主机处于活动状态。
第一个 IP 地址为 192.168.43.1,扫描结果显示该主机仅开放了用于提供 DNS 服务的 53 号端口。 第二个 IP 地址是 192.168.43.12,扫描结果显示它开放了提供 SSH、MSRPC、NetBIOS-SSN、Microsoft-DS、NSJTP-Data、VMRDP 等服务的多个端口。
列表扫描
正向 DNS 查询与反向 DNS 查询
DNS(Domain Name System) 是互联网上用于解析域名和 IP 地址 之间关系的协议。正向 DNS 查询是将域名解析为 IP 地址,而反向 DNS 查询则是将 IP 地址解析为域名。
正向 DNS 查询是常见的 DNS 查询类型。它将域名作为输入,然后查询 DNS 服务器以获取该域名对应的 IP 地址。例如,当用户在 Web 浏览器中输入网站的域名时,Web 浏览器将首先发出 DNS 查询以获取该域名的IP地址,然后将 IP 地址用于与 Web 服务器建立连接。
反向 DNS 查询是一种相对不常见的 DNS 查询类型。它将 IP 地址作为输入,然后查询 DNS 服务器以获取该IP地址对应的域名。反向 DNS 查询通常用于安全和网络管理目的。例如,当管理员需要确定哪个主机使用了特定的 IP 地址时,可以进行反向 DNS 查询以获取该 IP 地址的主机名。
列表扫描
列表扫描(List Scan) 是主机发现的一种退化形式,它只是简单地枚举指定网络(IP 地址范围)中每个主机的 IP 地址,并不发送任何数据包来探测主机的存活状态。 在默认情况下,Nmap仍会进行 反向 DNS 解析 来获取主机的名称,这有助于更好地了解网络拓扑和标识主机的身份。
举个栗子
nmap -sL 127.0.0.0/28
执行效果
执行该命令后,Nmap 将列出指定网络中的所有的 IP 地址并对这些 IP 地址进行反向 DNS 查询。
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 17:28 CST
Nmap scan report for 127.0.0.0
Nmap scan report for localhost (127.0.0.1)
Nmap scan report for 127.0.0.2
Nmap scan report for 127.0.0.3
Nmap scan report for 127.0.0.4
Nmap scan report for 127.0.0.5
Nmap scan report for 127.0.0.6
Nmap scan report for 127.0.0.7
Nmap scan report for 127.0.0.8
Nmap scan report for 127.0.0.9
Nmap scan report for 127.0.0.10
Nmap scan report for 127.0.0.11
Nmap scan report for 127.0.0.12
Nmap scan report for 127.0.0.13
Nmap scan report for 127.0.0.14
Nmap scan report for 127.0.0.15
Nmap done: 16 IP addresses (0 hosts up) scanned in 2.57 seconds
除了可以确保目标具有正确的 IP 地址外,列表扫描还可以用作健全性检查的一种方式,以确保目标网络中没有未知的主机。如果发现不认识的主机名或 IP 地址,可能需要进一步调查以避免扫描错误的公司网络。
拒绝反向 DNS 查询
反向 DNS 查询需要耗费时间,在指定网络中存在大量主机时,耗费的时间会变得十分明显。
在某些情况下,我们仅需要列出指定网络中所有的 IP 地址而不必对这些 IP 地址进行反向 DNS 查询。在这类情况下,我们可以使用 -n 选项来拒绝列表扫描这一默认行为(反向 DNS 查询)。对此,请参考如下示例:
nmap -sL -n 127.0.0.0/28
执行效果
由于没有对指定网络中的每一个 IP 地址进行反向 DNS 查询,执行上述命令后便立刻得到了输出。
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 17:27 CST
Nmap scan report for 127.0.0.0
Nmap scan report for 127.0.0.1
Nmap scan report for 127.0.0.2
Nmap scan report for 127.0.0.3
Nmap scan report for 127.0.0.4
Nmap scan report for 127.0.0.5
Nmap scan report for 127.0.0.6
Nmap scan report for 127.0.0.7
Nmap scan report for 127.0.0.8
Nmap scan report for 127.0.0.9
Nmap scan report for 127.0.0.10
Nmap scan report for 127.0.0.11
Nmap scan report for 127.0.0.12
Nmap scan report for 127.0.0.13
Nmap scan report for 127.0.0.14
Nmap scan report for 127.0.0.15
Nmap done: 16 IP addresses (0 hosts up) scanned in 0.00 seconds
主机名与 CIDR
Nmap 还支持使用 主机名 与 CIDR 搭配一同描述需要被扫描的目标主机。对此,请参考如下示例:
nmap -sL -n www.baidu.com/30
扫描结果
由 CIDR 指定的网络位为 30 bit,故主机位有 2 bit(IPv4 使用 32 bit 来表示 IP 地址),可以表示该网络中的四台(由 2 2 2^2 22 的计算结果得出)不同的主机 IP。因此本次扫描的目标为包含 www.baidu.com (112.80.248.76) 在内的四台主机。
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 16:38 CST
Nmap scan report for www.baidu.com (112.80.248.76)
Other addresses for www.baidu.com (not scanned): 112.80.248.75
Nmap scan report for 112.80.248.77
Nmap scan report for 112.80.248.78
Nmap scan report for 112.80.248.79
Nmap done: 4 IP addresses (0 hosts up) scanned in 0.07 seconds
IP 地址段
在使用 Nmap 的过程中,你还可以通过 IP 地址段的方式向 Nmap 指定需要被扫描的 IP 范围。通过 IP 地址段,你将能够以相比 CIDR 更灵活精确的方式指定目标主机。你可以通过如下示例理解 IP 地址段(在 IP 地址段中,使用符号 - 来规定范围)。
nmap -sL 192.168.43.150-155
执行效果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 17:32 CST
Nmap scan report for 192.168.43.150
Nmap scan report for 192.168.43.151
Nmap scan report for 192.168.43.152
Nmap scan report for 192.168.43.153
Nmap scan report for 192.168.43.154
Nmap scan report for 192.168.43.155
Nmap done: 6 IP addresses (0 hosts up) scanned in 0.07 seconds
注:
在使用符号 - 来指定范围的同时,还可以通过使用符号 “,” 以允许在 IP 地址中的某一字节中指定多段范围。对此,请参考如下示例:
nmap -sL 192.168.43.150-152,153,154-155
执行效果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 18:21 CST
Nmap scan report for 192.168.43.150
Nmap scan report for 192.168.43.151
Nmap scan report for 192.168.43.152
Nmap scan report for 192.168.43.153
Nmap scan report for 192.168.43.154
Nmap scan report for 192.168.43.155
Nmap done: 6 IP addresses (0 hosts up) scanned in 0.14 seconds
笛卡尔积
不单单能够对 IP 地址中的单个字节使用 - 符号来确定其范围,你还可以在多个字节中使用该符号。扫描的目标对象将以多个小范围之间的笛卡尔积的形式存在。对此,请参考如下示例:
nmap -sL 192-193.168.43.150-155
执行效果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 17:33 CST
Nmap scan report for 192.168.43.150
Nmap scan report for 192.168.43.151
Nmap scan report for 192.168.43.152
Nmap scan report for 192.168.43.153
Nmap scan report for 192.168.43.154
Nmap scan report for 192.168.43.155
Nmap scan report for 193.168.43.150
Nmap scan report for 193.168.43.151
Nmap scan report for 193.168.43.152
Nmap scan report for 193.168.43.153
Nmap scan report for 193.168.43.154
Nmap scan report for 193.168.43.155
Nmap done: 12 IP addresses (0 hosts up) scanned in 0.08 seconds
注:
同样,你也可以在 IP 地址的多个字节中使用符号 “,” 用以指定多个范围。对此,请参考如下示例:
nmap -sL 192,193.168.43.150,151-155
执行效果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 17:41 CST
Nmap scan report for 192.168.43.150
Nmap scan report for 192.168.43.151
Nmap scan report for 192.168.43.152
Nmap scan report for 192.168.43.153
Nmap scan report for 192.168.43.154
Nmap scan report for 192.168.43.155
Nmap scan report for 193.168.43.150
Nmap scan report for 193.168.43.151
Nmap scan report for 193.168.43.152
Nmap scan report for 193.168.43.153
Nmap scan report for 193.168.43.154
Nmap scan report for 193.168.43.155
Nmap done: 12 IP addresses (0 hosts up) scanned in 0.12 seconds
大满贯
在使用 - 指定主机范围的过程中,你可以在 IP 地址中的单个字节部分直接使用 - 来表示 0~255 的范围。使用
nmap -sL -n 0-255.-.-.-
你将得到 IP 协议所支持的所有有效的 IP 地址。你可能会好奇,为什么不是使用 nmap -sL -n 0-255.-.-.- 而不是 nmap -sL -n -.-.-.-。这是由于 Linux 将 - 开头的字符视为命令的选项,使用 nmap -sL -n -.-.-.- 会导致 -.-.-.- 被认为是选项而不是值而导致错误。
注:
nmap -sL -n 0-255.-.-.-
还可以被替换为
nmap -sL -n *
或
nmap -sL -n *.*.*.*
它们都可以正常的工作并得到你希望的结果。事实上,在 Nmap 指定目标的过程中,如果需要指定单个或多个的小范围(IPv4 中的单个字节)为 0~255,那么符号 * 与 符号 - 两者在大多数情况下是可替换的。
目标来源
文件
目标主机的可以来自于命令中,也可以来自于文件中。您可以使用 Nmap 的 -iL 选项 从文件中读取主机列表。主机列表文件可以包含您想要扫描的任何主机,可以用来标识主机的格式包括 IP 地址、主机名、CIDR、或 IP 地址段。每个主机必须由一个或多个空格、制表符或换行符分隔。
输入文件可以包含以 # 开头的注释,这些注释将被忽略,不会影响到 Nmap 的正常工作。
举个栗子
存放主机列表的文件 target.txt 中的内容
# TwoMoons
172.17.48.1 www.baidu.com
# RedHeart
192.168.43.9-13
# Binary Moon
www.bing.com/30
# Hello World
执行命令
nmap -n -sL -iL ./target.txt
扫描结果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 19:05 CST
Nmap scan report for 172.17.48.1
Nmap scan report for www.baidu.com (112.80.248.75)
Other addresses for www.baidu.com (not scanned): 112.80.248.76
Nmap scan report for 192.168.43.9
Nmap scan report for 192.168.43.10
Nmap scan report for 192.168.43.11
Nmap scan report for 192.168.43.12
Nmap scan report for 192.168.43.13
Nmap scan report for www.bing.com (204.79.197.200)
Other addresses for www.bing.com (not scanned): 13.107.21.200
Nmap scan report for 204.79.197.201
Nmap scan report for 204.79.197.202
Nmap scan report for 204.79.197.203
Nmap done: 11 IP addresses (0 hosts up) scanned in 0.21 seconds
随机
当您需要进行互联网范围内的研究时,可以使用 Nmap 中的 -iR 选项来生成随机目标列表。您可以 指定要生成的 IP 数量。在生成列表时,Nmap会自动跳过私有、多播或未分配地址范围内的IP。 但请注意,进行未经授权的扫描是非法的,并且可能会引起网络管理员的不满和投诉。因此,使用此选项需要谨慎并自行承担风险。
举个栗子
随机产生 15 个 IP 地址。
nmap -n -sL -iR 15
执行效果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 19:08 CST
Nmap scan report for 204.69.196.187
Nmap scan report for 154.244.62.174
Nmap scan report for 56.119.186.67
Nmap scan report for 34.101.71.137
Nmap scan report for 75.84.202.233
Nmap scan report for 50.214.223.218
Nmap scan report for 28.189.185.104
Nmap scan report for 70.24.99.36
Nmap scan report for 77.27.14.163
Nmap scan report for 204.154.26.215
Nmap scan report for 9.112.223.139
Nmap scan report for 48.151.70.189
Nmap scan report for 199.29.136.71
Nmap scan report for 160.145.157.48
Nmap scan report for 58.156.220.12
Nmap done: 15 IP addresses (0 hosts up) scanned in 0.00 seconds
筛选
在使用 Nmap 进行扫描时,可能会遇到需要从目标主机列表中排除某些特定主机的情况。
–exclude
–exclude 参数可用于排除单个主机或主机范围。对此,请参考如下示例:
nmap -n -sL 192.168.43.10-100 --exclude 192.168.43.20-100,192.168.43.12
执行效果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 19:44 CST
Nmap scan report for 192.168.43.10
Nmap scan report for 192.168.43.11
Nmap scan report for 192.168.43.13
Nmap scan report for 192.168.43.14
Nmap scan report for 192.168.43.15
Nmap scan report for 192.168.43.16
Nmap scan report for 192.168.43.17
Nmap scan report for 192.168.43.18
Nmap scan report for 192.168.43.19
Nmap done: 9 IP addresses (0 hosts up) scanned in 0.00 seconds
注:
被排除的主机之间使用逗号而不是空格进行分隔。
文件
我们可以将需要排除的主机记录在一个文本文件中,然后使用 –excludefile 选项指定该文件以便从主机列表中排除不需要的主机。
存放被排除主机的文件中可以包含以 # 开头的注释,这些注释将被忽略,不会影响到 Nmap 的正常工作。
举个栗子
存放被排除主机的文件 exclude.txt 的内容
# Hello China
192.168.43.20-50 192.168.43.50-100
# Binary Moon
192.168.43.12
# Red Heart
在终端中执行如下命令
nmap -n -sL 192.168.43.10-100 --excludefile exclude.txt
执行效果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 19:55 CST
Nmap scan report for 192.168.43.10
Nmap scan report for 192.168.43.11
Nmap scan report for 192.168.43.13
Nmap scan report for 192.168.43.14
Nmap scan report for 192.168.43.15
Nmap scan report for 192.168.43.16
Nmap scan report for 192.168.43.17
Nmap scan report for 192.168.43.18
Nmap scan report for 192.168.43.19
Nmap done: 9 IP addresses (0 hosts up) scanned in 0.01 seconds
跟踪
路由跟踪
在使用 Nmap 进行扫描工作时,通过使用 –traceroute 选项,你将能够在扫描过程中执行类似于 traceroute 命令的跟踪路由操作,以识别到达目标主机的路由路径。
在扫描过程中,Nmap 将向目标主机发送一系列的 ICMP 数据包,并对每个数据包的 TTL 值逐渐递增。当数据包到达下一个路由器时,它将被路由器丢弃,并返回 ICMP “time exceeded”(时间超过) 错误消息,这将提供有关到达该路由器的信息。通过分析这些错误消息,Nmap 可以确定到达目标主机的完整路由路径。
–traceroute 选项可用于帮助识别网络故障、发现网络中的瓶颈,以及更好地了解网络拓扑结构。然而,需要注意的是,这个选项可能会被一些网络管理员视为对网络的侵入,并导致被禁止或追究责任。因此,在使用这个选项时,需要确保已获得适当的授权,并遵守所有相关法律法规。
举个栗子
nmap --traceroute www.baidu.com
执行效果
Starting Nmap scan report for www.baidu.com (112.80.248.75)
Host is up (0.039s latency).
Other addresses for www.baidu.com (not scanned): 112.80.248.76
Not shown: 998 filtered tcp ports (no-response)
PORT STATE SERVICE
80/tcp open http
443/tcp open https
TRACEROUTE (using port 443/tcp)
HOP RTT ADDRESS
1 1.84 ms 172.17.48.1
2 8.57 ms 192.168.43.1
3 ... 13
14 40.78 ms 112.80.248.75
Nmap done: 1 IP address (1 host up) scanned in 11.58 seconds
其中:
-
TRACEROUTE (using port 443/tcp)
表示这是一个使用 TCP 端口 443 进行 traceroute 的扫描。 -
HOP
路由器的跳数,指从扫描主机到目标主机的中间路由器的数量。 -
RTT
往返时间(Round-Trip Time),即从扫描主机发送请求到中间路由器再返回扫描主机的总时间。 -
ADDRESS
每个中间路由器的IP地址。
从输出结果可以看出,该扫描跨越了 14 个路由器,并在 11.58 秒内完成,最终达到了目标主机 112.80.248.75。
数据包跟踪
Nmap 的 –packet-trace 选项会输出每个发送和接收的网络数据包的详细信息,包括数据包的大小、时间戳、源 IP 和端口、目标 IP 和端口以及用于发送和接收数据包的协议。此选项可以用于调试网络问题或查看扫描器如何与目标进行通信。
举个栗子
-sn 用于指定 Nmap 仅对目标主机进行主机存活性探测,即检测主机是否正在运行。使用该选项是为了避免 Nmap 默认执行的端口扫描导致数据包信息过多,增大了对数据包收发信息进行分析的难度。
nmap --packet-trace -sn www.baidu.com
执行效果
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 20:31 CST
SENT (0.1113s) ICMP [172.17.48.10 > 112.80.248.75 Echo request (type=8/code=0) id=4663 seq=0] IP [ttl=56 id=47695 iplen=28 ]
SENT (0.1115s) TCP 172.17.48.10:53372 > 112.80.248.75:443 S ttl=48 id=58953 iplen=44 seq=3307973816 win=1024 <mss 1460>
SENT (0.1115s) TCP 172.17.48.10:53372 > 112.80.248.75:80 A ttl=56 id=61205 iplen=40 seq=0 win=1024
SENT (0.1116s) ICMP [172.17.48.10 > 112.80.248.75 Timestamp request (type=13/code=0) id=32242 seq=0 orig=0 recv=0 trans=0] IP [ttl=55 id=24205 iplen=40 ]
RCVD (0.1697s) ICMP [112.80.248.75 > 172.17.48.10 Echo reply (type=0/code=0) id=4663 seq=0] IP [ttl=53 id=47695 iplen=28 ]
NSOCK INFO [0.1950s] nsock_iod_new2(): nsock_iod_new (IOD #1)
NSOCK INFO [0.1950s] nsock_connect_udp(): UDP connection requested to 114.114.114.114:53 (IOD #1) EID 8
NSOCK INFO [0.1950s] nsock_read(): Read request from IOD #1 [114.114.114.114:53] (timeout: -1ms) EID 18
NSOCK INFO [0.1950s] nsock_iod_new2(): nsock_iod_new (IOD #2)
NSOCK INFO [0.1950s] nsock_connect_udp(): UDP connection requested to 8.8.8.8:53 (IOD #2) EID 24
NSOCK INFO [0.1950s] nsock_read(): Read request from IOD #2 [8.8.8.8:53] (timeout: -1ms) EID 34
NSOCK INFO [0.1950s] nsock_write(): Write request for 44 bytes to IOD #1 EID 43 [114.114.114.114:53]
NSOCK INFO [0.1950s] nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 8 [114.114.114.114:53]
NSOCK INFO [0.1950s] nsock_trace_handler_callback(): Callback: WRITE SUCCESS for EID 43 [114.114.114.114:53]
NSOCK INFO [0.1950s] nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 24 [8.8.8.8:53]
NSOCK INFO [0.2440s] nsock_trace_handler_callback(): Callback: READ SUCCESS for EID 18 [114.114.114.114:53] (98 bytes)
NSOCK INFO [0.2440s] nsock_read(): Read request from IOD #1 [114.114.114.114:53] (timeout: -1ms) EID 50
NSOCK INFO [0.2440s] nsock_iod_delete(): nsock_iod_delete (IOD #1)
NSOCK INFO [0.2440s] nevent_delete(): nevent_delete on event #50 (type READ)
NSOCK INFO [0.2440s] nsock_iod_delete(): nsock_iod_delete (IOD #2)
NSOCK INFO [0.2440s] nevent_delete(): nevent_delete on event #34 (type READ)
Nmap scan report for www.baidu.com (112.80.248.75)
Host is up (0.058s latency).
Other addresses for www.baidu.com (not scanned): 112.80.248.76
Nmap done: 1 IP address (1 host up) scanned in 0.25 seconds
分析
这是一次对 www.baidu.com 进行的快速主机发现扫描,使用了 -sn(只进行主机发现,不进行端口扫描) 选项。
在扫描过程中,Nmap 使用了 ICMP Echo request 和 TCP SYN 包作为探测方式,通过发送这些包并等待目标主机的响应来判断目标主机是否存活。同时,该扫描还查询了 DNS 服务器来解析 www.baidu.com 的 IP 地址。输出结果显示目标主机 www.baidu.com 位于 IP 地址 112.80.248.75,主机存活并且响应速度为 0.058 秒。