基于.NET的端口检测技术的原理与实现.doc

上传人:h**** 文档编号:129758 上传时间:2018-07-09 格式:DOC 页数:68 大小:753.50KB
下载 相关 举报
基于.NET的端口检测技术的原理与实现.doc_第1页
第1页 / 共68页
基于.NET的端口检测技术的原理与实现.doc_第2页
第2页 / 共68页
基于.NET的端口检测技术的原理与实现.doc_第3页
第3页 / 共68页
基于.NET的端口检测技术的原理与实现.doc_第4页
第4页 / 共68页
基于.NET的端口检测技术的原理与实现.doc_第5页
第5页 / 共68页
点击查看更多>>
资源描述

1、基于 .NET 的端口检测技术的原理与实现 摘 要 随着 Internet 日益广泛的应用,黑客攻击行为也是有增无减。如何有效地抵御这种攻击行为,一直是信息安全领域的焦点。 而其中,端口扫描技术吸引了越来越多人的关注。 端口扫描是黑客搜集目标主机信息的一种常用方法。为了有效地对付网络入侵行为 ,对端口扫描进行研究是非常有益和必要的。 攻击者在攻击一个目标时,首先要获取目标的一些基本信息,端口扫描就是其中最简单最重要的方法之一,它可以扫描目标机器中开放的端口,从而确定目标机器中提供的服务,为下一步攻击做准备。针对端口扫描 技术,相应的端口扫描检测技术显的越发重要,作为网络安全技术中的一个重要课题

2、,端口扫描检测技术意义重大。 本文首先阐述了端口扫描技术以及端口扫描检测技术的基本原理和常用方法,然后在此基础上设计了一个对基于网络的端口进行扫描,能判断出目标主机端口开放情况的程序以及一个从网络信息的数据包的捕获和分析着手,再通过统计判断是否存在端口扫描行为的程序,最后从攻击和防御的角度对端口扫描和检测技术作了演示及分析。 关键词 : 端口 ; 端口扫描;数据包捕获;端口 检测 The Realization of Port Scanning and Detecting Technology Abstract As the widely applying of Internet, the a

3、ttacking behavior made by hacker is increasing but not decreasing. How to resist this kind of attacking behavior is always the key point of the domain of the information security. And the port scanning draws peoples attention more and more. Port scanning is a usual method which is used by the hacker

4、 to collect the information of the target main processor. In order to deal with the invading behavior of the Internet effectively, it is very useful and necessary to work on the port scanning. When an attacker attacks to a target, he or she will firstly gets some basic information about the target,

5、and the port scanning is one of the most simple and important methods which can scan the opening Port of the target machine to make sure the offering service made by the target machine, and it is a preparation to the next attacking. The port detecting seems more and more important referring to the p

6、ort scanning. As an important task of the secure technique of Internet, the port detecting is of great significance. In this thesis, it firstly elaborates the basic principles and usual methods of the port scanning. On this basis, it then designs a program which can scan the Port of the Internet, an

7、d assess the opening situation of the target main processor, and the other program which begins on capturing and analyzing the information packet of Internet, and then assess whether there is a behavior about port scanning through statistic analyses. Lastly, it demonstrates and analyses the technolo

8、gy of port scanning and port detecting from the viewpoint of attacking and resisting. Key Words: port; port scanning; packet capture; port detecting 目 录 论文总页数: 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

9、.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 设计实现重点代码 . 13 6 性能测试 . 13 6.1 端口扫描程序性能测试 . 13 6.2 检测端口扫描程序性能测试 . 14 结 论 . 15 参考文献 . 16 1 引言 随着科学技术的飞速发展, 21 世纪

10、的地球人已经生活在信息时代。 20世纪人类的两大科学技术成果 计算机技术和网络技术,均已深入到人类社会的各个领域, Internet 把“地球村”的居民们紧密联系在一起,“天涯若比 邻”已然成为现实。 互联网之所以能这样迅速蔓延,被世人所接受,是因为它具备特有的信息资源。无论对商人、学者,还是对社会生活中的普通老百姓,只要你进入网络的世界,就能找到其隐藏的奥妙,就能得到你所需要的信息。近年来 Internet的迅速发展,给人们的日常生活带来了全新的感受,“网络生存”已经成为时尚,同时人类社会诸如政治、科研、经济、军事等各种活动对信息网络的依赖程度已经越来越强,“网络经济”时代已初露端倪。 然而

