计算机毕业论文,毕业论文,毕业设计 毕业论文免费检测 知网论文检测
当前位置: 骆驼论文网 > 信息安全 >

端口扫描与检测技术

时间:2011-04-11 11:39来源: 骆驼毕业论文网 作者:admin
端口扫描与检测技术的实现 摘 要 随着Internet日益广泛的应用,黑客攻击行为也是有增无减。如何有效地抵御这种攻击行为,一直是信息安全领域的焦点。 而其中,端口扫描技术吸引了越来越多人的关注。端口扫描是黑客搜集目标主机信息的一种常用方法。为了有效

QQ交谈计算机毕业设计,毕业设计,毕业论文,计算机毕业论文

端口扫描与检测技术的实现
摘  要
随着Internet日益广泛的应用,黑客攻击行为也是有增无减。如何有效地抵御这种攻击行为,一直是信息安全领域的焦点。
而其中,端口扫描技术吸引了越来越多人的关注。端口扫描是黑客搜集目标主机信息的一种常用方法。为了有效地对付网络入侵行为,对端口扫描进行研究是非常有益和必要的。攻击者在攻击一个目标时,首先要获取目标的一些基本信息,端口扫描就是其中最简单最重要的方法之一,它可以扫描目标机器中开放的端口,从而确定目标机器中提供的服务,为下一步攻击做准备。针对端口扫描技术,相应的端口扫描检测技术显的越发重要,作为网络安全技术中的一个重要课题,端口扫描检测技术意义重大。
本文首先阐述了端口扫描技术以及端口扫描检测技术的基本原理和常用方法,然后在此基础上设计了一个对基于网络的端口进行扫描,能判断出目标主机端口开放情况的程序以及一个从网络信息的数据包的捕获和分析着手,再通过统计判断是否存在端口扫描行为的程序,最后从攻击和防御的角度对端口扫描和检测技术作了演示及分析。

关键词:端口;端口扫描;数据包捕获;端口检测

 
目  录
论文总页数:23页
1 引言 1
1.1 本课题研究的意义 1
1.2 本课题的研究方法 2
2 端口扫描概述 2
2.1 基本概念 2
2.2 端口扫描原理 3
2.3 端口扫描技术简介 5
3 检测端口扫描概述 7
3.1 端口扫描检测的分析 7
3.2 普通端口扫描检测技术概述 8
3.3 慢速端口扫描检测技术概述 9
3.4 端口扫描的分布式检测概述 9
3.5 主流的端口扫描工具 11
4 端口扫描的实现 12
4.1 扫描程序的设计原理 12
4.2 程序流程图 12
5 检测端口扫描的实现 13
5.1 检测程序的设计原理 13
5.2 程序流程图 13
5.3 设计实现重点代码 14
6 性能测试 18
6.1 端口扫描程序性能测试 18
6.2 检测端口扫描程序性能测试 19
结    论 20
参考文献 21
致    谢 22
声    明 23

