网络端口扫描技术研究与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络端口扫描技术研究与实现

0引言

网络出现故障时,人们总习惯先用ping命令检测目标系统是否有所反应,如果要进一步了解目标系统的网络连接情况,黑客最常使用的一种手段就是端口扫描。ping命令只能检测目标主机是否是激活的(开机状态),而许多时候,如果目标主机或者其防护设备禁止了ping探测包,那么探测者甚至连对方是否处于激活状态都不得而知,这时候,对目标主机进行全面的端口扫描不仅是为了确定其开放的网络服务,而更基本的还在于确定其是否真正处于激活状态。

当然,端口扫描最大的作用是提供目标主机网络服务的清单,许多时候,扫描者不仅获得目标主机对外开放的TCP和UDP端口列表,而且还能通过一些连接测试得到监听端口返回的banners(旗标)信息。这些信息,对于判断监听端口上开放的服务类型以及对应软件版本甚至操作系统类型都有重要作用。

总之,端口扫描是一种非常重要的预攻击探测手段,几乎是所有黑客攻击的通用手段。同时通过端口扫描技术,可以在主机或系统在被攻击前得到一些警告和预报,尽可能在早期预测攻击者的行为并获得一定的证据,从而对攻击进行预警或采取一定的防御措施。

1端口介绍

1.1 端口的概念

TCP/IP协议虽然规定了各个协议的实现细节,但却并没有确切地规定应用程序如何与协议软件进行交互。因此实际上所说的服务器和主机之间没有一个一一对应关系,主机是一个硬件的概念,是一台物理设备,而服务器是指一组软件系统,一台主机上可以装多个服务器来提供服务,而某个服务器也可以由几台计算机通过软件进行捆绑后实现,一台主机可由IP地址区分,而主机上的服务则可以由端口实现。端口通俗地讲就是一个通信通道的“门”,各种计算机服务和通信都是通过特定的端口与外部计算机进行通信,像常见的WWW、FTP、Telnet服务一样。根据Berkeley套接字,端口共用16bits来表示,故其范围为0-65535共65536个,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等

1.2 端口的分类

逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类:

(1) 按端口号分布划分

公认端口(Well Known Ports):这类端口也常称之为“常用端口”。这类端口的端口号从0到1023,它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议,这种端口不可再重新定义它的作用对象。例如,80号端口实际上总是HTTP通信所使用的,而23号端口则是Telnet服务专用的。这些端口像木马这样的黑客程序通常不会利用。

注册端口(Registered Ports):端口号从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义,一些远程控制软件和木马程序中都会有这些端口的定义的。记住这些常见的程序端口在木马程序的防护和查杀上是非常有必要的。

动态和/或私有端口(Dynamic and/or Private Ports):端口号从49152到65535。理论上,不应为服务分配这些端口。实际上,有些较为特殊的程序,特别是一些木马程序就非常喜欢用这些端口,因为这些端口常常不被引起注意,容易隐蔽。

(2) 按协议类型划分

按协议类型划分,可以分为TCP、UDP、IP和ICMP(Internet控制消息协议)等端口。下面主要介绍TCP和UDP端口:

TCP端口:即传输控制协议端口,需要在客户端和服务器之间建立三次握手连接,这样可以提供可靠

的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP 服务的80端口等。

UDP端口:即用户数据报协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等。

1.3 常见端口介绍

表1常见端口介绍

2端口扫描的概念

2.1 端口扫描的原理

端口扫描,顾名思义,就是逐个对一段端口或指定的端口进行扫描。通过扫描结果可以知道一台计算机上都提供了哪些服务,然后就可以通过所提供的这些服务的已知漏洞就可以进行攻击。

其原理是当一个主机向远端一个服务器的某一端口提出一个建立连接的请求,如果对方有此项服务,就会应答,利用这个原理,如果对所有熟知的端口或自己选定的某个范围内的熟知端口分别建立连接,并记录下远端服务器所给予的应答,通过查看记录就可以搜集到目标服务器上都安装了哪些服务,这就是端口扫描,通过端口扫描,就可以搜集到很多关于目标主机的各种很多有参考价值的信息,还可以发现一些漏洞。

通常进行端口扫描的工具目前主要采用的是端口扫描软件,也称之为“端口扫描器”。端口扫描器也是一种程序,它可以对目标主机的端口进行连接,并记录目标端口的应答。端口扫描器通过选用远程TCP/IP 协议不同的端口的服务,记录目标计算机端口给予回答的方法,可以收集到很多关于目标计算机的各种有用信息(比如是否有端口在侦听,是否允许匿名登录,是否有可写的FTP目录,是否能用Telnet等)。但扫描器并不是一个直接的攻击网络漏洞的程序,它仅仅能帮助我们发现目标主机的某些内在的弱点。一个好的扫描器能对它得到的数据进行分析,帮助我们查找目标主机的漏洞,但它不会提供进入一个系统的详细步骤。

2.2 端口扫描的目的

端口扫描主要是为三大类用户服务的:网络管理员、黑客、普通用户。他们对网络使用的角度不同,所以所进行端口扫描的目的也各不相同,具体的目的如表2所示。

3端口扫描技术

3.1 端口扫描技术的基础

端口这个概念是在传输层提出的,是传输层标志服务的手段。传输层有两个重要的协议:传输控制协议(TCP)和用户数据报协议(UDP)。

3.1.1 TCP报文格式

TCP是一种面向连接的、可靠的、基于字节流的运输层通信协议,它最主要的工作流程就是通过三次握手建立连接,通过面向连接来传输数据,最后再释放连接。

图1 TCP报文段的格式

图1中的标志位的含义分别为:

SYN—用来建立连接,让连接双方同步序列号。如果SYN=1,ACK=0,为连接请求;如果SYN=1,ACK=1,为接受连接。

FIN—用来释放一个连接。

RST—用来复位一个连接,当RST=1时,表明出现严重差错,必须释放连接,重建连接。

URG—紧急数据标志,URG=1时,表示数据包中含紧急数据,紧急指针有效。

ACK—确认标志位。ACK=I时确认号有效,ACK=0时确认号无效。

PSH—如果置位,接收端应尽快把数据传送给应用层。

3.1.2 TCP发送报文与响应报文的关系

(1) 当一个SYN或者FIN数据包到达一个关闭的端口,TCP丢弃数据包同时发送一个RST数据包。

(2) 当一个RST数据包到达一个监听端口时RST被丢弃。

(3) 当一个RST数据包到达一个关闭端口时RST被丢弃

(4) 当一个包含ACK的数据包到达一个监听口时,数据包被丢弃。

(5) 当一个SYN位关闭的数据包到达一个监听端口时,数据包被丢弃。

(6) 当一个SYN数据包到达一个监听端口时,正常的三阶段建链继续.回答一个SYN ACK数据包。

(7) 当一个FIN数据包到达一个监听端口时,数据包被丢弃。

(8) 当一个RST数据包到达SYN_RCVD端口时,目标主机仅仅退回LISTEN状态,并且不向应用层发送任何信号,处理完毕。

3.2 端口扫描的分类

端口扫描技术发展到现在,可以细分为许多类型。端口扫描的分类可以参见图2所示。

相关文档
最新文档