NMap参数抓包分析——主机发现,端口扫描,服务和版本探测

一,NMap

1,NMap介绍:

NMap(Network mapper)是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
其基本功能有三个:
1,是扫描主机端口,嗅探所提供的网络服务;
2,是探测一组主机是否在线;
3,还可以推断主机所用的操作系统,到达主机所经过的路由,系统开放端口的软件版本;

2,Nmap端口状态:

当nmap向目标主机发放报文并根据返回报文从而认定端口的6种状态。(注意:这六种状态只是nmap认为的端口状态,例如:有些主机或者防火墙会返回一些不可靠的报文从而妨碍nmap对端口开放问题的确认)。

Open(开放的): 端口处于开放状态,意味着目标机器上的应用程序正在改端口监听连接/报文;

Close(关闭的): 端口处于关闭状态,这里我们值得注意的是关闭的端口也是可以访问的,只是该端口没有应用程序在它上面监听,但是他们随时可能开放;

Filtered(过滤的): 由于包过滤阻止探测报文到达端口,Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙;

Unfiltered(未被过滤的): 意味着端口可访问,但NMap无法确认该端口是否开放;

这种Unfiltered状态和filtered状态的区别在于:unfiltered的端口能被nmap访问,但是nmap根据返回的报文无法确定端口的开放状态,而filtered的端口直接就没能够被nmap访问。端口被定义为Unfilterd只会发生在TCP ack扫描类型时当返回RST的报文。而端口被定义为filtered 状态的原因是是报文被防火墙设备,路由器规则,或者防火墙软件拦截,无法送达到端口,这通常表现为发送NMAP的主机收到ICMP报错报文,或者主机通过多次重复发送没有收到任何回应)。

Open | filtered状态: 这种状态主要是nmap无法区别端口处于open状态或是filtered状态。这种状态只会出现杂open端口对报文不做回应的扫描类型中,如:UDP,IP protocol,TCP null,fin,和Xmas扫描类型。

Close | filtered状态: 这种状态主要出现在nmap无法区别端口处于closed还是filtered时;

二,主机发现

主机发现就是显示某个IP地址是否为活动的(正在被某主机或者网络设备使用)。在许多网络上,在给定的时间,往往只有小部分的IP地址活动的。判断主机活跃一般有三种方式,三种方式有一种得到回应则可以证明主机活跃:

  • nmap发送一个ICMP回声请求目标主机;
  • TCP ACK 报文连接80端口和443端口;
  • 基于ICMP报文的时间戳请求目标主机;
1,nmap IP

1.1> 先主机发现,如果主机不存在则不会回应;(1.2.3.4为不活跃的主机)
在这里插入图片描述
1.2> 如果主机活跃则扫描1000个常用的TCP端口;(183.232.231.173为活跃主机)

在这里插入图片描述
1.3> 针对活跃的主机,我们打开Wireshark进行抓包查看;首先是检测目的主机的活跃,然后扫描1000个常用的端口;

在这里插入图片描述
在这里插入图片描述

2,Nmap -sP ip(ping扫描)

该选项告诉Nmap仅仅进行(主机发现),没有进一步的测试(如端口扫描或者操作系统探测)。

2.1> 先进行内网IP扫描,执行ARP扫描,可以看到目的主机的MAC地址,得到回应的主机就是活跃主机;

在这里插入图片描述用Wireshare抓包结果显示如下:

在这里插入图片描述
2.2> 进行外网IP扫描,执行的是ICMP扫描和TCP扫描;

在这里插入图片描述
使用Wireshark抓包,可以查看到相关信息:可以看到抓取的数据包只是关于主机发现的数据,得到目标目标主机存活之后也没有进行下一步的测试(端口扫描或者操作系统探测)。

在这里插入图片描述

3、Nmap -P0 ip

使用 -P0 禁止主机发现,使Nmap对每一个指定的目标IP地址进行高强度的扫描。

在这里插入图片描述
通过Wireshark抓包查看:-P0选项禁止主机发现,而是直接对主机进行高强度的扫描;

在这里插入图片描述

4、Nmap -PS ip(TCP SYN扫描)

