TCP和UDP端口状态
1. Open(开放)
解释:端口处于开放状态,意味着有服务正在监听这个端口,并且可以接受连接。
使用场景:如果你扫描一个 Web 服务器的 80 端口(HTTP 服务),并且端口状态为 Open,说明该服务器正在运行一个 Web 服务,可以响应 HTTP 请求。
2. Closed(关闭)
解释:端口处于关闭状态,意味着没有服务在监听这个端口,但是端口是可访问的,没有被防火墙或其他安全设备阻止。
使用场景:如果你扫描一个主机的 22 端口(SSH 服务),并且端口状态为 Closed,说明该主机没有运行 SSH 服务,但网络是通的,Nmap 能够到达该端口。
3. Filtered(过滤)
解释:由于防火墙或其他安全设备的阻止,端口不可访问。Nmap 无法确定端口是开放还是关闭。
使用场景:如果你扫描一个端口并且状态为 Filtered,说明防火墙阻止了 Nmap 的扫描数据包,使其无法判断端口的具体状态。
4. Unfiltered(未过滤)
解释:端口是可访问的,Nmap 能够与之通信,但无法确定端口是开放还是关闭。通常出现在使用 ACK 扫描(-sA)时。
使用场景:如果你使用 ACK 扫描一个端口,结果显示 Unfiltered,说明该端口可以进行通信,但你需要进一步的扫描来确定端口的具体状态。
5. Open|Filtered(开放|过滤)
解释:Nmap 无法确定端口是开放的还是被防火墙过滤。可能由于无响应或其他模糊原因。
使用场景:如果你扫描一个端口结果为 Open|Filtered,说明该端口可能开放,也可能被防火墙过滤,你需要更深入的扫描或其他工具来进一步分析。
6. Closed|Filtered(关闭|过滤)
解释:Nmap 无法确定端口是关闭的还是被防火墙过滤。这种状态很少见,通常由于极端情况下的模糊响应。
使用场景:这种状态意味着进一步的网络和防火墙分析是必要的,以确定端口的确切状态。
TCP标志
TCP 标头是 TCP 段的前 24 个字节,图中显示了 RFC 793 中定义的 TCP 标头。这个图起初看起来很复杂;但是,其实很容易理解:在第一行,我们有源 TCP 端口号和目标端口号,我们可以看到端口号被分配了 16 位(2 个字节);在第二行和第三行中,我们有序列号和确认号;全图总共 6 行,每行分配了 32 位(4 个字节),一共有 24 个字节。
我们需要关注的重点是Nmap可以设置或取消设置的TCP标志。我们以红色突出显示了 TCP 标志,设置标志位意味着将其值设置为 1。
从左到右,TCP 标头标志是:
URG:紧急(Urgent )标志表示紧急指针字段是有效的。紧急指针(urgent pointer)指示传入的数据是紧急的,并且设置了 URG 标志的 TCP 段会立即处理,而无需考虑必须等待先前发送的 TCP 段。
ACK:确认(Acknowledgement )标志表示确认号是有效的。它用于确认 TCP 段的接收。
PSH:推送(Push)标志,要求 TCP 及时将数据传递给应用程序。
RST:复位(Reset )标志用于复位连接。另一个设备(例如防火墙)可能会发送它来断开 TCP 连接;当数据发送到主机并且接收端没有服务应答时也会使用此标志。
SYN:同步(Synchronize )标志,用于启动 TCP 3 次握手并与其他主机同步序列号。 在建立 TCP 连接时,会随机设置序列号。
FIN:发送方没有更多数据要发送。
TCP扫描连接
RST/ACK:立即终止并确认连接状态
nmap TCP端口扫描:nmap -sT
原理:建立TCP连接后,会发送RST/ACK断开连接
如果你不是特权用户(root 或 sudoer),nmap中的TCP 连接扫描是发现开放的TCP端口的唯一可能选项。
Nmap 会尝试连接 1000 个最常用的端口。关闭的 TCP 端口会用 RST/ACK 响应 SYN 数据包,以此表明它没有打开
端口是开放的,它会回复一个 SYN/ACK,然后Nmap 再通过发送一个 ACK 完成了TCP 3 次握手过程,前三个数据包是正在完成的 TCP 3 次握手,然后第四个数据包会使用RST/ACK 数据包将TCP连接拆毁。
TCP SYN扫描
TCP SYN扫描:nmap -sS
原理:发送syn建立连接,一旦收到目标机回复,会会发送rst包终止来连接
-sS和-PS的区别:
-sS
(TCP SYN Scan):发送 SYN 包到目标端口。
根据目标主机的回应来确定端口状态:
SYN/ACK: 端口开放。
RST: 端口关闭。
无回应或回应被防火墙阻止:端口被过滤。
目的: 进行端口扫描,以检测目标主机上哪些端口是开放的。
行为:
使用场景: 确定目标主机上的哪些服务和应用程序正在运行,通过扫描一系列端口。
-PS
(TCP SYN Ping):发送 SYN 包到指定端口(可以是单个端口或多个端口)。
根据目标主机的回应来确定主机状态:
SYN/ACK 或 RST: 主机在线。
无回应或回应被防火墙阻止:主机可能不在线或被过滤。
目的: 主机发现,用于确定目标主机是否在线,而不是扫描端口。
行为:
使用场景: 确认目标主机是否在线,尤其在目标主机阻止了常规的 ICMP echo 请求(ping)时。
TCP SYN 扫描是以特权用户运行 Nmap 时的默认扫描模式(以 root 身份运行或使用 sudo)
UDP扫描
UDP扫描:nmap -sU
原理:若端口开放,则不会回复,若不开放,则会回复错误码
微调范围和性能
-p:指定端口
--top-ports 10:扫描前10端口
-T<0-5>: 控制扫描时间
注意: -T5 在速度方面是最激进的,但是,由于丢包的可能性增加,使用-T5可能会影响扫描结果的准确性;-T4 经常在 CTF 期间和扫描靶机时使用;-T1 经常在实战中使用,在实战中保持隐蔽性是更重要的。
--min-rate <number>/--max-rate <number>:控制数据包速率
--min-parallelism <numrobes>/--max-parallelism <numrobes>:控制探测并行化
探测并行化:指定可以并行运行的此类探测的数量。
总结
端口扫描类型 | 示例命令 |
---|---|
TCP连接扫描 | nmap -sT 10.10.197.231 |
TCP SYN 扫描 | sudo nmap -sS 10.10.197.231 |
UDP扫描 | sudo nmap -sU 10.10.197.231 |
这些扫描类型应该可以帮助您开始发现目标主机上正在运行的 TCP 和UDP服务。
选项 | 目的 |
---|---|
-p- | 所有端口 |
-p1-1023 | 扫描端口 1 至 1023 |
-F | 100 个最常见的端口 |
-r | 按连续顺序扫描端口 |
-T<0-5> | -T0 最慢,T5 最快 |
--max-rate 50 | 速率 <= 50 数据包/秒 |
--min-rate 15 | 速率 >= 15 数据包/秒 |
--min-parallelism 100 | 至少 100 个并行探针 |
网友评论