2 端口扫描概述
2.1 基本概念
端口的含义:
在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。
我们这里将要介绍的就是逻辑意义上的端口。
端口分类:
逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类:
按端口号分布划分:
(1)知名端口(Well-Known Ports)
知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。
(2)动态端口(Dynamic Ports)
动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配出一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。
不过,动态端口也常常被病毒木马程序所利用,如冰河默认连接端口是7626、WAY 2.4是8011、Netspy 3.0是7306、YAI病毒是1024等等。
按协议类型划分:
按协议类型划分,可以分为TCP、UDP、IP和ICMP(Internet控制消息协议)等端口。下面主要介绍TCP和UDP端口:
(1)TCP端口
TCP端口,即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP服务的21端口,Telnet服务的23端口,SMTP服务的25端口,以及HTTP服务的80端口等等。
(2)UDP端口
UDP端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。
常见的有DNS服务的53端口,SNMP(简单网络管理协议)服务的161端口,QQ使用的8000和4000端口等等。
2.2 端口扫描原理
扫描者向目标主机的TCP/IP服务端口发送探测数据包,通过探测性数据包得到目标主机的响应并记录下来,通过分析响应来判断服务端口是打开还是关闭,进而得知端口的状态。
通常通过调用套接字函数connect ()连接到目标计算机上,完成一个完整的3次握手程。如果端口处于侦听状态,那么connect()就能成功返回。否则,该端口不可用,即没有提供服务。
端口扫描的第一步是向目标主机的TCP/UDP端口发送探测数据包,然后根据对方的回应判断端口是否开放。由于网络环境的差异以及操作系统对连接请求的应答并不一致,在端口扫描中支持多种扫描方式,以保证扫描的准确和快速。大多数扫描技术要发送原始套接字包来进行探测。因为只有原始套接字支持对IP 报头的设置,即构造IP 数据包。同时,原始套接字也支持发送和接收IP数据包。这样,原始套接字接口实际上成为网络层向上提供的接口。实现时可通过调用Winsock2库中的函数setsockopt()来设置选项IP_HDRINCL,以获取自定义IP报头的权限。由于Windows2000仅支持Raw ICMP和Raw IGMP,不支持RawTCP,因此,发送TCP数据包,必须通过设置选项IP_HDRINCL来构造IP报头。首先创建原始套接字,定义IP首部。
IPHEADER, TCP伪首部TCPSOCHEADER和TCP首部TCPHEADER,再填充IP首部和TCP首部,其中,TCP首部中的结构体变量tcpHeader的tcpHeade.th_flag=2,表示发送的是SYN数据包,修改它可以实现不同的标志位探测,如2是SYN,0是NULL,1是FIN,16是ACK探测等等。因为是自己填充IP首部和TCP首部,所以还需定义一个计算校验和函数checksum来计算IP报头和TCP报头的校验和。在填充TCP首部时,通过TCP伪首部填充TCP数据包的IP选项。事实上TCP伪首部并不是真正存在的,只是用于填充TCP的一些选项和计算校验和。调用setsockopt()设置选项IP_HDRINCL,根据填充TCP、IP报头的内容构造IP 数据包。设置侦听原始套接字的同步和超时之后,调用sendto()发送IP 数据包。
发送原始套接字包流程图如图1所示:

 
图1 发送原始套接字包流程图

原始套接字包发送完后,就可以接收目标主机的回应。当发送原始套接字包时(如TCP SYN数据包),操作系统核心并不知道,也没有此数据发送或者连接建立的记录。因此,当远端主机回应时,系统核心就把这些包都全部丢掉,从而到达不了应用程序上。所以,程序中不能简单地使用接收函数来接收这些数据包。要达到接收数据包的目的,必须采用嗅探,接收所有通过的数据包,然后进行筛选,留下符合需要的。为此可以再定义一个原始套接字,用来接收数据,并在套接字I/0控制函数中设置SIO_RCVALL,表示接收所有的数据。通过设置原始套接字的I/0控制命令,便可以调用recv()接收返回的数据包。一般情况下使用的是TCP SYN半连接扫描,由于TCPConnect()全连接扫描拥有很好的稳定性,这种技术用得非常多。通常通过调用套接字函数connect()连接到目标计算机上,完成一个完整的3 次握手过程。如果端口处于侦听状态,那么connect()就能成功返回。否则,该端口不可用,即没有提供服务。以上实现的端口扫描,可以得到每个端口的状态,此处的状态并非端口本身的性质,而是对扫描结果的描述。端口状态可以分为5种:open(开放的)、closed(关闭的)、filtered(被过滤的)、unfiltered(未被过滤的)和open filtered(开放或者被过滤的)。

