泉缘泉 发表于 2024-6-21 04:11:24

网络扫描神器:Nmap 保姆级教程(附链接)

一、先容

Nmap(Network Mapper)是一款用于网络发现和安全审计的开源工具。它最初由 Gordon Lyon(也被称为 Fyodor Vaskovich)开发,是一款功能强盛且广泛利用的网络扫描工具。Nmap 答应用户在网络上实行主机发现、端口扫描、服务辨认和版本检测等操作,以帮助评估网络的安全性、发现主机和服务、以及辨认潜伏的安全威胁。
以下是 Nmap 的一些主要功能:

[*] 主机发现: Nmap 可以通过发送网络探测包(ping 扫描)来确定一个网络中活跃的主机。这有助于确定哪些 IP 地点上有运动的装备。
[*] 端口扫描: Nmap 可以扫描目标主机的开放端口,帮助确定哪些服务正在运行。它支持多种扫描技能,包括 TCP 扫描、UDP 扫描、SYN/ACK 扫描等。
[*] 服务辨认: Nmap 可以辨认目标主机上运行的具体服务和应用程序的版本号。这对于相识目标系统上可能存在的漏洞和弱点很有帮助。
[*] 操作系统检测: Nmap 可以或许尝试检测目标主机的操作系统类型和版本。这有助于辨认网络中的差别操作系统,并为后续的渗透测试提供信息。
[*] 脚本扫描: Nmap 支持脚本扫描,答应用户实行自界说脚本以举行更深入的信息收集和安全审计。
[*] 版本检测: Nmap 可以检测目标系统上运行的服务的版本信息。这对于确定目标系统上可能存在的已知漏洞和安全问题非常有用。
[*] 输特殊式: Nmap 可以生成多种输特殊式,包括文本、XML、JSON 等,以便进一步的分析和报告。
Nmap 是一款非常灵活和强盛的工具,它在安全团队、渗透测试人员和网络管理员之间广泛应用。需要留意的是,在利用 Nmap 举行网络扫描时,应该遵循适用的法律和道德准则,以确保正当和合规的利用。
二、安装 Nmap

Kail Linux 上默认安装了 Nmap,所以只需安装 Kail Linux 即可利用 Nmap。没有的可以参考一篇文章举行安装 Kail Linux 的操作
如何在 VM 虚拟机中安装 Kail Linux 2023.4 操作系统保姆级教程(附链接)https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8https://eclecticism.blog.csdn.net/article/details/135864762
三、利用 Nmap

3.1 主机

3.1.1 快速扫描

   nmap ip
上述命令将实行一个默认的 TCP 端口扫描,表现目标主机上开放的端口以及相应的服务信息。 
https://img-blog.csdnimg.cn/direct/c8f511e1fd544a599a3e960916f5f70b.png
3.1.2 扫描多个目标

   nmap ip ip 
扫描多个目标只需跟上 IP 即可 
https://img-blog.csdnimg.cn/direct/9a70a7692fed4fc5a9b4425e0b502c4d.png
3.1.3 网段扫描

   nmap ip/子网掩码
笔者是自己用 VM 虚拟机搭建的一个内网环境,可以看到有两台主机,一台正是咱们自己 Kail Linux
https://img-blog.csdnimg.cn/direct/90653a6276cf4042923cd786ecedeefc.png
3.1.4 过滤 IP 的网段扫描

   nmap ip/子网掩码 -exclude 需要过滤的 IP 或 文件
可以到过滤掉咱们自己后就只有一台主机了  
https://img-blog.csdnimg.cn/direct/bd3d3dd534ff4b23911e222fb9c193d9.png
3.1.5 扫描存活主机

   nmap -sP ip/子网掩码 
仅仅确定存活主机并不扫描端口
https://img-blog.csdnimg.cn/direct/548af089d2094f9c85e1abe1f9bd9bd2.png
3.2 端口

