首页 > 其他分享 >【THM】Nmap Basic Port Scans(nmap基础端口扫描)-学习

【THM】Nmap Basic Port Scans(nmap基础端口扫描)-学习

时间:2022-10-27 00:12:27浏览次数:185  
标签:UDP 端口扫描 扫描 端口 TCP Nmap 数据包 nmap

本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/nmap02

介绍

在之前的文章中,我们专注于使用Nmap发现在线主机,并且到目前为止,我们已经介绍了 Nmap 扫描的三个步骤:

  • 枚举目标
  • 发现存活主机
  • 反向 DNS 查询

image

下一步将使用nmap检查哪些端口是打开的和监听的,以及哪些端口是关闭的;因此,我们将重点介绍端口扫描以及 nmap 使用的不同类型的端口扫描。

本文将解释:

  • TCP连接端口扫描
  • TCP SYN 端口扫描
  • UDP端口扫描

TCP和UDP端口状态

就像 IP 地址用于指定网络上的主机一样,TCP 端口或 UDP 端口用于标识在该主机上运行的网络服务。服务器遵循特定的网络协议来提供网络服务,此处可参考的示例包括提供时间、响应 DNS 查询和提供网页等网络服务。

一个端口通常会链接到对应的某个服务,例如,HTTP 服务器默认会绑定到 TCP 端口 80;此外,如果 HTTP 服务器支持 SSL/TLS,它将侦听 TCP 端口 443。(TCP 端口 80 和 443 是 HTTP 和 HTTPS 的默认端口;但是,如果需要,网络服务器管理员可能会选择其他端口号。)

在相同的 IP 地址上,任何单个TCP 或 UDP 端口上最多只能有一项服务可以被侦听。

我们可以简单地将端口分为两种状态:

  • Open:打开的端口表示该端口上有一些服务正在侦听。
  • Closed:关闭的端口表示该端口上没有服务被侦听。

但是,在实际情况中,我们需要考虑防火墙的影响,例如,一个端口可能是开放的,但防火墙可能会阻止数据包。 因此,Nmap 将考虑以下六种端口状态:

Open:表示服务正在监听指定的端口。

Closed:表示没有服务在监听指定的端口,尽管该端口是可访问的。 关于 " 可访问 ",意思是它是可访问的并且没有被防火墙或其他安全设备/程序阻止。

Filtered:表示由于端口不可访问,Nmap无法判断该端口是打开还是关闭。 这种状态通常是由于防火墙阻止 Nmap 到达该端口,Nmap 的数据包可能会被阻止到达该端口; 或者,响应被阻止到达 Nmap 的主机。

Unfiltered:表示虽然端口是可访问的,但 Nmap 无法确定端口是打开还是关闭。 使用 ACK 扫描 (-sA )时可能会遇到此状态。

Open|Filtered:这意味着 Nmap 无法确定端口是打开的还是被过滤的。

Closed|Filtered:这意味着 Nmap 无法确定端口是关闭还是过滤。

答题

image

TCP标志

Nmap 支持不同类型的 TCP 端口扫描,要了解这些端口扫描之间的区别,我们需要查看 TCP 标头。

TCP 标头是 TCP 段的前 24 个字节,下图显示了 RFC 793 中定义的 TCP 标头。这个图起初看起来很复杂;但是,其实很容易理解:在第一行,我们有源 TCP 端口号和目标端口号,我们可以看到端口号被分配了 16 位(2 个字节);在第二行和第三行中,我们有序列号和确认号;全图总共 6 行,每行分配了 32 位(4 个字节),一共有 24 个字节。

image

我们需要关注的重点是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:发送方没有更多数据要发送。

答题

image

Nmap端口扫描-TCP连接扫描

TCP 连接扫描通过完成 TCP 3 次握手来工作。在标准的 TCP 连接建立中,客户端会发送一个设置了 SYN 标志的 TCP 数据包,如果目标端口是打开的,则目标服务器将以 SYN/ACK 响应,最后,客户端再通过发送 ACK 完成TCP 3 次握手。