11、,网络技术的发展在给我们带来便利的同时也带来了巨大的隐患,尤其是 Internet 和 Intranet 的飞速发展对网络安全提出了前所未有的挑战。技术是一把双刃剑,不法分子试图不断利用新的技术伺机攻入他人的网络系统,而肩负保护网络安全重任的系统管理员则要利用最新的网络技术来防范各种各样的非法网络入侵行为。事实已经证明,随着互联网的日趋普及,在互联网上的犯罪活动也越来越多,特别是 Internet 大范围的开放以及金融领域网络的接入,使得越来越多的系统遭到入侵攻击的威胁。而作为黑客入侵的前奏,端口扫描是最常见的信息获取手段,端口扫描的检测技术在当今已经越来越成为一个重要的课题。 本文首先对端口

12、扫描技术进行研究,并 开发一个能查询 目标主机端口开放情况的程序;然后重点研究端口扫描的检测技术,从 对数据包的捕获和分析着手,再 定义 一个判断是否扫描 的 条件,并 通过统计 由 定义 的扫描条件 判断是否存在端口扫描行为,不但能对一般的扫描、快速扫描能够检测,且 在一定程度上对 慢速扫描也能很好的检测 。 1.1 本 课题 研究的意义 在今天快速发展的 Internet 中,黑客攻击方法层出不穷,网络的安全性已经越来越受到威胁。 要保证计算机资源的保密性、有效性、完整性也变得越来越困难。 端口扫描作为黑客攻击的一个重要方面,也在不停地向前发展 ,扫描手段已经变得越来越 丰富,越来越隐蔽,

13、越来越具有威胁性 。如何有效的对端口扫描 行为 进行检测,已经是越来越重要的一个课题,这对于保证我们网络的安全性有着重要的意义,也是入侵检测系统( IDS)和入侵预防系统( IPS)的一个重点。 1.2 本 课题的研究方法 本文分别对端口扫描技术以及端口扫描的检测技术作了研究,并设计出一个根 据 扫描 者 向目标主机的 TCP/IP 服务端口发送探测数据包,并记录目标主机的响应,通过分析响应来判断服务端口是打开还是关闭,进而得知端口的状态的端口扫描程序, 以及一个从网络信息的数据包的捕获和分析着手,通过统计判断是否存在端 口扫描行为的端口扫描检测程序 。 2 端口扫描概述 2.1 基本概念 端

14、口的含义 : 在 网络技术 中,端口( Port)大致有两种意思:一是物理意义上的端口 ,比如, ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如 RJ-45 端口、 SC 端口等等。二是逻辑意义上的端口,一般是指 TCP/IP 协议中的端口,端口号的范围从 0 到 65535,比如用于浏览网页服务的 80 端口,用于 FTP 服务的 21 端口等等。 我们这里将要介绍的就是逻辑意义上的端口。 端口分类 : 逻辑意义上的端口有多种分类标准,下面将介绍两种常见的分类: 按端口号分布划分 : ( 1)知名端口( Well-Known Ports) 知名端口即众所周知的端口

15、号,范围从 0 到 1023,这些端口号一般固定分配给一些服务。比如 21 端口分配给 FTP 服务, 25 端口分配给 SMTP(简单邮件传输协议)服务, 80端口分配给 HTTP 服务, 135 端口分配给 RPC(远程过程调用)服务等等。 ( 2)动态端口( Dynamic Ports) 动态端口的范围从 1024到 65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么 系统就可以从这些端口号中分配 出 一个供该程序使用。比如 1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端

16、口号。 不过,动态端口也常常被病毒木马程序所利用,如冰河默认连接端口是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

17、 服务的 80端口等等。 ( 2) UDP 端口 UDP 端口,即用户数据包协议端口,无需在客户端和服务器之间建立连接,安全性得不到保障。 常见的有 DNS 服务的 53 端口, SNMP(简单网络管理协议)服务的 161 端口,QQ使用的 8000 和 4000 端口等等 。 2.2 端口扫描原理 扫描者 向目标主机的 TCP/IP 服务端口发送探测数据包, 通过探测性数据包得到目标主机的响应并记录下来 ,通过分析 响应来判断服务端口是打开还是关闭,进而得知端口的状态 。 通常通过调用套接字函数 connect ()连接到目标计算机上,完成一个完整的3次握手程。如果端口处于侦听状态,那么 c

18、onnect()就能成功返回。否则,该端口不可用,即没有提供服务。 端口扫描的第一步是向目标主机的 TCP/UDP端口发送探测数据包,然后根据对方的回应判断端口是否开放。由于网络环境的差异以及操作系统对连接请求的应答并不一致,在端口扫描中支持多种扫描方式,以保证扫描的准确和快速。大多数扫描技术要发送原始套接字包来进行探测。因为只有原始套接字 支持对 IP 报头的设置,即构造 IP 数据包。同时,原始套接字也支持发送和接收 IP数据包。这样,原始套接字接口实际上成为网络层向上提供的接口。实现时可通过调用Winsock2库中的函数 setsockopt()来设置选项 IP_HDRINCL,以获取自

19、定义 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探测等等。因为是