Nmap所辨认的6个端口状态。
open(开放的)
应用程序正在该端口接收TCP 连接或者UDP报文。发现这一点常常是端口扫描 的主要目标。安全意识强的人们知道每个开放的端口 都是攻击的入口。攻击者或者入侵测试者想要发现开放的端口。 而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了正当用户。 非安全扫描可能对开放的端口也感爱好,因为它们表现了网络上那些服务可供利用。
closed(关闭的)
关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出相应), 但没有应用程序在其上监听。 它们可以表现该IP地点上(主机发现,或者ping扫描)的主机正在运行up 也对部分操作系统探测有所帮助。 因为关闭的关口是可访问的,也许过会儿值得再扫描一下,可能一些又开放了。 系统管理员可能会考虑用防火墙封锁这样的端口。 那样他们就会被表现为被过滤的状态,下面讨论。
filtered(被过滤的)
由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙装备,路由器规则 或者主机上的软件防火墙。这样的端口让攻击者感觉很挫折,因为它们几乎不提供 任何信息。有时间它们相应ICMP错误消息如类型3代码13 (无法到达目标: 通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧, 不做任何相应。 这迫使Nmap重试若干次以访万一探测包是由于网络阻塞丢弃的。 这使得扫描速度明显变慢。
unfiltered(未被过滤的)
未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。 只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。 用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定 端口是否开放。
open|filtered(开放或者被过滤的)
当无法确定端口是开放还是被过滤的,Nmap就把该端口分别成 这种状态。开放的端口不相应就是一个例子。没有相应也可能意味着报文过滤器丢弃 了探测报文或者它引发的任何相应。因此Nmap无法确定该端口是开放的还是被过滤的。 UDP,IP协议, FIN,Null,和Xmas扫描可能把端口归入此类。
closed|filtered(关闭或者被过滤的)
该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。
3.2.1 端口扫描

    nmap ip -p 端口号
扫描「指定端口」,利用 -p 参数,可以一次扫描单个端口、多个端口、或扫描一个范围的端口 
https://img-blog.csdnimg.cn/direct/da48d7cfa9c44d1d97d2898c466b2d2e.png
3.2.2 端口范围扫描

   nmap ip -p 范围
https://img-blog.csdnimg.cn/direct/c061f1a155524ae187140e2f2c64828c.png
3.3 服务

3.3.1 辨认服务版本

   nmap -sV ip -p 端口号或范围
想要辨认具体的「服务版本」,可以利用 -sV 参数。
https://img-blog.csdnimg.cn/direct/39ffbbe085594f988c760d31f4ab7e3a.png
3.4 系统

3.4.1 辨认操作系统

   nmap -O ip
想要辨认「操作系统版本」,可以利用 -O 参数(需要 root 权限)
https://img-blog.csdnimg.cn/direct/343ce079389f480bb59cfc87f7d7a54e.png
3.5 扫描底子

3.5.1 TCP 三次握手

建立TCP连接的过程通常包括三个步骤:连接建立、数据传输、连接释放。在这里,我们将主要关注连接建立的过程,这个过程通常称为TCP三次握手。
TCP 三次握手过程
第一步 - 客户端发起连接哀求:


[*]客户端发送SYN(同步)包: 客户端向服务器发送一个TCP包,其中SYN标记位被设置为1,同时选择一个初始的序列号(Seq=X)。
   源端口:随机端口号
目标端口:服务器的TCP端口号
SEQ:客户端选择的初始序列号
ACK:0
Flags:SYN=1, ACK=0, 其他标记位=0
窗口大小:(根据需要设置)
第二步 - 服务器回应连接哀求:


[*]服务器发送SYN-ACK包: 服务器收到客户端的SYN包后,如果乐意建立连接,就向客户端发送一个相应,其中SYN和ACK标记位都被设置为1,同时服务器也选择一个初始的序列号(Seq=Y),并确认客户端的序列号(Ack=X+1)。
   源端口:服务器的TCP端口号
目标端口:客户端的随机端口号
SEQ:服务器选择的初始序列号
ACK:客户端的初始序列号+1
Flags:SYN=1, ACK=1, 其他标记位=0
窗口大小:(根据需要设置)
第三步 - 客户端确认连接:


[*]客户端发送ACK包: 客户端收到服务器的SYN-ACK包后,向服务器发送确认包,其中ACK标记位设置为1,确认服务器的序列号(Ack=Y+1)。
    源端口:随机端口号
目标端口:服务器的TCP端口号
SEQ:客户端的初始序列号+1
ACK:服务器的初始序列号+1
Flags:ACK=1, 其他标记位=0
窗口大小:(根据需要设置)
3.6 扫描方式

3.5.1 TCP SYN 扫描

   nmap -sS ip
TCP SYN 扫描是一种用于探测目标主机上开放端口的网络扫描技能。它属于 Nmap 工具中的一种扫描方式,通常用于获取目标系统的端口状态信息。TCP SYN 扫描的原理是发送TCP SYN包,根据目标主机的相应来判断端口的状态。
下面是 TCP SYN 扫描的工作原理:

[*] 发送TCP SYN包: 扫描发起者(通常是Nmap工具)向目标主机的指定端口发送TCP SYN包(同步包)。
[*] 期待相应: 如果目标端口是开放的,目标主机将返回一个TCP SYN/ACK包(同步/应答包)表示端口是开放的。如果目标端口是关闭的,目标主机将返回一个TCP RST包(复位包)表示端口是关闭的。
[*] 分析相应: 扫描发起者通过分析目标主机的相应来确定端口的状态。如果收到了 SYN/ACK 包,说明端口是开放的。如果收到了 RST 包,说明端口是关闭的。
[*] 不完全建立连接: 在完成第2步的过程中,扫描发起者不会完成TCP连接的建立,而是在收到相应后发送一个 RST 包,关闭连接。这样,扫描对目标系统的影响较小,因为它不会建立完整的连接。
3.5.2 TCP connect() 扫描

   此扫描为默认扫描,不用加参数
TCP Connect 扫描是 Nmap 中的另一种常见的扫描技能。与 TCP SYN 扫描雷同,TCP Connect 扫描也用于探测目标主机上的开放端口。它的工作原理是通过尝试建立完整的TCP连接来判断目标主机上的端口状态。
下面是 TCP Connect 扫描的工作原理:

[*] 尝试建立完整的TCP连接: 扫描发起者向目标主机的指定端口尝试建立完整的TCP连接。
[*] 期待相应: 如果目标端口是开放的,目标主机将接受连接并返回一个TCP ACK包(应答包)表示端口是开放的。如果目标端口是关闭的,连接尝试将失败,扫描发起者将收到一个连接拒绝错误。
[*] 分析相应: 扫描发起者通过分析目标主机的相应来确定端口的状态。如果连接乐成建立,说明端口是开放的。如果连接被拒绝,说明端口是关闭的。
[*] 完成连接: 与 TCP SYN 扫描差别,TCP Connect 扫描会尝试建立完整的连接。因此,如果连接乐成建立,扫描发起者可能会继续与目标主机互换一些数据。
3.5.3 UDP 扫描

   nmap -sU ip
UDP(User Datagram Protocol)扫描是一种用于探测目标主机上开放的 UDP(非连接性协议)端口的扫描技能。与 TCP 扫描差别,UDP 扫描涉及到发送 UDP 数据包并分析目标主机的相应。由于 UDP 是面向无连接的协议,UDP 扫描相对复杂,因为没有雷同于 TCP SYN/ACK 的确认机制。
以下是 UDP 扫描的工作原理:

[*] 发送UDP数据包: 扫描发起者向目标主机的指定 UDP 端口发送UDP数据包。
[*] 期待相应: 如果目标端口是开放的,目标主机将不发送相应,或者发送一个UDP应答包。如果目标端口是关闭的,目标主机通常会发送一个ICMP不可达消息。
[*] 分析相应: 扫描发起者通过分析目标主机的相应来确定端口的状态。缺乏确认机制使得 UDP 扫描相对不稳固,因为目标主机可能选择不相应哀求,或者相应包被防火墙过滤。
需要留意的是,UDP 扫描可能会面对一些挑战,包括:


[*]不稳固性: 由于 UDP 的面向无连接性质,扫描可能会受到目标主机或防火墙的限制,导致结果不稳固。
[*]相应表明: 分析 UDP 相应相对复杂,因为目标主机可以选择不相应,或者发送一些与端口状态无关的信息。
[*]速度较慢: 由于UDP扫描涉及期待相应,可能需要较长时间来完成扫描。
3.5.4 TCP Null 扫描

   nmap -sN ip
TCP Null 扫描是 Nmap 工具中的一种扫描技能,用于探测目标主机上的开放端口。与 TCP SYN 扫描和 TCP Connect 扫描差别,TCP Null 扫描尝试利用 TCP 协议的一个特性,即发送一个不包含任何标记位的 TCP 报文,来判断端口的状态。
以下是 TCP Null 扫描的工作原理:

[*] 发送TCP Null 包: 扫描发起者向目标主机的指定端口发送一个不包含任何标记位的 TCP 报文,即全部标记位均被设置为零。
[*] 期待相应: 如果目标端口是开放的,目标主机通常会忽略 TCP Null 报文,不发送任何相应。如果目标端口是关闭的,目标主机可能会发送一个 TCP RST(复位)包,表示端口是关闭的。
[*] 分析相应: 扫描发起者通过分析目标主机的相应来确定端口的状态。缺乏任何标记位的 TCP Null 报文通常在正常操作中是不正当的,因此,如果收到相应,则可能表示端口是关闭的。
3.5.5 TCP FIN 扫描

    nmap -sF ip
TCP FIN(Finish)扫描是 Nmap 工具中的一种扫描技能,用于探测目标主机上的开放端口。与 TCP SYN 扫描和 TCP Null 扫描雷同,TCP FIN 扫描尝试利用 TCP 协议的一个特性,即发送一个不包含 SYN 标记位和其他标记位为零的 TCP 报文,来判断端口的状态。
以下是 TCP FIN 扫描的工作原理:

[*] 发送TCP FIN 包: 扫描发起者向目标主机的指定端口发送一个不包含 SYN 标记位的 TCP 报文,即 FIN 标记位被设置为 1,而其他标记位均被设置为零。
[*] 期待相应: 如果目标端口是开放的,目标主机通常会忽略 TCP FIN 报文,不发送任何相应。如果目标端口是关闭的,目标主机可能会发送一个 TCP RST(复位)包,表示端口是关闭的。
[*] 分析相应: 扫描发起者通过分析目标主机的相应来确定端口的状态。缺乏 SYN 标记位的 TCP FIN 报文通常在正常操作中是不正当的,因此,如果收到相应,则可能表示端口是关闭的。
3.5.6 TCP Xmas 扫描

   nmap -sX ip
TCP Xmas(也称为Christmas Tree)扫描是 Nmap 工具中的一种扫描技能,用于探测目标主机上的开放端口。TCP Xmas 扫描尝试利用 TCP 协议的一个特性,即发送一个全部标记位均被设置为 1 的 TCP 报文,来判断端口的状态。
以下是 TCP Xmas 扫描的工作原理:

[*] 发送TCP Xmas 包: 扫描发起者向目标主机的指定端口发送一个全部标记位均被设置为 1 的 TCP 报文,即FIN、PSH、URG标记位均被设置为 1。
[*] 期待相应: 如果目标端口是开放的,目标主机通常会忽略 TCP Xmas 报文,不发送任何相应。如果目标端口是关闭的,目标主机可能会发送一个 TCP RST(复位)包,表示端口是关闭的。
[*] 分析相应: 扫描发起者通过分析目标主机的相应来确定端口的状态。缺乏标准标记位的 TCP Xmas 报文通常在正常操作中是不正当的,因此,如果收到相应,则可能表示端口是关闭的。
3.5.7 TCP ACK 扫描

   nmap -sA ip
TCP ACK(Acknowledgment)扫描是 Nmap 工具中的一种扫描技能,用于确定目标主机上的端口状态。与其他 TCP 扫描技能差别,TCP ACK 扫描不关心端口是否开放,而是专注于获取目标主机对特定端口的相应。
以下是 TCP ACK 扫描的工作原理:

[*] 发送TCP ACK包: 扫描发起者向目标主机的指定端口发送一个只设置 ACK 标记位的 TCP 报文。
[*] 期待相应: 无论目标端口是开放还是关闭,目标主机通常会返回一个 TCP RST(复位)包,表示对未建立连接的 ACK 哀求的拒绝。
[*] 分析相应: 扫描发起者通过分析目标主机的相应来确定端口的状态。如果收到 TCP RST 包,说明端口是关闭的;如果没有收到相应,说明端口可能是开放的或由防火墙过滤。
 3.5.8 TCP 窗口扫描

   nmap -sW ip
TCP窗口扫描是一种用于探测目标主机上开放端口的扫描技能。这种扫描技能主要关注TCP协议中的窗口字段(Window Size)。
TCP窗口扫描的工作原理如下:

[*] 发送TCP包: 扫描发起者向目标主机的指定端口发送一个TCP包,其中SYN标记位被设置,但不设置ACK标记位。
[*] 期待相应: 如果目标端口是开放的,目标主机会相应一个包,其中SYN和ACK标记位都被设置,而且TCP窗口字段包含一个非零的值。如果目标端口是关闭的,目标主机可能会相应一个RST(复位)包,或者根本不相应。
[*] 分析相应: 扫描发起者通过分析目标主机的相应来确定端口的状态。如果收到SYN/ACK相应,而且TCP窗口字段的值不为零,那么端口可能是开放的。如果收到RST相应或者根本没有相应,那么端口可能是关闭的。
 3.5.9 TCP Maimon 扫描

   nmap -sM ip
在网络扫描领域中,TCP Maimon Scan(又称 Maimonides Scan)是一种比较罕见的扫描技能,其命名来源于古代犹太学者拉比·莫西·马蒙尼德斯(Moses Maimonides)。该扫描技能利用了 TCP 协议的一些特性来确定目标主机上的端口状态。
TCP Maimon Scan 的工作原理如下:

[*] 发送TCP包: 扫描发起者向目标主机的指定端口发送一个TCP包,其中SYN和RST标记位都被设置,同时TCP窗口字段设置为零。
[*] 期待相应: 如果目标端口是开放的,目标主机会相应一个包,其中SYN、ACK和RST标记位都被设置,同时TCP窗口字段包含一个非零的值。如果目标端口是关闭的,目标主机可能会相应一个RST包。
[*] 分析相应: 扫描发起者通过分析目标主机的相应来确定端口的状态。如果收到SYN/ACK/RST相应,而且TCP窗口字段的值不为零,那么端口可能是开放的。如果收到RST相应,那么端口可能是关闭的。
 3.7 防火墙

3.7.1 报文分段

   nmap -f ip
-f 参数用于在发送的TCP数据包中举行报文分段(fragmentation)。报文分段是将大的数据包分成更小的片段以适应网络传输的过程。在网络安全领域,报文分段常常用于绕过一些网络防火墙或入侵检测系统的检测。一些防火墙和IDS/IPS系统在处置惩罚大数据包时可能会存在漏洞,通过将数据包分成小片段,可以尝试绕过这些安全装备的检测。 
3.7.2 最大传输单元

   nmap --mtu 1500 ip
--mtu 参数用于指定命据包的最大传输单元(MTU)。MTU是指一次可以或许通过通信链路的最大数据包大小。通过调解MTU,可以影响数据包的大小,从而可能绕过一些网络装备的检测。 
3.7.3 诱饵隐蔽扫描

   nmap -D <ip,ip,ip……> 目标 ip
-D 参数在Nmap中用于举行诱饵(decoy)扫描,通过在扫描中伪装其他主机的IP地点,使得被扫描目标难以确定扫描的真实来源。这有助于肴杂目标主机的入侵检测系统,使其难以追踪扫描的发起者。
3.7.4 源地点哄骗

   nmap -S <伪装的源 ip> ip 
3.7.5 源端口哄骗

   nmap --source-port 或 -g <源端口号> ip 
--source-port 和 -g 参数在Nmap中用于举行源端口欺骗(Source Port Spoofing)。它们答应你指定用于发送扫描哀求的源端口号,这样可以对目标主机举行一些肴杂,使得入侵检测系统难以精确追踪和辨认扫描流量。 
3.7.6  附加随机数据

   nmap --data-length <长度> ip
--data-length <number> 参数在Nmap中用于在发送的数据包中附加指定长度的随机数据。这个功能有助于肴杂目标主机上的入侵检测系统,使得对扫描流量的分析更加困难。
3.7.7 生存时间

   nmap --ttl <值> ip 
--ttl <value> 参数在Nmap中用于设置发送的数据包中的 IP Time-To-Live(TTL)字段的值。TTL是IP协议头部中的一个字段,用于指定命据包在网络上的最大生存时间,通常以跳数(hops)为单位。每经过一个路由器,TTL值就会减1,当TTL值减至0时,数据包将被丢弃,而且路由器会向源主机发送一个 ICMP Time Exceeded 错误消息。
3.7.8 MAC 地点哄骗

   nmap --spoof-mac <mac 地点> ip 
--spoof-mac <mac address,prefix,or vendor name> 参数在Nmap中用于举行MAC地点欺骗,即伪装发送扫描哀求的主机的MAC地点。MAC地点(Media Access Control address)是网络装备的唯一标识符。通过欺骗目标主机,改变扫描哀求中的MAC地点,可以肴杂入侵检测系统,使其难以追踪和辨认扫描来源。 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 网络扫描神器:Nmap 保姆级教程(附链接)