image

我们想了解的是 TCP 端口是否打开,而不是为了建立 TCP 连接;因此,在使用nmap进行TCP连接扫描时,我们会通过发送 RST/ACK 确认其状态,从而使TCP连接断开。在nmap中你可以选择使用 -sT选项运行 TCP 连接扫描。

image

需要注意的是,如果你不是特权用户(root 或 sudoer),nmap中的TCP 连接扫描是发现开放的TCP端口的唯一可能选项。

在以下 Wireshark 数据包捕获窗口中,我们看到 Nmap 会发送带有 SYN 标志的 TCP 数据包到各种端口,256、443、143 等。

默认情况下,Nmap 会尝试连接 1000 个最常用的端口。关闭的 TCP 端口会用 RST/ACK 响应 SYN 数据包,以此表明它没有打开,当我们尝试与它们启动 TCP 3 次握手时,所有关闭的端口都会重复这种模式。

image

从上图我们注意到 143 端口是开放的,所以它会回复一个 SYN/ACK,然后Nmap 再通过发送一个 ACK 完成了TCP 3 次握手过程。

下图显示了我们的 Nmap 主机和目标系统的 143 端口之间交换的所有数据包。前三个数据包是正在完成的 TCP 3 次握手,然后第四个数据包会使用RST/ACK 数据包将TCP连接拆毁。

image

为了说明 -sT(TCP 连接扫描)的效果,请查看以下命令示例,它将返回 开放状态下的目标端口的详细列表。

pentester@TryHackMe$ nmap -sT MACHINE_IP

Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 09:53 BST
Nmap scan report for MACHINE_IP
Host is up (0.0024s latency).
Not shown: 995 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
111/tcp open  rpcbind
143/tcp open  imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.40 seconds

请注意,我们可以使用 -F 启用快速模式并将扫描端口的数量从 1000 个减少到 100 个最常见的端口。值得一提的是,还可以添加 -r 选项以连续顺序扫描端口,而不是随机顺序;当测试端口是否以一致的方式打开时,此选项会很有用。

答题

image

image

Nmap端口扫描-TCP SYN 扫描

在Nmap中,非特权用户仅限于使用TCP连接扫描,但是,Nmap默认扫描模式是 SYN 扫描,该扫描模式需要特权(root 或 sudoer)用户才能运行。SYN 扫描不需要完成 TCP 3 次握手;相反,它会在收到服务器的响应后断开连接。

因为我们没有建立 TCP 连接,所以这降低了扫描被记录的机会,在Nmap中我们可以使用 -sS 选项来选择这种扫描类型。下图显示了 TCP SYN 扫描如何在未完成 TCP 3 次握手的情况下工作。

image

以下来自Wireshark的截图显示了TCP SYN 扫描进行的过程,目标的TCP 端口关闭时的行为和在TCP 连接扫描中类似(关闭的目标端口会响应一个RST,ACK)。

image

为了更好地查看两种扫描(TCP连接扫描和TCP SYN扫描)之间的差异,请参考以下的截图。

在下图的上半部分,我们可以看到一个 TCP连接扫描 -sT 的流量情况:任何打开的 TCP 端口都需要在Nmap关闭连接之前完成 TCP 3 次握手;在下图的下半部分,我们看到一个 SYN 扫描 -sS 是不需要完成 TCP 3 次握手的,相反,一旦收到来自目标的 SYN/ACK 数据包,Nmap 就会发送一个 RST 数据包来断开与目标端口的连接过程。

image

TCP SYN 扫描是以特权用户运行 Nmap 时的默认扫描模式(以 root 身份运行或使用 sudo),这是一个非常可靠的选择。SYN扫描能够成功地发现你之前通过 TCP 连接扫描找到的开放端口,但不会与目标端口建立完全的TCP 连接。

