版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 毕毕 业业 设设 计计( 论论 文文) 基于基于 C#C#端口扫描器的实现端口扫描器的实现 论论文作者姓名:文作者姓名:申申请请学位学位专业专业: :申申请请学位学位类别类别: :指指导导教教师师姓姓名名( (职职称称) ): :论论文提交日期:文提交日期:基于基于 C#C#端口扫描器的实现端口扫描器的实现摘摘 要要由于网络技术的飞速发展,网络规模迅猛增长和计算机系统日益复杂,导致新的系统漏洞层出不穷。黑客或者计算机病毒要想顺利渗透入目标计算机中,不管使用何种技术手段,必然要寻找目标计算机的漏洞为自己打开入侵的大门。为了保证网络中计算机的安全性,必须采取主动策略,快速、及时、准确、安全的检测
2、出网络中计算机及防火墙开放的和未开放的端口。计算机端口扫描技术就是这种主动防御策略实现的重要技术手段。本课题通过端口扫描器的研究来提高对计算机安全的认识。该端口扫描器采用 C#语言开发,在 VC 编译环境下通过测试。利用 TCP connect 扫描原理,扫描主机通过 TCP/IP 协议的三次握手与目标主机的指定端口建立一次完整的连接,如果目标主机该端口有回复,则说明该端口开放。利用多线程技术实现了对一目标 IP 进行设定数目的端口扫描,对多 IP 段的特定端口进行扫描。此外,还利用委托技术实现对界面元素的刷新。关键字关键字:端口扫描器;IP 段扫描;C#的多线程编程 The Implemen
3、t of Port Scanner Based on C#AbstractAlong with the rapid development of network technology, the more complication of computer and the more enlarged size of Internet, the more leaks may existed in new system. When computer virus or hacker wants to invade to a system or host, no matter what means the
4、ir take, it is obvious that they have to scan the system leaks at first. So as far as system security is concerned, no matter in Internet or Intranet, you should actively adopt a strategy to detect the state of the ports on your host computer or firewall. Computer port-scanning technology is one of
5、important means to realize positive defense.This topic focuses on the study of port scanner to improve understanding of computer security. The port scanner is developed and tested by C# in VC environment. By using TCP connect scaning technique, the scanning host use TCP / IP three-shook hands protoc
6、ol to establish a complete link with the target through the specified host ports. If the port of the specified host replies, it shows that the port is opened. The scanner utilizes multi-thread to implement port scanning for multiple target IP addresses at a given time or scanning a specified port in
7、 multiple different IP segments.Keywords: Port Scanner; IP Scanner; C # Multithreaded Programming目目 录录论文总页数:20 页1 引言 .11.1 网络安全 .11.2 安全扫描技术的产生及其发展趋势 .11.3 安全扫描技术分类 .21.3.1 端口扫描技术 .31.3.2 漏洞检测技术 .32 端口扫描.42.1 端口的基本概念 .42.1.1 端口的简介 .42.1.2 端口的分类 .42.2 端口扫描技术 .52.2.1 开放扫描技术 .52.2.2 半开放扫描技术 .62.3 隐蔽扫描技
8、术 .72.4 其扫描他技术 .83 系统分析与设计.83.1 说明 .83.2 基于 C#端口扫描器的系统分析与设计.93.3 基于 C#端口扫描器的期望.93.4 端口扫描器的实现与分析 .93.5 关键技术介绍 .104 端口扫描器的实现.104.1 端口扫描器的代码及说明 .104.1.1 多线程核心代码及说明 .104.1.2 委托技术的代码及说明 .104.1.3 扫描功能实现的代码及说明 .114.2端口扫描界面及功能介绍.145 扫描技术的市场和前景展望.17结 论.17参考文献.18致 谢.19声 明.201 1 引言引言1.11.1 网络安全网络安全二十一世纪是信息化、网络
9、化的世纪,信息是社会发展的重要资源。信息安全保障能力是一个国家综合国力、经济竞争实力和生存能力的重要组成部分,是世界各国在奋力攀登的制高点。网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行。网络安全包括技术领域和非技术领域两大部分:非技术领域包括一些制度、政策、管理、安全意识、实体安全等方面的内容;技术领域包括隐患扫描、防火墙、入侵检测、访问控制、虚拟专用网、CA 认证、操作系统等方面的内容。这些技术的目标是保证信息的可控性、可用性、保密性、完整性、和不可抵赖性。1.21.2 安全扫描技术的产生及其发展趋势安全扫描
10、技术的产生及其发展趋势随着 Internet 的不断发展,信息技术已成为促进经济发展、社会进步的巨大推动力。端口扫描技术是网络安全扫描技术一个重要的网络安全技术。与防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。安全扫描是安全技术领域中重要的一类。通过扫描能自动检测远端或本地主机系统信息,包括主机的基本信息(如计算机名、域名、组名、操作系统型等)、服务信息、用户信息以及漏洞信息,它的重要性在于能够对网络进行安全评估,及时发现安全隐患,防患于未然。任何技术的诞生都有深刻的思想基础。人们在对“安全”认识逐步深化的过程中,不断提出新的安全理论并付诸实践。在这个认识的过程中有两次重大的飞跃:第
11、一次飞跃就是早在二十世纪八十年代,人们认为信息安全就是信息保密相应地,采取的保障措施就是利用加密机加密和基于计算机规则的访问控制。这个时期防火墙和入侵检测系统(Intrusion Detection System,IDS )进一步发展起来,并在保护内部网络中起到了积极的作用。然而,九十年代中后期,黑客问题在一定程度上已成为网络世界的公害。对于防卫者,他必须防备入侵网络的全部手段。这使得保障网络安全愈加困难。传统的网络站点的安全保护模式是一种被动防御模式,难以实现对网络远程攻击的有效遏制。防火墙可以保护一个子网的边界,但是无法彻底防止黑客和抵制外部攻击。对于内部人员的攻击,防火墙就更加束手无策。
12、一般情况下,入侵检测系统只能对己知的入侵进行报警,对于针对新漏洞发起的攻击也无能为力。人们逐渐认识到问题的关键在于如何查找网络安全漏洞,堵住了系统安全漏洞,也就堵住了黑客和病毒的入侵。Dan Farme:和 Weitse Venema 提出了划时代的隐患扫描思想一既然黑客可以查找系统的漏洞,并针对这些漏洞对系统进行攻击,那么隐患扫描程序就可以采取与黑客相同的方法找到系统的漏洞,并将它们加以修复,起到防御黑客的作用。第二次飞跃就是在被动防护的基础上,提出了主动防御的思想。这就促进了安全扫描技术的诞生。安全扫描的主动防御思想很快渗透到许多其他的安全技术中。例如传统的 IDS 的响应方式都是被动的,
13、而 2001 年 2 月,美国国防部将主动网络防御技术列入了 2001 财年14 项先进概念技术演示项目(Advanced Concept Technology Demonstrations,ACTD),预计将在 2005 年完成,它们希望籍此取得网络防御的制高点,充分掌握信息战的主动权。安全扫描软件从最初的专门为 UNIX 系统编写的一些只具有简单功能的小程序,发展到现在,已经出现了多个运行在各种操作系统平台上的、具有复杂功能的商业程序。今后的发展趋势,我认为有以下几点: 使用插件(plugin)或者叫做功能模块技术。每个插件都封装一个或者多个漏洞的测试手段,主扫描程序通过调用插件的方法来执
14、行扫描。仅仅是添加新的插件就可以使软件增加新功能,扫描更多漏洞。在插件编写规范公布的情况下,用户或者第三方公司甚至可以自己编写插件来扩充软件的功能。同时这种技术使软件的升级维护都变得相对简单,并具有非常强的扩展性。 使用专用脚本语言。这其实就是一种更高级的插件技术,用户可以使用专用脚本语言来扩充软件功能。这些脚本语言语法通常比较简单易学,往往用十几行代码就可以定制一个简单的测试,为软件添加新的测试项。脚本语言的使用,简化了编写新插件的编程工作,使扩充软件功能的工作变得更加容易,也更加有趣。 由安全扫描程序到安全评估专家系统。最早的安全扫描程序只是简单的把各个扫描测试项的执行结果罗列出来,直接提
15、供给测试者而不对信息进行任何分析处理。而当前较成熟的扫描系统都能够将对单个主机的扫描结果整理,形成报表,能够并对具体漏洞提出一些解决方法,但对网络的状况缺乏一个整体的评估,对网络安全没有系统的解决方案。未来的安全扫描系统,应该不但能够扫描安全漏洞,还能够智能化的协助网络信息系统管理人员评估本网络的安全状况,给出安全建议,成为一个安全评估专家系统。以上简要介绍了安全扫描的产生、发展和技术种类、以及发展趋势。尤其重点介绍了两种端口扫描技术及其优缺点。这些端口扫描技术理论都是通过计算机网络的基本理论知识和网络编程技术相结合来具体实现的。1.31.3 安全扫描技术分类安全扫描技术分类安全扫描工具是一把
16、双刃剑,既可以被网络管理员利用,又可以被黑客利用。端口扫描技术和漏洞检测技术是安全扫描中的关键技术,下面分别介绍。.1 端口扫描技术端口扫描技术端口扫描属于安全探测技术范畴,对应于网络攻击技术中的网络信息收集技术。黑客能否进“房间” ,关键在于他是否发现了打开的“门窗” 。也就是说,关键是能否准确地收集系统信息。黑客要做的是构造目标网络中所有系统的地图,包括操作系统类型、版本号以及可以在其上运行的服务等。黑客手工收集信息一般遵循以下步骤:(1)获取主机名与 IP 地址:可以通过使用 whois 与 nslookup 等工具。(2)获得操作系统类型信息:标识的最快方法就是试图 t
17、elnet 至该系统,从标识来判断。(3) FTP 信息:黑客将测试是否开放 FIP 服务,匿名 FIP 是否可用,若可用,则试图发掘更多的潜在问题。(4) TCP/iJDP 扫描:对于 TCP, telnet 可以用来试图与某一特定端口连接,这也是手工扫描的基本方法。从返回的标识可以得到更多的信息。从中再分析系统是否开放 RPC 服务、FINGER, RUSERS 和 RWHO 等比较危险的服务。这样,到这里为止,黑客完成了对远程系统信息的手工扫描。端口扫描软件就是要尽可能的自动地模拟黑客的扫描手段。根据端口扫描的方法的不同,端口扫描技术分为五大类: 全开扫描:通过完整的 TCP 连接探查端
18、口。主要有 TCP connect,反向dent. 半开扫描:通过不完整的 TCP 连接探查端口。主要有 SYN flag,IP ID header dumb scan. 隐蔽扫描(stealth scanning):利用 FIN 字段来探查端口。不包含标准三次握手的任一部分。主要有 SMACK flag, ACK flags, NULL flags,ALL flags (XMAS)。 IP 段扫描(sweeps scanning):同时对一个网段进行扫描。主要有 TCP echo, UDP echo, TCP SYN, ICMP echo。.2 漏洞检测技术漏洞检测技术漏洞是
19、硬件、软件或者是安全策略上的错误而引起的缺陷,从而可以使别人能够利用这个缺陷在系统未授权的情况下访问系统或者破坏系统的正常使用。漏洞产生的原因有三种: 网络协议漏洞 配置不当导致的系统漏洞 系统管理漏洞主要有两个方面:系统管理员对系统的设置存在安全漏洞。系统的部分功能自身存在安全漏洞隐患,应用软件系统安全的脆弱性。.漏洞检测就是漏洞信息收集以及对这些信息分析的过程。信息的收集是通过向目标发送特定的数据包实现的。信息分析是用收集到的信息匹配已知的规则来检测整个系统的安全性。漏洞检测有很多方法,可以根据使用软件、操作系统的版本来检测,也可以根据漏洞形成的原因、攻击原理来检测。隐患扫描技术与防火墙、
20、入侵检测系统的互相配合,能够及时的发现漏洞,有效的防御黑客的进攻,极大增强网络的安全性。2 2 端口扫描端口扫描2.12.1 端口的基本概念端口的基本概念.1 端口的简介端口的简介“随着计算机网络技术的发展,原来物理上的接口(如键盘、鼠标、网卡、显示卡等输入/输出接口)已不能满足网络通信的要求,TCP/IP 协议作为主流网络操作系统的核心协议很好的解决了这个通信难题。因为在 TCP/IP 协议中引入了一种称之为Socket(套接字)应用程序接口。有了这样一种接口技术,一台计算机就可以通过软件的方式与任何一台具有 Socket 接口的计算机进行通信。端口在计算机编程上也就是Soc
21、ket 接口。正是有了这些端口,我们才可以把一台计算机既作 Web 服务器又作 FTP 服务器,因为各种服务采用不同的端口分别提供不同的服务,通常 TCP/IP 协议规定Web 采用 80 号端口,FTP 采用 21 号端口等。这样,通过不同端口,计算机就可以与外界进行互不干扰的通信。计算机的端口在计算机内部是由 16 位二进制书来表示的,因此计算机的端口最大可以有 65535 个,但是实际上常用的端口才几十个,由此可以看出未定义的端口相当多。这是很多黑客程序都可以采用某种方法,定义出一个特殊的端口来达到入侵的目的的原因所在。为了定义出这个端口,就要依靠某种程序在计算机启动之前自动加载到内存,
22、强行控制计算机打开特殊的端口。这个程序就是后门程序,这些后门程序就是常说的木马程序。.2 端口的分类端口的分类端口的分类根据其参考对象不同有不同划分方法,如果从端口的性质来分,通常可以分为以下三类:(1)公认端口:这类端口也常称之为常用端口。这类端口的端口号从 0 到1024,它们紧密绑定于一些特定的服务。通常这些端口的通信明确表明了某种服务的协议,这种端口是不可再重新定义它的作用对象。例如:80 端口实际上总是HTTP 通信所使用的,而 23 号端口则是 Telnet 服务专用的。这些端口通常不会被黑客程序利用。(2)注册端口:端口号从 1025 到 49151。它们松散地绑
23、定于一些服务。也是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义。(3)动态和/或私有端口:端口号从 49152 到 65535。理论上,不应把常用服务分配在这些端口上。实际上,有些较为特殊的程序,特别是一些木马程序就非常喜欢用这些端口,因为这些端口常常不被引起注意,容易隐蔽。如果根据所提供的服务方式的不同,端口又可分为面向连接的TCP 协议端口和面向无连结的UDP 协议端口两种,参见表 1 和表 2。 表 1 常见 TCP 公认端口号服务名称 端口号 说明FTP21文件传输服务TELNET23远程登录服务HTTP8
24、0网页浏览服务POP3110邮件服务SMTP25简单邮件传输服务SOCKS1080代理服务表 2 常见 UCP 公认端口号RPC111远程调用SNMP161简单网络管理TFTP69简单文件传送2.22.2 端口扫描技术端口扫描技术端口扫描在网络扫描中大约占了 96%,UDP (User Datagram Protoc 服务次之,占 3.7%。除了这两种之外,剩余的 0.3%是用户名和密码扫描、NetBIOS 域登录信息和 SNMP 管理数据等。某组织 I-Trap 曾经收集了来自 24 个防火墙 12小时工作的数据,这些防火墙分别位于美国俄亥俄州 24 个企业内网和本地 ISP所提供的 Int
25、ernet 主干网之间。其间,黑客攻击端口的事件有 12000 次之。“端口扫描”通常指用同一信息对目标计算机的所有所需扫描的端口进行发送,然后根据返回端口状态来分析目标计算机的端口是否打开、是否可用。.1 开放扫描技术开放扫描技术1. TCP connects 扫描:这是最基本的 TCP 扫描。操作系统提供的 connects 系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connects 就能成功。否则,这个端口是不能用的,即没有提供服务。优点:稳定可靠,不需要特殊的权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每
26、个目标端口以线性的方式,使用单独的connects 调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞 I/O 允许设置一个低的时间用尽周期,同时观察多个套接字。缺点:扫描方式不隐蔽,服务器日志会记录下大量密集的连接和错误记录,并容易被防火墙发现和屏蔽。目标计算机的 logs 文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。2.TCP 反向 ident 扫描:ident 协议允许(rfc1413)看到通过 TCP 连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。因此能连接到 http 端口,然后用identd 来发现服务
27、器是否正在以 root 权限运行。缺点:这种方法只能在和目标端口建立了一个完整的 TCP 连接后才能看到。.2 半开放扫描技术半开放扫描技术1.TCP SYN 扫描:扫描主机向目标主机的选择端口发送设置了 SYN 数据标志的 TCP 包,就象打开常规 TCP 连接时一样。如果被扫描主机发送设置了 RST 和 ACK 标志的包,那么说明端口是关闭的,按照设定就探听其它端口;如果该端口是打开的,则被扫描主机返回设置了 SYN 和 ACK 标志的包进行响应,说明目标端口处于监听状态。由于在 SYN 扫描时,全连接尚未建立,所以这种技术通常被称为半打开扫描。优点:隐蔽性较全连接扫描好,
28、即使日志中对扫描有所记录,但是尝试进连接的记录也要比全扫描少得多。2.TCP 间接扫描:间接扫描的思想是利用第三方的 IP(欺骗主机)来隐藏真正扫描者的 IP。由于扫描主机会对欺骗主机发送回应信息,所以必须监控欺骗主机的 EP 行为,从而获得原始扫描的结果。扫描主机通过伪造第三方主机 lP 地址向目标主机发起SYN 扫描,并通过观察其 IP 序列号的增长规律获取端口的状态间接扫描的工作过程如下:假定参与扫描过程的主机为扫描机,隐藏机,目标机。扫描机和目标记的角色非常明显。隐藏机是一个非常特殊的角色,在扫描机扫描目的机的时候,它不能发送任何数据包(除了与扫描有关的包)。优点:隐蔽性好。缺点:对第
29、三方主机的要求较高。2.32.3 隐蔽扫描技术隐蔽扫描技术1. TCP FIN 扫描:扫描器向目标主机端口发送 FIN 包。当一个 FIN 数据包到达一个关闭的口,数据包会被丢掉,并且返回一个 RST 数据包。否则,若是打开的端口,数据包只是简单的丢掉(不返回 RST)。这种方法和系统的实现有一定的关系。有的系统不管端口是否打开,都回复 RST,这样,这种扫描方法就不适用了。优点:由于这种技术不包含标准的 TCP 三次握手协议的任何部分,所以无法被记录下来,从而必 SYN 扫描隐蔽得多,FIN 数据包能够通过只监测 SYN 包的包过滤器。缺点:跟 SYN 扫描类似,需要自己构造数据包,要求由超
30、级用户或者授权用户访问专门的系统调用;通常适用于 UNIX 目标主机,除过少量的应当丢弃数据包却发送 RST 包的操作系统(包括 CISCO, HP/UX, MVS 和 IRIX )。但在Windows95/NT 环境下,该方法无效,因为不论目标端口是否打开,操作系统都返回 RST 包。2.TCP Xmas 和 TCP Null 扫描:TCP Xmas 和 Null 扫描是 FIN 扫描的两个变种。Xmas 扫描打开 FIN, URG和 PUSH 标记,而 Null 扫描关闭所有标记。这些组合的目的是为了通过对 FIN标记数据包的过滤。当一个这种数据包到达一个关闭的端口,数据包会被丢掉,并且返
31、回一个 RST 数据包。否则,若是打开的端口,数据包只是简单的丢掉(不返回 RST)。优点:隐蔽性好。缺点:需要自己构造数据包,要求由超级用户或者授权用户权限;通常适用于 UNIX 目标主机,而 Windows 系统不支持。3. TCP 助 proxy 扫描:FTP 代理连接选项,其目的是允许一个客户端同时跟两个 FTP 服务器建立连接,然后在服务器之间直接传输数据。然而,在大部分实现中,实际上能够使得 FTP 服务器发送文件到 Internet 的任何地方。该方法正是利用了这个缺陷,其扫描步骤如下:(1)假定 S 是扫描机,T 是扫描目标,F 是一个助服务器,这个服务器支持代理选项,能够跟
32、S 和 T 建立连接。(2) S 与 F 建立一个 ftp 会话,使用 PORT 命令声明一个选择的端口(称之为 p-T)作为代理传输所需要的被动端口。 (3)然后 S 使用一个 LIST 命令尝试启动一个到 p-T 的数据传输。(4)如果端口 p-T 确实在监听,传输就会成功(返回码 150 和 226 被发送回给 S),否则 S 回收到”425 无法打开数据连接”的应答。(5) S 持续使用 PORT 和 LIST 命令,直到 T 上所有的选择端口扫描完。优点:FTP 代理扫描不但难以跟踪,而且可以穿越防火墙。缺点:一些 ftp server 禁止这种特性。4. IP 段扫描:它并不直接发
33、送 TCP 探测数据包,是将数据包分成两个较小的 IP 段。这样就将一个 TCP 头分成好几个数据包,从而包过滤器就很难探测到。优点:隐蔽性好,可穿越防火墙。缺点:可能被丢弃;某些程序在处理这些小数据包时会出现异常。2.42.4 其扫描他技术其扫描他技术1. FTP 返回攻击:FTP 协议的一个有趣的特点是它支持代理(proxy) FTP 连接.即入侵者可以从自己的计算机 和目标主机 的 FTP server-PI(协议解释器)连接,建立一个控制通信连接。然后,请求这个 server-PI 激活一个有效的server-DTP(数据传输进程)来给 Internet 上任何地方发送文件。这个协议的
34、缺点是”能用来发送不能跟踪的邮件和新闻,给许多服务器造成打击,用尽磁盘,企图越过防火墙” 。可利用这个的目的是从一个代理的 FTP 服务器来扫描 TCP 端口。这样,能在一个防火墙后面连接到一个 FTP 服务器,然后扫描端口(这些原来有可能被阻塞)。如果 FTP 服务器允许从一个目录读写数据,你就的数据到发现的打开的端口。2. FIN+URG+PUSH 扫描:FIN+URG+PUSH 扫描向目标主机发送一个 Fin, URG 和 PUSH 分组,根据RFC793,如果目标主机的相应端口是关闭的,那么应该返回一个 RST 标志。3 3 系统分析与设计系统分析与设计3.13.1 说明说明端口扫描通
35、常指用同一个信息对目标主机的所有需要扫描的端口进行发送探测数据包即扫描,然后,根据返回端口的状态来分析目标主机端口是否打开,是否可用。端口扫描通过与目标主机的 TCP/IP 端口建立连接并请求某些服务,记录目标主机的应答,收集目标主机相关信息,从而发现目标主机某些内在的安全弱点,并且确定该端口什么服务正在进行并获取该服务的信息。端口扫描也可以通过捕获本地主机或服务器的流入流出 IP 数据包来监视本地主机的运行情况,它仅能对接收到的数据进行分析,帮助我们发现目标主机的某些内在的弱点,而不会提供进入一个系统的详细步骤。3.23.2 基于基于 C#C#端口扫描器的系统分析与设计端口扫描器的系统分析与
36、设计 端口是主机与外界通讯交流的数据出入口。端口分为硬件端口和软件端口,所谓硬件端口又称为接口,包括:USB 端口、串行端口、并行端口等。软件端口一般指网络中面向连接服务(TCP)和无连接服务(UDP)的通讯协议的端口。一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息。通过端口扫描,发现系统的安全漏洞。它使系统用户了解系统目前向外界提供了哪些服务,从而为系统用户管理网络提供了一种手段。本课题利用 TCP connect()扫描:也称全连接扫描。扫描主机通过 TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接。连接由系统调用TCPc
37、lient 类的 connect()方法。如果端口开放,则连接将建立成功;否则,若返回-1 则表示端口关闭。建立连接成功:响应扫描主机的 SYN/ACK 连接请求,这一响应表明目标端口处于监听(打开)的状态。如果目标端口处于关闭状态,则目标主机会向扫描主机发送 RST 的响应。3.33.3 基于基于 C#C#端口扫描器的期望端口扫描器的期望 我们对基于 C#端口扫描器的期望主要有下面几个方面: 1:多线程,主要实现高效率扫描。 2:对一目标 IP 进行设定数目的端口扫描。 3:对一目标 IP 段的特定端口进行扫描。3.43.4 端口扫描器的实现与分析端口扫描器的实现与分析本端口扫描器是采用 V
38、 2005 开发,C#作为一门新兴的语言,有着VC+的强大灵活,又有着 VB 等的简单易用。在网络编程方面更显示出它的强大功能。使用的类库是.Net 框架中的类库.Net Framework SDK。在.Net Framework SDK 中为网络编程提供了二个名字空间:“System.Net”和“System.Net.Sockets” 。C#就是通过这二个名字空间中封装的类和方法实现络通讯的。通过这二个名字空间可以开发出多种网络应“System.Net.Sockets”名字空间为需要控制网络访问的开发人员提供了 Windows Sockets(winsock)接口的托管实现。 “System
39、.Net”名字空间中的所有其他网络访问类都建立在该套接字 Socket 实现之上,如 TCPClinet、TPCListener 和 UDPclinet 类封装有关创建到 Internet 的 TCP 和 UDP 连接的详细信息;NetworkStream 类则提供用于网络访问的基础数据流等,常见的许多 Internet 服务都可以见到 Socket 的踪影,如 Telnet,Http、Email、TCP 等,这些服务尽管通讯协议 Protocol 的定义不同,但是其基础的传输都是采用 Socket。我们只需通过设置控件的属性并调用其方法就可轻易连接到一台远程计算机中,了解其所开放的端口,并且
40、还可以双向交换数据。3.53.5 关键技术介绍关键技术介绍 多线程技术:多线程是指操作系统支持在一个进程中执行多个线程的能力,一个进程中可包括一个或者多个线程,因此线程是程序运行的基本单位.线程在程序中是独立的.并发的,每个线程有它自己的堆栈,自己的程序计算器和自己的局部变量.利用多线程技术,可以快速.高效率的对端口进行扫描。 委托委托类似于函数指针,但函数指针只能引用静态方法,而委托既能引静态方法,也能引用实例方法。委托使用分三步:1、委托声明。2、委托实例化。3、委托调用。 4 4 端口扫描器端口扫描器的实现的实现4.4.1 1 端口扫描器的代码及说明端口扫描器的代码及说明
41、.1 多线程核心代码及说明多线程核心代码及说明由于要实现多线程、高速度、高效率的扫描目标,程序采用了多线程并发扫描技术实现了高效率扫描。调用 Startscan 函数实现多线程。for (Int32 m_abc = startPort; m_abc = endPort; m_abc+)hreadPool.QueueUserWorkItem(new WaitCallback(Startscan), m_abc);loglist.Items.Add(扫描端口:+m_abc.ToString();.2 委托技术的代码委托技术的代码及说明及说明 由于程序采用了多线程对端口进行扫描,界面
42、控件更新线程,须用委托进行刷新,才能保证程序正常运行。 / 界面控件更新 线程须用委托刷新 /定义一个委托 public delegate void MyInvoke(string str); /定义一个操作界面的方法 private void UpdateUIport(string str) /增加项 /this.lstPrime.Items.Add(str); portlist.Items.Add(str); /定义一个操作界面的方法 private void UpdateUI(string str) /增加项 /this.lstPrime.Items.Add(str); portlist
43、1.Items.Add(str); /定义一个操作界面的方法 private void UpdateUI2(string str) /增加项 /this.lstPrime.Items.Add(str); loglist.Items.Add(str); /定义一个操作界面的方法 private void UpdateUI3(string str) /增加项 /this.lstPrime.Items.Add(str); label5.Text = str; /委托调用按钮,刷新界面private void UpdateUI4(string str) /增加项 /this.lstPrime.Item
44、s.Add(str); button1.Enabled = true; button2.Enabled = false; .3 扫描功能实现的代码及说明扫描功能实现的代码及说明新建 TCP 连接,调用 TCPclient 类的 connect()方法,与目标主机进行一次完整的连接, 如果目标主机该端口有回复,则说明该端口开放。并调用外面程序中的委托定义,以实现其界面上 portlist 列表框的更新。/扫描功能实现public void Startscan(Object state) Int32 port = (Int32)state; int list = 0; thread
45、num+; / endscan = false 扫描结束标志 if (endscan = false)if (threadnum = (Int32)endnum.Value - (Int32)snum.Value) try / 新建 TCP TcpClient tcp = new TcpClient(); / 连接 IP tesbox 端口 port 判断是否能连接计算机,即端口开放情况 tcp.Connect(textBox7.Text, port); portnum+;/list = portlist.Items.Add(port.ToString() + 端口开放 ,false); My
46、Invoke mi = new MyInvoke(UpdateUIport);this.BeginInvoke(mi, new object port.ToString() + 端口开放 ); catch /portlist1.Items.Add(port.ToString() + 端口无法连接); MyInvoke mi = new MyInvoke(UpdateUI); this.BeginInvoke(mi, new object port.ToString() + 端口无法连接 ); inally / 线程结束 Thread.Sleep(0); /loglist.Items.Add(结
47、束线程 + port.ToString(); /委托调用 MyInvoke mi = new MyInvoke(UpdateUI2); this.BeginInvoke(mi, new object 结束线程 + port.ToString() ); asyncOpsAreDone.Close();/ label5.Text = portnum.ToString();/ 调用委托 更新控件 MyInvoke mi3 = new MyInvoke(UpdateUI3); this.BeginInvoke(mi3, new object portnum.ToString() ); if (ends
48、can = true | threadnum = (Int32)endnum.Value - (Int32)snum.Value) / button1.Enabled = true; / button2.Enabled = false; / 异步调用结束线程关闭 asyncOpsAreDone.Close(); MyInvoke mi4 = new MyInvoke(UpdateUI4); this.BeginInvoke(mi4, new object 344); public void Startscan(Object state) string ip = state.ToString()
49、; int list = 0; threadnum+; if (endscan = false) try IPHostEntry HostA = new IPHostEntry(); HostA = Dns.Resolve(ip); string ipt = HostA.HostName.ToString(); TcpClient tcp = new TcpClient(); tcp.Connect(ipt, int.Parse(textBox2.Text); /list = portlist.Items.Add(port.ToString() + 端口开放 ,false); MyInvoke
50、 mi = new MyInvoke(UpdateUIport); this.BeginInvoke(mi, new object ip + 开放 );list = list + 1; catch /portlist1.Items.Add(port.ToString() + 端口无法连接); MyInvoke mi = new MyInvoke(UpdateUI); this.BeginInvoke(mi, new object ip + 无法连接 ); finally Thread.Sleep(0); /loglist.Items.Add(结束线程 + port.ToString(); /委
51、托调用 MyInvoke mi = new MyInvoke(UpdateUI2); this.BeginInvoke(mi, new object 结束线程 +ip );asyncOpsAreDone.Close(); / label5.Text = portnum.ToString(); MyInvoke mi3 = new MyInvoke(UpdateUI3); this.BeginInvoke(mi3, new object list.ToString(); if (endscan = true | ip=textBox1.Text) / button1.Enabled = true
52、; / button2.Enabled = false; asyncOpsAreDone.Close(); MyInvoke mi4 = new MyInvoke(UpdateUI4); this.BeginInvoke(mi4, new object 344 ); 4.24.2端口扫描界面及功能介绍端口扫描界面及功能介绍对一目标 IP 进行设定数目的端口扫描界面图: 图 1 端口扫描界面 在上述界面中,在扫描的 IP 地址框输入目标机器的 IP 地址,如:9 开始端口框输入起始端口号,如:0,然后在结束端口框输入结束端口号,如:1000。点击开始后,程序就开始进行对目
53、标 IP 进行设定数目的端口扫描。结果如下图: 图 2 端口扫描结果如图 2 所示,程序对所设定的 IP 进行了多线程快速的扫描,在开放的端口数目后的数字代表该 IP 端口开放的数目,在扫描端口下,显示正在进行扫描的端口,无法访问的端口下,显示关闭的端口。扫描结果出该 IP 在 0-1000 号端口中的 80(全球信息网超文本传输协议),135(查询服务 DNS),139(共享资源端口),445(NT 的共享资源新端口)端口开放.通过观察该目标主机所开放的端口都属于安全端口。对一 IP 段端口扫描界面: 图 3 IP 段端口扫描如图 3,在扫描 IP 地址输入起始 IP 和结束 IP,进行对设
54、定 IP 段进行扫描,如: 到 0。在扫描的端口号输入想要扫描的端口号,如:21。点击开始后,程序就开始进行对目标一 IP 段设定端口进行扫描。结果如下:图 4 IP 段端口扫描结果如图 4 所示,程序对一个 IP 段的特定端口进行扫描,在扫描 IP 下,显示正在进行端口的 IP 地址,在无法访问的 IP 下,显示这些 IP 这个特定的端口没有开放,而能访问的 IP 下,则显示着开放这个特定端口的并扫描出该 IP 段中对特定端口开放的 IP,这样可以高效率的对某 IP 的危险端口扫描,这样可以提早发现体统存在的缺陷,作好入侵防范工作。5 5 扫描
55、技术的市场和前景展望扫描技术的市场和前景展望随着网络的发展和内核的进一步修改,新的端口扫描技术及对入侵性的端口扫描的新防御技术还会诞生,而到目前为止还没有一种完全成熟、高效的端口扫描防御技术;同时,漏洞扫描面向的漏洞包罗万象,而且漏洞的数目也在继续的增加。就目前的漏洞扫描技术而言,自动化的漏洞扫描无法得以完全实现,而且新的难题也将不断涌现,因此网络安全扫描技术仍有待进一步的研究和完善。结结 论论本课题所完成的端口扫描器,可以对设定的 IP 或 IP 段进行端口扫描,可以确定目标什么网络服务正在侦听主机。进行这种扫描时,扫描者会探测常用的服务端口,以查看远程主机是否正在提供常见的网络服务,例如
56、Web 服务和邮件。有关此主题的变体有很多,但是它们的目标都是一样的,那就是收集远程主机的信息。使用此信息能够实现什么目的取决于扫描者的技巧以及被扫描主机的网络和应用程序保护机制。随着网络的发展和内核的进一步修改,新的端口扫描技术及对入侵性的端口扫描的新防御技术还会诞生,目前为止还没有一种完全成熟、高效的端口扫描防御技术。端口扫描技术仍有待更进一步的研究和完善。参考文献参考文献1 赵树升,赵韶平.信息安全原理与实践M.北京:清华大学出版社,2004。2 夏普 著,周靖 译.Visual C# 2005 从入门到精通M.北京:清华大学出版社,2006。3 肖微.端口扫描技术的原理及原理J.网络安
57、全技术与应用,2006,(7):32-41。4 李雷.端口扫描方法的原理.实现和防御J.电脑编程技巧和维护,2004,(5):21-25。5 刘烨,吴中元.c编程及应用程序开发教程M.北京:清华大学出版社,2005.12。6 郑宇军.C#2.0 程序设计教程M.北京:清华大学出版社,2005.12。7 张海潘.软件工程导论M.北京:清华大学出版社,2004.11。致致 谢谢在我完成毕业设计的过程中,我要十分感谢我的导师王燚,严谨细致、一丝不苟的作风一直是我工作、学习中的榜样,他循循善诱的教导和不拘一格的思路给予我无尽的启迪。王老师在选题和在完成毕业设计过程中多次询问研究进程,并为我指点迷津,帮
58、助我开拓研究思路、热忱鼓励,始终给予我细心的指导和不懈的支持。在这里我对他的关怀和帮助表达真诚的感谢。最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢!作者简介: 姓 名:柳谦 性别: 男出生年月:1982 年 9 月 11 日 民族: 汉E-mail:声声 明明本论文的工作是 2007 年 2 月至 2007 年 6 月在成都信息工程学院网络工程系完成的。文中除了特别加以标注地方外,不包含他人已经发表或撰写过的研究成果,也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使用过的材料。除非另有说明,本文的工作是原始性工作。关于学位论文使用权和研究成果知识产权的说明:本人完全了解成
59、都信息工程学院有关保管使用学位论文的规定,其中包括:(1)学校有权保管并向有关部门递交学位论文的原件与复印件。(2)学校可以采用影印、缩印或其他复制方式保存学位论文。(3)学校可以学术交流为目的复制、赠送和交换学位论文。(4)学校可允许学位论文被查阅或借阅。(5)学校可以公布学位论文的全部或部分内容(保密学位论文在解密后遵守此规定) 。除非另有科研合同和其他法律文书的制约,本论文的科研成果属于成都信息工程学院。特此声明! 作者签名: 年 月 日 过战况,博学多闻的隆美尔一下子就猜出了那种能在空中自动旋转,抵冲地心引力的金属伞,是消失已久的地精文明杰作“空降陀螺伞” 刘震撼毫不掩饰,向隆美尔吹嘘了自己退剿灭地精强盗,无意中得到过地精武器设计图纸的事实,包括威名赫赫的魔导大炮,古力火铳、地精军刀一应俱全。 “那你怎么不给比蒙大军列装这种地精武器?”隆美尔哈哈大笑,显然是认为老流氓在胡扯。 “列装个屁啊!那个青铜版图纸被我一气之下,直接捏扁了!”刘震撼苦笑着双手一摊:“威力最大的魔导炮和古力火铳,都需要魔法金属做镀层,还要用微雕技术篆刻魔法阵,我上哪找这些技术和材料?再说了。摩拉丁怒火上哪找去?地精虽然发明了可以炸开矿山的黑色粉未,可是我没配方,也做不出炮弹啊!” 刘震撼这句话倒是说的心里话,用微雕技术篆刻魔法阵,按照爱琴大陆现在的炼金技术,估计只有庞贝帝国的艾玛尔大师可以试试,至
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 通知变更售后服务流程函4篇
- 生物医药创新研发-第1篇
- 碳中和绿色能源管理平台
- 快乐阅读时光:分享好书小学主题班会课件
- 网络安全工程师系统性能KPI绩效评定表
- 小学语文教师阅读教育与鉴赏能力提升指导书
- 光伏钙钛矿效率提升
- 企业管理者领导力提升指导书
- 江西省宜春市2025届高三下学期模拟考试化学试卷(解析版)
- 关于签订战略合作协议的意向书6篇范文
- 如何种植毛豆课件
- GB/T 20118-2025钢丝绳通用技术条件
- 肿瘤科护理专业知识试题及答案
- 人教版数学六年级上册课内提升每日一练
- 信息安全实验指南
- 浙江杭州2020-2023年中考满分作文44篇
- 2024-2025学年湖北省武汉市洪山区五年级(下)期末数学试卷
- 江西鄱阳一中入学考试数学试卷
- 2025年GCP考试题库附参考答案ab卷
- 肝性脑病疑难病例讨论
- 急诊科脑梗死护理查房
评论
0/150
提交评论