下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

端口扫描的概念及常见的类型

作者:课课家教育     来源: http://www.kokojia.com点击数:4649发布时间: 2019-02-26 15:21:22

标签: 端口扫描端口网络安全

软考,您想通过吗?一次通过才是硬道理

  一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。端口扫描技术是一项自动检测本地和远程系统端口开放情况的策略以及防范,通过端口可以判断目标系统运行的程序。

  入侵者在进行攻击前,通常会先了解自标系统的一些信息,如目标主机运行的是什么操作系统:是否有什么保护措施:运行什么服务:运行的服务的版本:存在的漏洞等。丽判断运行服务的方法就是通过端口扫描,因为常用的服务是使用标准的端口,只要扫描到相应的端口,就能知道目标主机上运行着什么服务。然后入侵者才能针对这些服务进行相应的攻击。

  基本原理

  一般的端口扫描的原理其实非常简单,只是简单的利用操作系统提供的CONNECT()系统调用,与每一个感兴趣的目标计算机的端口进行连接。如果端口处于贞听状态,那么connect()就能成功。否则,这个端口不能用,既没有提供服务。这个技术的一个最大的优点是,不需要任何权限,系统中的任何用户都有权利使用这个调用。另一个好处就是速度快,如果对每个目标端口以线性的方式使用单独的connect()调用,那么将会花费相当长的时间。可以同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,从而被过滤掉。目标计算机的Logs文件会显示一连串的连接和连接时出错的服务消息,并且能很快的使它关闭。

  常见的端口扫描类型

      TCPconnect扫描:tcp全连接扫描。使用系统提供的connect()函数来连接目标端口,与目标系统完成一次完整的三次握手过程。如果目标端口正在监听这个端口,那么connect()函数将会被成功返回,否则,说明改端口不可访问。

    TCPconnect端口扫描服务器与客户端建立连接成功(目标端口开放)的过程:

  1)Client端发送SYN

  2)Server端返回SYN/ACK,表明端口开放

  3)Client端返回ACK,表明连接已建立

  4)Client端主动断开连接。

  建立连接成功(目标端口开放)如下图所示

端口扫描的概念及常见的类型_端口扫描_端口_网络安全_课课家 

  TCPSYN扫描:这种方法也叫作半打开扫描。这种扫描方法并没有建立完整的TCP连接。首先客户端向要扫描的端口发送一个SYN分组(tcp连接的第一次握手),然后等待服务器返回的SYN/ACK应答(tcp连接的第二次握手),如果收到SYN/ACK应答,那么表示这个端口处于监听状态;如果收到RST/ACK(重置连接)则认为这个端口不在监听状态或者被防火墙拒绝了;如果什么都收不到那么表示被防火墙直接丢弃了。而客户端无论收到什么分组,都会向该端口发送一个RST/ACK分组,这样就没有建立一个完整的TCP连接,但是客户端却知道了这个端口是否开放,并且这种扫描并不会在目标系统上产生连接日志。

  TCPFIN扫描:TCPFIN 扫描是自目标端口发送一个FIN 分组。客户端首先向目标端口发送一个FIN分组(结束连接),按照RFC793的规定,目标端口如果是一个关闭的端口,那么将会返回一个RST分组;如果是一个打开的端口将会忽略这个请求。 通常只在基于UNIX的TCP/IP协议栈上才会有效。

  TCPACK扫描:该扫描方式,无法判断目标端口是否开放。首先客户端直接发送一个ACK分组给服务端,而目标端口无论是否开放都会返回一个RST分组,所以无法判断端口是否开放。通过TCPACK扫描可以用来判断防火墙配置和规则的设计,测试安全策略的有效性。

  TCPWindows扫描:基于tcp窗口大小的报告方式不规则,可检测AIX和FreeBSD系统上打开的以及被过滤/不被过滤的端口。

  TCPXmas树扫描:客户端向目标端口同时发送URG(指示数据时紧急数据,应立即处理),PUSH(强制将数据压入缓冲区),FIN(在结束TCP会话时使用)标志位,由于这三个标志位不能被同时设置,所以可以用来判断端口开放,如果目标端口开放,则这个数据包将被丢弃,什么都不返回;如果目标端口开放,则将会返回一个RST分组

  TCPXmas树扫描同样是利用了RFC793规定,只对基于UNIX的系统有效。

  TCPNULL扫描:客户端发送一个不带任何标志位的tcp数据包给目标主机,如果目标端口关闭,那么就会返回一个RST分组;如果目标端口开放则什么都不返回,直接丢弃这个数据包

  值得注意:同样只对遵守RFC793规定的基于UNIX的主机有效,windows主机无论关闭与否都会返回RST标志位,可用来判断目标操作系统。

  TCPRPC扫描:主要用于识别定位远程过程调用(rpc)端口及相关程序和版本号。

  UDP扫描:向目标端口发送一个UDP数据包,如果目标端口返回一个ICMP端口不可达的icmp响应,那么此端口是关闭的;如果没有任何响应(被直接丢弃了)则认为是开放的。由于UDP的无连接不可靠性,扫描准确性受外界干扰。另外由于RFC1812对生成ICMP错误报文的速度做出了限制,扫描速度会很慢。

  TCP空扫描:该方法关闭掉所有标志发送一个TCP 分组。按照盯C793 应该给所有关闭着的端口发回一个RST 分组。

  Ident扫描:一般来讲,Ident服务是某个网络连接的服务器方用于验证客户方身份的。因此,监听TCP113端口的Ident服务应该是安装在客户端的,并由该网络连接的服务器方向客户方的113端口反方向建立连接然后进行通信。但用在端口扫描时刚好相反,扫描主机作为客户方与目标主机建立某个连接(比如HTTP80),在作为Ident服务的客户方与目标主机建立另一个连接,并通过后一个连接获得前一个连接的对象身份(比如HTTPSever的相关信息)。

  Ident用于确定某个TCP连接的发起用户身份,方法是与身份验证方主机的TCP113端口建立连接并通信,许多版本的Ident服务确实会响应并返回与某端口上服务进程相关联的用户属性。

  源端口扫描主要是通过扫描DNS、SMTP、POP这些默认端口,来判断其打开情况。可用的工具有SuperScan、Nmap、X-Scan等。

  Dump扫描:也被称为Idle扫描或反向扫描,在扫描主机时应用了第三方僵尸计算机扫描。由僵尸主机向目标主机发送SYN包。目标主机端口开发时回应SYN/ACK,关闭时返回RST,僵尸主机对SYN/ACK回应RST,对RST不做回应。从僵尸主机上进行扫描时,进行的是一个从本地计算机到僵尸主机的、连续的ping操作。查看僵尸主机返回的Echo响应的ID字段,能确定目标主机上哪些端口是开放的还是关闭的。

  FTPBounce扫描:操作者在本地打开与一个FTPServer的控制连接(到其TCP21端口),然后用PORT命令向FTPServer提供一个欲扫描的目标机器端口号,并发送LIST命令。这时,FTPServer会向目标主机指定端口发送连接请求,如果目标主机相应端口正在监听,则会返回成功信息,否则,会返回类似这样的连接失败信息。

  在上述的内容中,主要是花了比较大篇幅去一一列出常见的这些端口扫描的类型,每一个类型的原理过程均已简单地讲了一下,接下来就靠大家去自行理解与深入学习了。更多学习内容可前往课课家教育进行查看。

赞(24)
踩(0)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程