THM-nmap基本端口扫描

作者:xiaowu 日期: 分类:xiaowu 浏览:630

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的区别:

  1. -sS (TCP SYN Scan):

    • 发送 SYN 包到目标端口。

    • 根据目标主机的回应来确定端口状态:

    • SYN/ACK: 端口开放。

    • RST: 端口关闭。

    • 无回应或回应被防火墙阻止:端口被过滤。

    • 目的: 进行端口扫描,以检测目标主机上哪些端口是开放的。

    • 行为:

    • 使用场景: 确定目标主机上的哪些服务和应用程序正在运行,通过扫描一系列端口。

  2. -PS (TCP SYN Ping):

    • 发送 SYN 包到指定端口(可以是单个端口或多个端口)。

    • 根据目标主机的回应来确定主机状态:

    • SYN/ACKRST: 主机在线。

    • 无回应或回应被防火墙阻止:主机可能不在线或被过滤。

    • 目的: 主机发现,用于确定目标主机是否在线,而不是扫描端口。

    • 行为:

    • 使用场景: 确认目标主机是否在线,尤其在目标主机阻止了常规的 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
-F100 个最常见的端口
-r按连续顺序扫描端口
-T<0-5>-T0 最慢,T5 最快
--max-rate 50速率 <= 50 数据包/秒
--min-rate 15速率 >= 15 数据包/秒
--min-parallelism 100至少 100 个并行探针


关键词:

网友评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。