pentester@TryHackMe$ sudo nmap -sS MACHINE_IP

Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 09:53 BST
Nmap scan report for MACHINE_IP
Host is up (0.0073s latency).
Not shown: 994 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
25/tcp  open  smtp
80/tcp  open  http
110/tcp open  pop3
111/tcp open  rpcbind
143/tcp open  imap
MAC Address: 02:45:BF:8A:2D:6B (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 1.60 seconds

答题

image

tips:IRC是因特网中继聊天(Internet Relay Chat),一种网络聊天协议。

Nmap端口扫描-UDP扫描

UDP 是一种无连接协议,因此它不需要任何握手来建立连接。 我们不能保证侦听 UDP 端口的服务会响应我们的数据包,但是,如果将 UDP 数据包发送到关闭的端口,则会返回 ICMP 端口不可达错误(类型 3,代码 3)。 在nmap中,你可以使用 -sU 选项执行UDP 扫描,此外,你也可以将其与另一个 TCP 扫描结合使用。

如下图显示,如果我们向一个开放的 UDP 端口发送一个 UDP 数据包,我们不能期望任何回复;所以,向开放端口发送 UDP 数据包并不会告诉我们任何信息。

image

但是,如下图所示,如果目标的UDP端口关闭,我们就能期望得到一个类型为3(目的地不可达) 的 ICMP 数据包,并且它的代码为3(端口不可达)。

换句话说,不产生任何响应的 UDP 端口会被Nmap声明为 处于打开状态下的端口。

image

在下面的 Wireshark 捕获的效果图中,我们可以看到每个关闭的端口都会生成一个 ICMP 数据包目标不可达(端口不可达)消息。

image

查看下面的例子:对目标服务器启动 UDP 扫描是有价值的,一方面,我们能够得知 111 端口是开放的,另一方面,Nmap 无法确定 UDP 端口 68 是处于打开状态还是过滤状态。

pentester@TryHackMe$ sudo nmap -sU 10.10.201.97

Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 09:54 BST
Nmap scan report for 10.10.201.97
Host is up (0.00061s latency).
Not shown: 998 closed ports
PORT    STATE         SERVICE
68/udp  open|filtered dhcpc
111/udp open          rpcbind
MAC Address: 02:45:BF:8A:2D:6B (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 1085.05 seconds

答题

image

image

tips:UDP 端口扫描比 TCP 端口扫描花费更长的时间,在上面的例子中,我们添加了 -F 标志以加快扫描速度(扫描最常见的100个端口而不是1000);我们还添加了 -v 以在扫描进行时获取详细信息。

Nmap端口扫描-微调范围和性能

你可以指定要扫描的端口,而不是默认的 1000 个端口。指定端口的方式很直观,让我们看一些例子:

  • 端口列表:使用-p22,80,443 将扫描端口 22、80 和 443。
  • 端口范围:使用-p1-1023 将扫描 1 到 1023 之间的所有端口,而使用 -p20-25 将扫描 20 到 25 之间的端口。

你可以使用 -p- 请求扫描所有端口,-p-将扫描所有的65535个端口;如果要扫描最常见的 100 个端口,可以添加 -F;如果使用 --top-ports 10 将检查十个最常见的端口。

你可以使用 -T<0-5> 控制扫描时间,其中-T0 是最慢的,而 -T5 是最快的;根据 Nmap 手册页,有六个关于扫描时间的范本:

  • paranoid (0) - paranoid 偏执的
  • sneaky (1) - sneaky 偷偷摸摸的
  • polite (2) - polite 礼貌的
  • normal (3) - normal 正常的
  • aggressive (4) - aggressive 有侵略性的
  • insane (5) - insane 疯狂的

为避免 IDS 警报,建议考虑使用 -T0 或 -T1。其中-T0 选项一次只会扫描一个端口,并会在发送每个探测之间等待 5 分钟,所以你可以大概猜出扫描一个目标需要多长时间才能完成。如果不指定任何时间,Nmap 会使用普通的 -T3选项。

注意: -T5 在速度方面是最激进的,但是,由于丢包的可能性增加,使用-T5可能会影响扫描结果的准确性;-T4 经常在 CTF 期间和扫描靶机时使用;-T1 经常在实战中使用,在实战中保持隐蔽性是更重要的。

你可以选择使用 --min-rate <number>--max-rate <number> 来控制数据包速率;例如,--max-rate 10--max-rate=10 将确保你的nmap扫描器每秒发送的数据包不超过 10 个。

此外,你可以使用--min-parallelism <numrobes>--max-parallelism <numrobes> 控制探测并行化。Nmap 会探测目标以发现哪些主机是活动的,哪些端口是开放的; 探测并行化的意思是:指定可以并行运行的此类探测的数量。

例如,--min-parallelism=512 将使得 Nmap 保持至少 512 个并行探针; 这 512 个探针与主机发现和开放端口有关。

答题

image

小结

本文涵盖了三种类型的扫描方式

image

这些扫描类型可以让你开始发现目标主机上正在运行的 TCP 和 UDP 服务。

image

标签:UDP,端口扫描,扫描,端口,TCP,Nmap,数据包,nmap
From: https://www.cnblogs.com/Hekeats-L/p/16830628.html

相关文章

  • 【THM】Nmap Live Host Discovery(nmap存活主机发现)-学习
    本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/nmap01介绍当我们想要定位一个网络时,我们希望找到一个有效的工具来帮助我们处理重复性任务并回答以下问题:......
  • Field *****Service in com.ruoyi.web.slweb.controller.SysApplicationMapper requir
      这个问题直接去service看一下@Service这个注解有没有漏写,我的原因是在git上面拉下来的代码impl里面的的serviceimpl没有上传......
  • sqlalchemy.orm.exc.UnmappedInstanceError: Class 'builtins.list' is not mapped
    修改前@app.route('/add_course')defadd_course():course1=Course('python基础')course2=Course('Python高级')course3=Course('Pythonweb基础')......
  • Nmap抓包分析与绕过Windows防火墙
    前言在打靶场的过程中使用Nmap时发现点小问题,借此机会详细分析下情况,于是有了这篇文章。本文包含以下内容:Nmap抓包分析内网下绕过Windows防火墙扫描存活主机这......
  • python IP段指定端口扫描
    #!/usr/bin/python#-*-coding:utf-8-*-#查找哪台电脑开了远程端口fromsocketimport*#3389host='192.168.11.'opened_ports=[]foripinrange(1,2......
  • Nmap常用方法
    1、扫描单个目标地址 在Nmap后面直接添加目标地址即可扫描 nmap目标地址  2、扫描多个目标地址 如果目标不在同一网段,或在同一网段但不连续且数量不多,可以使用该......
  • Nmap诸神之眼深度解析
    Nmap诸神之眼深度解析本章内容概括:​ 1.1NMAP简介​ 1.2NMAP基本参数​ 1.3图形界面zenmap的高级使用技巧​ 1.4NMAP绕过防火墙​ 1.5Nmap脚本渗透测试......
  • Nmap安装
     Nmap(NetworkMapper,网络映射器)是一款开放源代码的网络探测和安全审核工具。它被设计用来快速扫描大型网络,包括主机探测与发现、开放的端口情况、操作系统与应用服务指纹......
  • Nmap 操作指南
    说明:该篇笔记作用于Nmap渗透测试工具的使用以及参考author:TripseupdateTime:2022.2.9PS:​​.xml格式转换.html:xsltprocmyscan.xml-omyscan.html​​功能介绍除了端口扫......
  • nmap的使用
    nmap-iLlist.txtnmap192.168.10.0/24--excludefilelist.txtnmap默认情况使用TCPACKICMP发送请求-F快速-sPping扫描不会返回太多信息,方便信息分析-P0或-Pn......