20、自己填充 IP首部和 TCP首部,所以还需定义一个计算校验和函数 checksum来计算 IP报头和 TCP报头的校验和。在填充 TCP首部时,通过 TCP伪首部填充 TCP数据包的 IP选项。事实上 TCP伪首部并不是真正存在的,只是用于填充 TCP的一些选项和计算校验和。调用 setsockopt()设置选项IP_HDRINCL,根据填充 TCP、 IP报头的内容构造 IP 数据包。设置侦听原始套接字的同步和超时之后,调用 sendto()发送 IP 数据包。 发送原始套接字包流程图如图 1所示: 图 1 发送原始套接字包 流程图 原始套接字包发送完后,就可以接收目标主机的回应。当发送原始

21、套接字包时 (如 TCP SYN数据包 ),操作系统核心并不知道,也没有此数据发送或者连接建立的记录。因此,当远端主机回应时,系统核心就把这些包都全部丢掉,从而到达不了应用程序上 。所以,程序中不能简单地使用接收函数来接收这些数据包。要达到接收数据包的目的,必须采用嗅探,接收所有通过的数据包,然后进行筛选,留下符合需要的。为此可以再定义一个原始套接字,用来接收数据,并在套接字 I/0控制函数中设置 SIO_RCVALL,表示接收所有的数据。通过设置原始套接字的 I/0控制命令,便可以调用 recv()接收返回的数据包。一般情况下使用的是TCP SYN半连接扫描,由于 TCPConnect()全

22、连接扫描拥有很好的稳定性,这种技术用得非常多。通常通过调用套接字函数 connect()连接到目标计算机 上,完成一个完整的 3 次握手过程。如果端口处于侦听状态,那么 connect()就能成功返回。否则,该端口不可用,即没有提供服务。 以上实现的端口扫描,可以得到每个端口的状态,此处的状态并非端口本身的性质,而是对扫描结果的描述。端口状态可以分为 5种: open(开放的 )、 closed(关闭的 )、 filtered(被过滤的 )、unfiltered(未被过滤的)和 open filtered(开放或者被过滤的)。 2.3 端口扫描技术简介 常用的端口扫描技术主要有以下几种: (

23、1) TCP connect() 扫描 这是最基本的 TCP扫描 。 利用 操作系统提供的 connect系统调用 , 用来与每一个感兴趣的目标计算机的端口进行连接 。 如果端口处于侦听状态 , 则 connect就能成功 。 否则 , 这个端口是不能用的 , 即没有提供服务 。 这个技术的最大的优点是 , 用户不需要任何权限 , 系统中的任何用户都有权利使用这个调用 。 另一个好处就是速度快 。 如果对每个目标端口以 串行 的方式 ,使用单独的 connect()调用 , 那么 将会花费相当长的时间 , 用户可以通过同时打开多个套接字 , 从而加速扫描 。 使用非阻塞 I/O允许设置一个 较

24、低的超时时限,同时观察多个套接字 。 但这种方法的 缺点是很容易被发觉 , 并且被过滤掉 。 目标计算机的 logs文件会显示一连串的连接和连接 是否 出错的服务消息 , 并且能很快地使它关闭 。 ( 2) TCP SYN扫描 这种技术通常认为是 “ 半开放 ” 扫描 , 这是因为扫描程序不必要打开一个完全的 TCP连接 。 扫描程序发送的是一个 SYN数据包 , 好象 准备打开一个实际的连接并等待反应一样 ( 参考 TCP的三次握手建立一个 TCP连接的过程 )。 一个 SYN/ACK 的返回信息表示端口处于侦听状态 。 一个 RST返回 , 表示端口没有处于侦听态 。 如果收到一个 SYN

25、/ACK, 则扫描程序必须再发送一个 RST信 号 , 来关闭这个连接过程 。 这种扫描技术的优点在于一般不会在目标计算机上留下记录 , 但这种方法的缺点是 , 必须要有 root权限才能建立自己的 SYN数据包 , 不过这个条件一般都是很容易满足的。 ( 3) TCP FIN扫描 有的时候有可能 SYN扫描都不够秘密 。 一些防火墙和包过滤器会对一些指定的端口进行监视 , 有的程序能检测到这些扫描 。 相反 , FIN数据包可能会顺利通过 。 这种扫描方法的思想是关闭的端口会用适当的 RST来回复 FIN数据包 。 另一方面 , 打开的端口会忽略对 FIN数据包的回复 。 这种方法和系统的实

