首页 > 其他分享 >浅谈端口扫描原理

浅谈端口扫描原理

时间:2024-04-23 18:12:58浏览次数:21  
标签:浅谈 端口扫描 扫描 端口 TCP ACK RST 原理 数据包

一、端口扫描简介

端口扫描,顾名思义,就是逐个对一段端口或指定的端口进行扫描。通过扫描结果可以知道一台计算机上都提供了哪些服务,然后就可以通过所提供的这些服务的己知漏洞就可进行攻击。其原理是当一个主机向远端一个服务器的某一个端口提出建立一个连接的请求,如果对方有此项服务,就会应答,如果对方未安装此项服务时,即使你向相应的端口发出请求,对方仍无应答,利用这个原理,如果对所有熟知端口或自己选定的某个范围内的熟知端口分别建立连接,并记录下远端服务器所给予的应答,通过查看一记录就可以知道目标服务器上都安装了哪些服务,这就是端口扫描,通过端口扫描,就可以搜集到很多关于目标主机的各种很有参考价值的信息。例如,对方是否提供FTP服务、WWW服务或其它服务。

二、端口状态

Nmap探测一个端口时可能得到以下六种端口状态:

open:端口是开放的。
closed:端口是关闭的。
filtered:端口被防火墙、IDS、IPS等屏蔽,无法确定其状态。
unfiltered:端口没有被屏蔽,但其是否开放需要进一步确定。
open|filtered:端口是开放的或被屏蔽。
closed|filtered :端口是关闭的或被屏蔽。

三、端口扫描方式

以下是三种常见的端口扫描方式:

1. 全连接扫描

全连接扫描是最传统且最直接的方法。它完全模拟客户端发起TCP连接的过程,通过执行完整的三次握手来确定端口是否开放。扫描器会调用操作系统级别的connect()函数来尝试与目标主机的某个端口建立连接。如果端口开放并监听连接,目标主机将回应一个ACK确认数据包,从而建立起连接。这种方式相对容易被防火墙和IDS(入侵检测系统)捕获。

2. 半连接扫描

半连接扫描,又称SYN扫描,是为了减少痕迹和避免引起警报而设计的更隐蔽的扫描方式。扫描器只发起TCP连接的第一次握手,即发送一个SYN数据包。如果目标端口开放,它会回应一个SYN+ACK数据包。这时,扫描器并不会完成第三次握手(即不发送ACK),而是发送一个RST(复位)数据包来终止连接。这样就不需要建立完整的连接,降低了被检测的风险。

3. 秘密扫描

“秘密扫描”通常指的是那些旨在最大程度地降低被目标系统察觉的扫描技术。除了SYN扫描之外,还有一些更隐蔽的扫描方式,例如FIN扫描、Xmas Tree扫描、Null扫描等,这些扫描方式通过发送非标准的TCP数据包(如只有FIN标志位的包或多个标志位同时置位的包)来探测端口状态,基于目标主机对这些异常数据包的不同响应来判断端口是否开放。这些扫描方式的目的在于尽量减少在目标主机上产生的日志信息,以及避免触发防火墙规则或入侵检测系统的警报。

四、常用端口扫描方法及原理

1、TCP CONNECT SCAN

原理很简单,与目标端口建立3次握手,如果成功建立则为open,收到RST则为close,此方法为全连接扫描。

 2、TCP SYN SCAN

也称为TCP半连接扫描,只发送三次握手的第一次SYN报文段,如果收到ACK+SYN则为open,收到RST则为close,这种好处是不必等待三次握手完全完成,速度快且不容易被防火墙记录进日志。

 探测结果及状态如下:

 3、TCP FIN/Xmas Tree/NULL SCAN

这几种探测方式原理相同,只是发送包的标志位不同。

FIN扫描:FIN标志位为1,其余标志位为0。

Xmas Tree扫描:也被称为Christmas Tree(圣诞树)扫描,它会设置FIN、URG和PSH标志位为1,其余标志为0。

NULL扫描:所有标志位都被设置为0。

根据规定,理论上不会将不设置SYN,RST,或者ACK位的报文发送到开放端口,如果您确实收到了,丢弃该报文。当端口关闭时,任何不包含SYN,RST,或者ACK位的报文会导致一个RST返回。而当端口开放时,应该没有任何响应。

  探测结果及状态如下:

 4、TCP ACK SCAN

当发送给对方一个含有 ACK 标志的TCP报文的时候,接收方会认为发生了错误(因为tcp建立连接时第一次握手报文不含ACK标志),接收方会返回含有RST标志的报文,无论端口是开放或者关闭。所以,不能使用TCP ACK扫描来确定端口是否开放或者关闭。但是可以利用它来扫描防火墙的配置,用它来发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的。

向服务端发送一个带有 ACK 标识的数据包,如果收到带有 RST 标识的响应,则说明服务端存在状态防火墙。当没有收到任何响应或者收到ICMP错误响应时表明该端口处于filtered状态。

 

  5、TCP WINDOW SCAN

TCP 窗口扫描的流程类似于 ACK 扫描,都是向服务端发送带有 ACK 标识的数据包,不同的在于 TCP 窗口扫描会检查收到的 RST 数据包中的窗口大小。