1、主机发现只连接目标主机TCP的80端口,不使用ICMP,连接时发送SYN标志位的空TCP报文;SYN标志位告诉对方您正试图建立一个连接。通常目标端口是关闭的,一个RST(复位)包会发过来;
2、如果碰巧端口是开放的,目标会进行TCP三步握手的第二步,回应一个SYN/ACK TCP报文。
3、然后运行Nmap的机器则会扼杀这个正在建立的连接,发送一个RST而非ACK报文,否则,一个完全的连接将会建立。RST报文是运行Nmap的机器而不是Nmap本身响应的,因为它对收到的SYN/ACK感到本意外。
4、Nmap并不关心端口是否开放或者关闭。无论RST还SYN/ACK响应都会告诉Nmap该主机正在运行。

示例如下:nmap -PS 183.232.231.174;

在这里插入图片描述
使用Wireshark抓包查看,不使用ICMP,连接时发送SYN标志位的空TCP报文;

在这里插入图片描述
在这里插入图片描述
4.1> nmap -PS ip 也可以指定端口,即,nmap -PS ip 端口号

在这里插入图片描述

5、nmap -PA ip (TCP ACK扫描)

1、TCP ACK扫描和刚才讨论的TCP SYN扫描相当类似(-PA选项使用和SYN探测相同的默认端口80)。区别就是设置TCP的ACK标志位不是SYN标志位。提供SYN和ACK两种ping是使其通过防火墙的机会尽可能大;
ACK报文表示确认一个建立连接的尝试,但该连接尚未完全建立。所以远程主机应该总是回应一个RST报文,因为它们并没有发出过连接请求到运行Nmap的机器,如果它们正在运行的话。
由于没头没脑的ACK报文通常会被识别成伪造的而丢弃。解决这个两难的方法是通过即指定 -PS,又指定 -PA 来即发送 SYN 又发送 ACK。

5.1> 实例如下:nmap -PS -PA 183.232.231.174

在这里插入图片描述
5.2> 抓包分析如下:可以看到同时应用了 -PS 和 -PA 参数就构造了一个完整的数据包,不会轻易被防火墙拦截丢弃;

在这里插入图片描述

6、nmap -PU ip(UDP扫描)

1、UDP扫描会发放一个空的(除非指定了–data–length)UDP报文到给定端口。端口列表的格式和前面讨论过的 -PS 和 -PA 选项是一样的;
2、如果目标机器的端口是关闭的,UDP探测应该马上得到一个ICMP端口无法到达的回应报文。这对于Nmap意味着该机器正在运行;
3、如果到达一个开放的端口,大部分服务仅仅忽略这个空报文而不做任何回应;
4、该扫描类型的主要优势是它可以穿越之过滤TCP的防火墙和过滤器;

6.1> 示例如下:nmap -PU 121.194.14.84

在这里插入图片描述

6.2> 使用Wireshark转包查看,可以看到目标主机回应了无法达到的ICMP报文,证明目标主机存活;

在这里插入图片描述

三、端口扫描

1、nmap -sS ip(TCP SYN扫描)

1、(半连接2/3)默认用 -SP 去发现
2、SYN扫描是默认最受欢迎的扫描选项,在一个没有入侵防火墙的快速网络上,每秒种可以扫描数千个端口。SYN扫描相对于来说不张扬,不易被注意到,因为它从来不完成TCP连接。
3、它常常被称为半开放扫描,因为它不打开一个完整的TCP连接。它发送一个SYN报文,就像你真的要打开一个连接,然后等待响应。SYN/ACK表示端口在监听(开放),而RST(复位)表示没有监听者。

在这里插入图片描述
1.2>使用Wireshark抓包查看,默认用 -sP 去发现主机:

在这里插入图片描述
在这里插入图片描述

2、nmap -sT ip(TCP connect()扫描)

全连接3/3 默认用 -sP 去发现主机;

2.1> 示例如下:nmap -sT 183.232.231.173

在这里插入图片描述
2.2> 使用Wireshark抓包查看,默认使用 -sP 主机发现;

在这里插入图片描述
在这里插入图片描述

四、服务和版本探测

示例如下:nmap -sV 183.232.231.173;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45116657/article/details/93198065
今日推荐