26、现有一定的关系 。 如果有的 系统不管端口是否打开 , 都回复 RST, 那么这种扫描方法就不适用了 。 但这种方法在区分 Unix和 NT时是十分有用的 。 ( 4) IP段扫描 这种不能算是新方法, 只是其他技术的变化。 它 并不是直接发送 TCP探测数据包 , 是将数据包分成二个较小的 IP段 。 这样就将一个 TCP头分成好几个数据包 , 从而过滤器就很难探测到 。 但一些程序在处理这些小数据包时会有些问题 。 ( 5) FTP返回攻击 FTP协议的一个的特点是它支持代理 FTP连接 。 即入侵者可以从自己的计算机和目标主机 的 FTP server-PI(协议 解释器 )连接 , 建

27、立一个控制通信连接 。 然后 , 请求这个 server-PI激活一个有效的 server-DTP(数据传输进程 )来给 Internet上任何地方发送文件 。 对于一个 User-DTP, 这是个推测,尽管 RFC明确定义 请求一个服务器发送文件到另一个服务器是可以的,但当前的大多数实现并不支持, 因为 这个特性“能用来发送不能跟踪的邮件和新闻,给许多服务器造成打击, 用尽磁盘,企图越过防火墙”。 利用 FTP返回攻击的 目的是从一个代理的 FTP服务器来扫描 TCP端口 。 这样 ,用户能在一个防火墙后面连接到一个 FTP服务器 , 然后扫 描端口 。如果 FTP服务器允许从一个目录读写数

28、据,你就能发送任意的数据到发现的打开的端口。 对于端口扫描 , 这个技术是使用 PORT命令来表示被动的 User DTP正在目标计算机上的某个端口侦听 。 然后入侵者试图用 LIST命令列出当前目录 , 结果通过 Server-DIP发送出去 。 如果目标主机正在某个端口侦听 , 传输就会成功 , ( 产生一个 150或226的回应 ) 否则 , 会出现 “ 425 Can t build data connection:Connection refused.” 。 然后 , 使用另一个 PORT命令 , 尝试目标计算机上的 下一个端口 。 这种方法的优点很明显 , 难以跟踪 , 能穿过防火

29、墙 。 主要缺点是速度很慢 ,有的 FTP服务器最终能得到一些线索,关闭代理功能。 ( 6) UDP ICMP端口不能到达扫描 这种方法与上面几种方法的不同之处在于使用的是 UDP协议。由于这个协议很简单,所以扫描变得相对困难。 这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。幸运的是,许多主机在你向一个未打开 UDP端口发送一个数据包时,会返回一个 ICMP_PORT_UNREACH错误。这样你就能发现哪个端口是关闭的。 UDP和 ICMP错误都不保证能到达,因此,这种扫描器必须还 实现一个在包看上去是丢失的时候能重新传输。这种扫描方法是很慢的, 因为

30、RFC对 ICMP错误消息的产生速率作了规定。同样,这种扫描方法需要具有 root权限。 ( 7) UDP recvfrom()和 write()扫描。 当非 root用户不能直接读到端口不能到达错误时, Linux能间接地在它们到达时通知用户。比如,对一个关闭的端口的第二个 write()调用将失败。在非阻塞的 UDP套接字上调用 recvfrom()时,如果 ICMP出错还没有到达时会返回 EAGAIN-重试。如果 ICMP到达时,返回 ECONNREFUSED-连接被拒绝。这就是用来查看端口是否打开的技术 。 ( 8) TCP 反向 ident 扫描 ident 协议( rfc1413)

31、 允许看到通过 TCP 连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。 例如,扫描者能连接到 Http 端口,然后用 ident 来发现服务器是否正在以root 权限运行。这种方法只能在和目标端口建立了一个完整的 TCP 连接后才能看到。 总之, 为了避过目标系统的日志审计和防火墙的阻截, 为了避过目标系统的端口扫描检测, 入侵者往往会采用一系列方法来改变正 常的 端口 扫描方式,以达成 端口 扫描的隐蔽性,这些方法包括:改变扫描端口的顺序、慢速扫描、端口 扫描间隔随机化、随机化扫描包的其它区域、伪造源地址扫描和分布式扫描等。 3 检测端口扫描概述 3.1 端口扫描检测的分

32、析 端口扫描是一台主机对多个目标端口进行试探,包 括打开的和没有打开的端口。这就为检测端口扫描提供了两条“线索”: 一是“是否存在试图连接已经关闭端口的行为”;二是“在一段时间内,是否存在从一个源地址发出的数据包到达多个目的地址的行为”。 检测端口扫描的方法主要有两种: 一种是对主机没有对外提供服务的端口进行监听,如果 检测到有对这样的端口的连接请求,就认为有扫描发生; 另一种检测方法是对整个网络流量进行监控,检查网络中所有的数据,并对异常情况进行记录。 在本文中, 为了便于对端口扫描检测进行研究, 从端口扫描检测的角度出发,把端口扫描技术分为普通扫描,慢速扫描及分布式扫描,并在后面的介绍中分别对不同的检测方法作了介绍 。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。