如果返回RST数据包说明没有防火墙过滤,端口开放或关闭根据RST包中的窗口大小判断。

如果 RST 数据包中的窗口大小不为零,则说明目标端口是开放的。如果 RST 数据包中的窗口大小为零,则说明目标端口处于关闭状态。

 

   探测结果及状态如下:

 6、UDP SCAN

UDP扫描比较简单,一般如果返回ICMP port unreachable说明端口是关闭的,而如果没有回应或有回应(有些UDP服务是有回应的但不常见)则认为是open,但由于UDP的不可靠性,无法判断报文段是丢了还是没有回应,所以一般扫描器会发送多次,然后根据结果再判断。这也是为什么UDP扫描这么慢的原因。

 

虽然因特网上最流行的服务运行在TCP协议上,但UDP服务被广泛部署。 DNS,SNMP和DHCP(注册端口53,161 / 162和67/68)是最常见的三种。 由于UDP扫描通常比TCP更慢且更困难,因此某些安全审核员会忽略这些端口。 这是一个错误,因为可利用的UDP服务非常普遍,攻击者肯定不会忽略整个协议。

UDP扫描通过向每个目标端口发送UDP数据包来工作。 对于大多数端口,此数据包将为空(无有效负载),但对于一些更常见的端口,将发送特定于协议的有效负载。 根据响应或缺少响应,端口被分配给四种状态之一,如下表所示:

标签:浅谈,端口扫描,扫描,端口,TCP,ACK,RST,原理,数据包
From: https://www.cnblogs.com/wangjiayu/p/18153387

相关文章

  • 【编译原理】原理笔记
    随便记点防止期末烂掉语法分析直接左递归的消除实际就是左递归转右递归法1:直接替换\[A\rightarrowA\alpha|\beta\Rightarrow\begin{cases}A\rightarrow\betaA',\\A'\rightarrow\alphaA'|\epsilon\end{cases}\]法2:矩阵法前置知识:\[I=\begin{pmatrix}\epsilo......
  • 将彩色图转化为灰度图及其原理介绍
    彩色图介绍彩色图像是一种包含颜色信息的图像,通常由红色、绿色和蓝色(RGB)三个颜色通道组成。这三种颜色通道可以叠加在一起来形成各种不同的颜色。彩色图像中的每个像素都有三个数值,分别表示红色、绿色和蓝色通道的强度或亮度。这三个数值通常在0到255之间,其中0代表没有该颜色通......
  • [数据库] 浅谈mysql的serverId/serverUuid
    [数据库]浅谈mysql的serverId/serverUuid0序情景1:MYSQL数据库的主从复制架构:1主1从MYSQL数据库的binlog应用情况:存在多个基于binlog同步机制的FlinkCdcJob,从MYSQL中增量同步数据某一天,FlinkCdcJob报如下错误:ConnectException:Aslavewiththesameserver_uuid/se......
  • 加锁和释放锁的原理
    深入JVM看字节码,创建如下的代码:publicclassSynchronizedDemo2{Objectobject=newObject();publicvoidmethod1(){synchronized(object){}}} 使用javac命令进行编译生成.class文件>javacSynchronizedDemo2.java 使用j......
  • 混淆原理与实践指南
     引言......
  • 浅谈sparse vec检索工程化实现
    前面我们通过两篇文章:BGEM3-Embedding模型介绍和Sparse稀疏检索介绍与实践介绍了sparse稀疏检索,今天我们来看看如何建立一个工程化的系统来实现sparsevec的检索。之前提过milvus最新的V2.4支持sparse检索,我们先看看milvus的实现。milvus的sparse检索实现milvus检索......
  • 【Java定时任务】浅谈CronTrigger的用法和在线Cron表达式生成网址
    1.CronTrigger的作用CronTriggers往往比SimpleTrigger更有用,如果您需要基于日历的概念,而非SimpleTrigger完全指定的时间间隔,复发的发射工作的时间表。CronTrigger,你可以指定触发的时间表如“每星期五中午”,或“每个工作日9:30时”,甚至“每5分钟一班9:00和10:00逢星期一上午,星期三......
  • 数据库原理第一次实验报告
    目录任务一:(数据库CAP)12345任务二:(数据库GlobalToyz)1234567891011121314151617181920写在最后数据库原理第一次实验报告任务一:(数据库CAP)1创建数据库CAP,包含4张表Customers、Products、Agents和Orders。UseMaster;CREATEDatabaseCAP;UseCAP;CREATETABLECUSTOMERS(......
  • springboot启动原理
     启动类上的注解,会扫描路径下的类进容器进行实例化。这样访问时springmvc的dispa就可以访问到这个类了。newDispatcherServlet(webapplication)springmvc需要一个web容器。这个容器参数,在startTomcat(applicationContext)方法里面传入。 ......
  • Spring Boot 启动原理
    SpringBoot启动原理SpringBoot大大简化了我们的开发配置,节省了大量的时间,确实比较方便。但是对于新手来说,如果不了解个中原理,难免会遇到坑。本文作者将带领大家走近神秘的SpringBoot,一步步破开它的神秘面纱,探索SpringBoot的启动原理。开发任何基于SpringBoot的项目......