2.3 端口扫描技术简介
常用的端口扫描技术主要有以下几种:
(1)TCP connect() 扫描
这是最基本的TCP扫描。
利用操作系统提供的connect系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,则connect就能成功。否则,这个端口是不能用的,即没有提供服务。
这个技术的最大的优点是,用户不需要任何权限,系统中的任何用户都有权利使用这个调用。另一个好处就是速度快。如果对每个目标端口以串行的方式,使用单独的connect()调用,那么将会花费相当长的时间,用户可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许设置一个较低的超时时限,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是否出错的服务消息,并且能很快地使它关闭。
(2)TCP SYN扫描
这种技术通常认为是“半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP连接。
扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。一个SYN/ACK 的返回信息表示端口处于侦听状态。一个RST返回,表示端口没有处于侦听态。如果收到一个SYN/ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。 这种扫描技术的优点在于一般不会在目标计算机上留下记录,但这种方法的缺点是,必须要有root权限才能建立自己的SYN数据包,不过这个条件一般都是很容易满足的。
(3)TCP FIN扫描
有的时候有可能SYN扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN数据包可能会顺利通过。
这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数据包的回复。这种方法和系统的实现有一定的关系。如果有的系统不管端口是否打开,都回复RST,那么这种扫描方法就不适用了。但这种方法在区分Unix和NT时是十分有用的。
(4)IP段扫描
这种不能算是新方法,只是其他技术的变化。
它并不是直接发送TCP探测数据包,是将数据包分成二个较小的IP段。这样就将一个TCP头分成好几个数据包,从而过滤器就很难探测到。但一些程序在处理这些小数据包时会有些问题。
(5)FTP返回攻击
FTP协议的一个的特点是它支持代理FTP连接。即入侵者可以从自己的计算机src.com和目标主机dest.com的FTP server-PI(协议解释器)连接,建立一个控制通信连接。然后,请求这个server-PI激活一个有效的server-DTP(数据传输进程)来给Internet上任何地方发送文件。对于一个User-DTP,这是个推测,尽管RFC明确定义请求一个服务器发送文件到另一个服务器是可以的,但当前的大多数实现并不支持,因为这个特性“能用来发送不能跟踪的邮件和新闻,给许多服务器造成打击,用尽磁盘,企图越过防火墙”。
利用FTP返回攻击的目的是从一个代理的FTP服务器来扫描TCP端口。这样,用户能在一个防火墙后面连接到一个FTP服务器,然后扫描端口。如果FTP服务器允许从一个目录读写数据,你就能发送任意的数据到发现的打开的端口。对于端口扫描,这个技术是使用PORT命令来表示被动的User DTP正在目标计算机上的某个端口侦听。然后入侵者试图用LIST命令列出当前目录,结果通过Server-DIP发送出去。如果目标主机正在某个端口侦听,传输就会成功,(产生一个150或226的回应)否则,会出现“425 Can’t build data connection:Connection refused.”。然后,使用另一个PORT命令,尝试目标计算机上的下一个端口。这种方法的优点很明显,难以跟踪,能穿过防火墙。主要缺点是速度很慢,有的FTP服务器最终能得到一些线索,关闭代理功能。
(6)UDP ICMP端口不能到达扫描
这种方法与上面几种方法的不同之处在于使用的是UDP协议。由于这个协议很简单,所以扫描变得相对困难。
这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。幸运的是,许多主机在你向一个未打开UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样你就能发现哪个端口是关闭的。UDP和ICMP错误都不保证能到达,因此,这种扫描器必须还实现一个在包看上去是丢失的时候能重新传输。这种扫描方法是很慢的,因为RFC对ICMP错误消息的产生速率作了规定。同样,这种扫描方法需要具有root权限。
(7)UDP recvfrom()和write()扫描。
当非root用户不能直接读到端口不能到达错误时,Linux能间接地在它们到达时通知用户。比如,对一个关闭的端口的第二个write()调用将失败。在非阻塞的UDP套接字上调用recvfrom()时,如果ICMP出错还没有到达时会返回EAGAIN-重试。如果ICMP到达时,返回ECONNREFUSED-连接被拒绝。这就是用来查看端口是否打开的技术。
(8)TCP反向ident扫描
ident协议(rfc1413)允许看到通过TCP连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。
例如,扫描者能连接到Http端口,然后用ident来发现服务器是否正在以root权限运行。这种方法只能在和目标端口建立了一个完整的TCP连接后才能看到。
总之,为了避过目标系统的日志审计和防火墙的阻截,为了避过目标系统的端口扫描检测,入侵者往往会采用一系列方法来改变正常的端口扫描方式,以达成端口扫描的隐蔽性,这些方法包括:改变扫描端口的顺序、慢速扫描、端口扫描间隔随机化、随机化扫描包的其它区域、伪造源地址扫描和分布式扫描等。

参考文献
[1] Andrew S.Tanenbaum[美].计算机网络[M].北京:清华大学出版社,1998。
[2] Anonymous[美].网络最高安全技术指南[M].北京:机械工业出版社,1998。
[3] David A.Solomon[美].计算机网络管理[M].北京:清华大学出版社,1999。
[4] Douglas E.Comer[美].TCP/IP网络互连技术[M].北京:清华大学出版社,1998。
[5] David J.Kruglinski[美].Visual C++ 技术内幕[M].北京:清华大学出版社,1999。
[6] Anonymous[美].网络入侵检测系统分析与设计[M].北京:机械工业出版社,1998。
[7] W.Richard Stevens[美].TCP/IP详解[M].北京:机械工业出版社,2000。
[8] 张仕斌.网络安全技术[M].北京:清华大学出版社,2004。


 

本文内容只是论文部分简介,如需了解更多详情请咨询本站客服! QQ交谈计算机毕业设计,毕业设计,工程硕士论文,计算机毕业论文
毕业论文搜集整理:毕业论文网 计算机毕业设计 计算机毕业论文 毕业设计


顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
计算机毕业设计
计算机毕业论文
论文发表