互联网端口扫描技术分析与研究.docx
- 文档编号:24252075
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:19
- 大小:68.01KB
互联网端口扫描技术分析与研究.docx
《互联网端口扫描技术分析与研究.docx》由会员分享,可在线阅读,更多相关《互联网端口扫描技术分析与研究.docx(19页珍藏版)》请在冰豆网上搜索。
互联网端口扫描技术分析与研究
本科生毕业论文(设计)
题 目
端口扫描技术分析与研究
姓 名
****学号*****
院 系
计算机科学学院
专 业
网络工程
指导教师
刘效武职称讲师
年月日
曲阜师范大学教务处制
目录
摘要4
关键词4
引言4
Abstract4
Keywords4
1TCP实现原理4
1.1TCP协议简介4
1.1.1TCP首部简介4
1.1.2TCP的连接建立过程:
5
1.1.3TCP的数据传输过程:
5
1.1.4TCP连接释放:
5
1.1.5TCP的一些实现的细节描述6
2端口6
2.1端口概念6
2.2端口与攻击6
3端口扫描的概念7
4端口扫描原理7
5端口扫描的目的7
6端口扫描的历史8
6.1手工扫描阶段8
6.2通用扫描器阶段8
6.3专用扫描器阶段8
7端口扫描技术8
7.1开放式扫描方法9
7.1.1TCPconnect()扫描9
7.1.2反向ident扫描9
7.2半开放式扫描方法9
7.2.1SYN扫描9
7.3秘密扫描10
7.3.1TCPFIN扫描10
7.3.2TCPACK扫描10
7.3.3TCPNULL扫描10
7.3.4FIN+URG+PUSH扫描10
7.4UDP扫描11
7.4.1普通UDP扫描11
7.4.2UDPrecvfrom()和write()扫描11
7.4.3高级UDP扫描技术11
7.5ICMP扫描11
7.5.1ICMPecho扫描11
7.5.2高级ICMP扫描技术11
8网络安全扫描技术的发展趋势12
9小结13
致谢13
参考文献13
端口扫描技术分析与研究
网络工程专业*****
指导老师刘效武
摘要:
随着网络技术和设备的发展,黑客攻击技术也在不断的提高,端口扫描技术作为进行网络攻击的第一道工序,在网络入侵活动中占有重要地位。
本文首先从简单介绍TCP协议出发,详细介绍了TCP建立连接时的“三次握手”过程、TCP协议的传输过程以及TCP协议的断开过程等必要的基础知识,然后结合TCP协议的实现特点和各个关键字的作用介绍了端口扫描的三个阶段以及不同用户使用端口扫描技术的相应目的,重点介绍了端口扫描技术的实现原理,以及各种端口扫描技术如开放式端口扫描、半开放式扫描,秘密扫描的研究与分析,最后介绍了UDP的扫描和ICMP扫描,讨论了防止网络入侵的最有效的方法就是关闭不必要的端口以及为打开的端口不断的更新补丁程序。
关键词:
网络安全端口扫描TCP协议
AnalysisandResearchofPortScanMethods
StudentmajoringinNetworkEngineeringZhangZhiping
TutorLiuXiaowu
Abstract:
WiththedevelopmentofNetworkTechnologiesandnetworkdevices,theattacklevelofhackersisincreasingaswell.Portscanmethodsisdevelopingaswellanditisplayingaimportantroleinthenetworkinceptioncourses.ThispaperfirstlygivesasimpleintroductionoftheTCPprotocol,anddescribestheTCPdetails,Thenitintroducesthehistoryofportscanningandtheambitionsofthreekindsofpeople.Specially,itgivethetheoriesofportscanmethods,includingTCPconnect()Scan,Half-ScanandNULL-Scan,finallyitgivesUDPscanandICMPscan,andthemethodstodefendattacks.
Keywords:
NetworkSecurity;PortScan;TCPprotocol
端口扫描作为网络入侵的第一道工序,在网络入侵过程中占有重要地位,为了有效的防止网络入侵,对网络端口扫描技术进行分析研究是非常必要的。
网络端口扫描是目前较为流行的技术,所有的连接到局域网(LAN)或者Internet的系统运行着一些熟悉或不熟悉的端口,通过端口扫描,攻击者可以获得目标主机的以下信息:
哪种服务正在运行,哪类用户拥有这些服务,是否有可以匿名登录的端口,是否某些服务需要身份认证。
端口扫描是通过对每个端口一次发送一条信息,根据返回的消息类型表明是否服务端口可以利用或者存在可以进一步利用的弱点。
1TCP实现原理
1.1TCP协议简介
TCP是一种面向连接的、可靠的字节流服务。
面向连接意味着两个使用此协议的机器必须先行建立连接。
在一个TCP连接里,仅有两方彼此进行通信,并且TCP一端收到发自TCP连接另一端的数据,它将发送一个确认。
1.1.1TCP首部简介
TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。
一个TCP报文段分为首部和数据两部分,而TCP的全部功能都在于它首部的各字段的作用。
TCP首部有6个标志位:
(1)URG紧急指针有效;
(2)ACK确认序号有效
(3)PSH接收端将尽快将这个报文段交给应用层
(4)RST重建连接
(5)SYN同步序号用来发起一个连接
(6)FIN发端完成发送任务
1.1.2TCP的连接建立过程:
TCP的连接是通过三次握手实现的,具体的建立过程如下所述:
(1)服务器进程首先创建传输控制块TCB,准备接受客户进程的连接请求。
然后服务器进程就处于LISTEN状态,等待客户的连接请求。
如有,即做出响应。
(2)TCP客户进程也是首先创建传输控制块TCB,然后向B发出连接请求报文段,这是首部中的同步位SYN=1,同时选择一个初始序号seq=x。
TCP规定,SYN报文段不能携带数据,但要消耗一个序号。
这时,TCP客户进程进入SYN-SENT(同步已发送)状态。
(3)服务器进程收到连接请求报文段后,如同意建立连接,则向客户端发送确认。
在确认报文段中应把SYN位和ACK位都只为1,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y.请注意,这个报文段也不能携带数据,但同样也要消耗一个序号。
这时,TCP服务器进程进入SYN-RCVD(同步已收到)状态。
(4)TCP客户端接收到服务器端的确认后,还要向服务器端给出确认。
确认报文段的ACK置1,确认号ack=y+1,而自己的序号seq=x+1.TCP规定,ACK报文段能携带数据。
但如果不携带数据则不会消耗序列号,这时,下一个数据报文段的序号仍是seq=x+1.这时,TCP连接已经建立,客户端进入ESTABLISHED状态。
1.1.3TCP的数据传输过程:
(1)在TCP连接完全建立起来后,就可以进行数据通信了。
(2)每次TCP模块接收到一个包以后,取出的序号加1来确认该报文。
在建立数据连接后的数据传输中,每一个数据包都要包含序列号,为了建立可靠的连接,TCP中规定在任何一方收到数据包后都要向对方做出应答,以便发送方知道该数据已经安全到达了,如果发送方在一段时间内没有收到应答就认为该包在传输过程中丢失了,重新发送该包。
TCP传输过程中提供的子服务有:
全双向(连接的两端可以同时发送数据),时间线(用计时器保证数据在合理的时间内传输),按序(从一个应用程序中发送的数据可以在另一端以同样的顺序接收),流量控制(TCP通过滑动窗口技术来动态调节流量),错误更正(校验和保证数据没有错误)。
1.1.4TCP连接释放:
(1)客户端的应用进程首先向服务器端发送连接释放报文段,并停止再发送数据,主动关闭TCP连接。
客户端把连接释放报文段首部的FIN置1,其序号为seq=u,它等于前面已传送过的数据的最后一个序号加1。
这时,客户端进入FIN-WAIT-1(终止等待1)状态,等待服务器端的确认。
TCP规定,FIN报文段即使不携带数据,它也要消耗一个序号。
(2)服务器端收到连接释放报文后发出确认,确认号是ack=u+1,而这个报文段自己的序号是y,等于服务器端前面传送过的数据的最后一个字节的序号加1,然后服务器端进入CLOSED-WAIT(关闭等待)状态。
TCP服务器进程这时候应通知高层应用进程,因而从客户端到服务器端这个方向的连接就释放了。
这时的TCP连接处于半关闭状态,即客户端已经没有数据要发送了,但服务器端若要发送数据,客户端仍要接受,也就是说,从服务器端到客户端这个方向的连接并未关闭。
这个状态可能就持续一些时间。
(3)客户端收到来自服务器端的确认后,就进入FIN-WAIT-2(终止等待2)状态,等待服务器端发出的连接释放报文段。
(4)若服务器端已经没有要向客户端发送的数据,其应用进程就通知TCP释放连接。
这是服务器端发出的连接释放报文段必须使用FIN=1.现假定服务器端的序号为w(在半关闭状态服务器端可能又发送了一些数据)。
服务器端还必须重复上次已发送过的确认号ack=u+1.这时B就进入LAST-ACK(最后确认状态),等待客户端的确认。
(5)客户端在收到服务器端的连接释放之后,必须对此发送确认。
在确认报文中把ACK置1,确认号ack=w+1,而自己的序号seq=u+1,然后将进入TIME-WAIT状态。
请注意,现在的TCP连接还没有释放掉。
必须经过时间等待计时器设置的时间2MSL后,客户端才进入到CLOSED状态。
1.1.5TCP的一些实现的细节描述
在TCP的具体实现中,一般都遵守如下规则:
(1)当包含RST置位的包到达一个关闭的端口的时候,TCP会简单的丢掉这个包。
(2)当包含RST置位的包到达一个正在侦听的端口的时候,TCP端口简单的丢弃这个包,应用程序一般也相应的中止。
(3)当包含SYN置位的包到达一个关闭的端口的时候,TCP端口则会丢掉该包并且返回一个RST置位的包。
(4)当包含SYN置位的包到达一个打开的端口的时候,TCP端口则会进行三次握手返回一个SYN|ACK的包。
(5)当FIN置位的包到达一个关闭的端口的时候,TCP丢掉该包并且返回一个包含RST置位的包。
(6)当FIN置位的包到达一个打开的端口的时候,TCP一般简单的丢掉该包。
但这也不是绝对的,对于WindowsNT/95系列的系统来说,TCP也会返回一个RST置位的包,相应的应用程序在大多数情况下也会通过TCP模块发送FIN置位包,表明他这个方向的数据发送也要关闭。
2端口
2.1端口概念
端口就是服务,每个服务对应一个或多个端口,是主机与外界进行通信的数据出入口。
端口分为硬件端口和软件端口,硬件端口就是USB,串行端口,并行端口等,软件端口一般就是网络中面向连接的(TCP)或者无连接服务的(UDP)等通信协议的端口。
常用的端口列表如表1所示。
2.2端口与攻击
端口直接与服务的对应关系,使端口越来越成为人们关注的目标,打开一种服务就意味着打开了一个或几个端口,同时也打开了一个“大门”,这个大门对正常用户来说是多了一项方便,用户多了一项访问系统的方式,而对黑客来说,却是多了一种攻击途径。
因此作为一名网络管理人员,完全有理由对端口进行详细地了解,并利用端口扫描技术扫描出系统的开放的端口,对没有实质性作用的端口则关掉,对于必须开放的端口则尽可能地安装漏洞补丁程序。
表1常见的端口及服务
端口号
名字
作用
80
WWW
Web端口
15
Netstat
网络状态
20
FTP(Data)
文件传输协议(数据口)
21
FTP(Ctl)
文件传输协议(控制口)
23
Telnet
远程登录
25
SMTP
简单邮件传输协议
53
DNS
域名服务
79
Finger
系统用户信息
111
Rpc
远程进程调用
139
Netbios
Netbios协议
3端口扫描的概念
端口扫描即对所有的或特定的一段或一个端口进行扫描,鉴别出其是否处于开放状态。
当然对于特别常用的端口则尽可能扫描出其服务程序版本,并指出该版本存在的漏洞,以此给网络管理员一个提示。
4端口扫描原理
端口扫描,顾名思义,就是逐个对一段端口或指定的端口进行扫描。
通过扫描结果可以知道一台计算机上都提供了哪些服务,然后通过所提供的这些服务的已知漏洞进行攻击。
其原理就是当一个主机向远端一个服务器的某一个端口提出建立一个连接的请求,若对方有此项服务,就会应答,如果对方未安装此服务,即使你向相应端口发出请求,对方仍无应答。
利用这个原理如果所有的熟知端口或自己选定的某个范围内的熟知端口已经打开,就可以分别建立连接,并记录下远端服务器端口所给予的应答,通过查看记录就可以知道目标服务器上都安装了哪些服务,这就是端口扫描。
通过端口扫描就可以搜集关于目标主机的诸多信息。
如,对方是否提供FTP服务,WWW服务或其它服务。
5端口扫描的目的
端口扫描主要是为三大类用户服务,一类是网络管理员,一类是黑客,还有一类是普通用户,他们对网络使用的角度不同,所以进行端口扫描的目的也就不同,如表2所示。
6端口扫描的历史
如果一个端口通过任何方法都无法访问,那它将是没有任何用处,因为端口的目的就是向正常用户提供服务,因此任何一个端口都应该响应从外界提出的服务请求,而由对提出的请求的回应,我们至少可以断定端口是否打开。
表2端口扫描用户与目的
端口扫描用户
扫描目的
网络管理员
关掉不用的端口,安装漏洞端口补丁程序
黑客
利用打开的端口获得信息,为攻击做准备
普通用户
查找服务器是否提供某项服务
6.1手工扫描阶段
一个最简单的扫描方法就是手工试验,所谓手工实验就是拿一个能提出服务请求的程序对服务器进行连接,如果程序正常运行就表示该服务器提供此项服务,比如运行ftp后,对方让你输入用户名和密码则表示服务器的端口21处于打开状态,如果你是非法用户,输入错误的用户名和密码将无法登录,如果输入ftp后,输入相应的用户名和密码,对方却回复10065(对方主机无法连接的出错代码),而此服务器一切运行正常,则表明此时的端口21处于关闭状态。
用同样的方法还可以用测试其80端口是否处于打开状态。
6.2通用扫描器阶段
当前Internet上主要采用TCP(TransmissionControlProtocol:
传输控制协议)和UDP(UserDatagramProtocol:
用户数据报协议)作为传输层协议,虽然除此之外还有很多协议,但这些协议一般都是传输层以上各层的协议,这些协议靠TCP或UDP协议进行网际传送。
而端口的概念是处于传输层上的概念,所以这里在扫描端口时,我们可以说我们扫描的是TCP或UDP端口而不是别的协议的端口,那些协议端口只是通过TCP或UDP端口体现出来而已,因此,通用扫描器就是只需要用TCP或UDP协议向对应端口发送数据就行了,而不是非得用哪一个协议。
比如,139端口是NetBIOS协议端口,我们扫描139端口是否处于打开状态只需向目的主机139端口发送信息然后根据返回的信息进行判断就可以了。
通用扫描器就是向指定的一段端口分别发送建立连接的请求,如果对方存在对应的服务,连接就可以成功建立,否则就无法建立,利用这个特点,我们可以判断对方的端口是否打开,这种扫描器一般只能扫描出对方某一端口是否开放,然后检索端口数据库,给出这一端口提供的服务。
6.3专用扫描器阶段
通用扫描器有一个不准确和不精确的毛病。
比如,某人的服务器并没有NetBIOS服务,而正好有一个服务器应用软件却使用了139端口进行通信,此时由于扫描器在139建立连接成功而通过查端口数据库而认为139端口处于打开状态而且提供了NetBIOS服务。
专用扫描器不求多,而且只扫描特定的一个或几个端口,扫描后,不仅给出是否处于打开状态,指出其提供的服务,而且会拿对应的服务和目的主机进行连接,从而获得对方服务器的版本号、用户列表、共享目录、漏洞等信息。
7端口扫描技术
根据扫描所采用的类型可以分为TCP扫描、UDP扫描、ICMP扫描等扫描。
根据所采用的算法又可以分为告诉扫描、分布式扫描、智能扫描、指纹识别技术、漏洞数据标准化与扫描代码分离等技术。
不同的扫描目的,对扫描器的要求也不一样,有些用户只需要知道某个端口是开或是关就行了,而有些用户则不但要知道某一端口是否开,而且还要知道对方系统的服务器软件版本号以及其它信息。
端口扫描按端口的连接情况主要可分为全连接扫描、半连接扫描、秘密扫描和其他扫描。
每种技术都可以使攻击者明确目标主机上的打开和关闭的端口。
但是如何使用哪个端口取决于相应的待攻击环境。
如网络拓扑,入侵检测系统,远程主机的登录记录特点。
虽然开放式扫描很容易被远程主机记录并且很容易被发现,但是得出的结果是很准确和详细的。
同样,秘密扫描可能会避开某些入侵检测系统或者绕过防火墙的规则。
但是用于表示端口情况的那些标志位可能会被丢弃的包抵消掉。
7.1开放式扫描方法
7.1.1TCPconnect()扫描
开放式扫描很容易被检测到或被过滤掉,这种扫描方式通过和目标主机以典型的“三次握手”的方式建立全连接。
一个典型的交互如图1所示。
Client------SYN
Server------SYN|ACK
Client------ACK
图1TCPconnect()扫描(服务器打开)
上述例子表明一个端口已经用SYN|ACK回复了来自客户进程的请求。
这种回复表明目标端口处于监听状态。
一旦“三次握手”建立全连接,则客户机中止与此端口的连接并再次和下一个端口进行连接,直到最大的端口被检测过。
同样,关闭的端口将返回以下情况,如图2所示。
Client--------SYN
Server--------RST|ACK
Client--------RST
图2TCPconnect()扫描(服务器关闭)
从服务器返回的RST|ACK标签项告诉客户端切断连接企图,因为服务器相应端口是关闭的。
也就知道当前端口是关闭的。
这种方法是通过调用系统的connect()函数来实现的。
如果函数返回真,则证明端口打开,否则端口关闭。
由于这种方法是通过“三次握手”的方式与目标主机进行连接,这就使得攻击者无法操纵源IP,无法进行IP欺骗。
因为“三次握手的方式”需要提供一个正确的序列号,并且需要正确设置标志位以进行数据交换。
很显然这种连接方式很容易被发现,因为“三次握手”建立的完整连接很容易被防火墙以及入侵检测系统发现,但是由于采用的是系统调用函数connect(),所以攻击者可以很全面的获取想要获得的端口信息。
7.1.2反向ident扫描
这种技术通过向ident/auth守护进程发送响应,通常是113端口,以获得当前进程的拥有者。
这样做的最主要的原因是找到以root(超级管理员)运行的进程。
很显然,这种结果可能会使得入侵者获得一个溢出点或其它关于这个端口的可疑活动信息。
另外,一般的守护进程像httpd可能由于有限的访问权限并不怎么具有吸引力,但并不为大多数人所知道的是,identd进程可能会泄漏某些秘密信息如:
用户信息、实体、对象、进程等。
7.2半开放式扫描方法
半开放式扫描是有客户机在“三次握手”连接建立之前中断与服务器的连接而完成的,这种扫描方法一般并不会被IDS入侵检测系统记录,并且会返回有价值的信息。
7.2.1SYN扫描
这种扫描方式与“三次握手”十分相似,只是最后的“一次握手”不是发送ACK响应而是立即切断连接如图3所示。
Client----------SYN
Server---------SYN|ACK
Client---------RST
图3SYN扫描(端口打开)
这个实例表明目标主机的相应端口是打开的,因为服务器端已经返回了SYN|ACK包。
相应的如果该端口关闭,将会返回RST|ACK,如图4所示。
Client------------------SYN
Server------------------RST|ACK
图4SYN扫描(端口关闭)
RST|ACK意味着一个关闭的端口,因为DenialofService(DoS)工具以发送SYN包为基本技术手段,这种扫描方法已经被大多数的IDS入侵检测系统所检测。
需要指明的是,这种SYN扫描方法最初被用于SATAN(一种躲开IDS系统的工具)。
7.3秘密扫描
由于这种技术不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,从而比SYN扫描隐蔽得多。
另外,FIN数据包能够通过只监测SYN包的包过滤器。
秘密扫描技术使用FIN数据包来探听端口。
当一个FIN数据包到达一个关闭的端口,数据包会被丢掉,并且返回一个RST数据包。
否则,当一个FIN数据包到达一个打开的端口,数据包只是被简单的丢掉(不返回RST)。
XMAS扫描打开FIN,URG和PUSH标记,而NULL扫描关闭所有标记。
这些组合的目的是为了通过所谓的FIN标记监测器的过滤。
秘密扫描通常适用于UNIX目标主机,除过少量的应当丢弃数据包却发送reset信号的操作系统(包括CISCO,BSDI,HP/UX,MVS和IRIX)。
在Windows95/NT环境下,该方法无效,因为不论目标端口是否打开,操作系统都发送RST。
7.3.1TCPFIN扫描
有的时候有可能SYN扫描都不够秘密。
一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。
相反,FIN数据包可能会没有任何麻烦的通过。
这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。
另一方面,打开的端口会忽略对FIN数据包的回复。
这种方法和系统的实现有一定的关系。
有的系统不管端口是否打开,都回复RST,这样,这种扫描方法就不适用了。
并且这种方法在区分Unix和NT时,是十分有用的。
7.3.2TCPACK扫描
和TCPSYN扫描差不多,当利用ACK方式向目的主机一个端口发送一个只有ACK标志的TCP数据包给目标主机,如果主机反馈一个TCPRST数据报回来,那么这个主机端口是打开的。
7.3.3TCPNULL扫描
该方法是关闭TCP包中的所有标志位,向目标主机的端口发送一个TCP数据包,根据RFC793(http:
//www.ietf.org/rfc/rfc0793.txt),如果该端口是关闭的,则目标主机应当发回一个RST信号。
7.3.4FIN+URG+PUSH扫描
这种方法又叫XMAS扫描,其原理是向目标主机对应端口发送一个FIN、URG和PUSH三个标志位都置位的分组,根据RFC793,如果目标主机的相应端口是关闭的,那么应该返回一个RST标志。
7.4UDP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 互联网 端口扫描 技术 分析 研究