您现在的位置:asp.net毕业设计 >> Asp.Net毕业设计 >> 浏览文章
C#端口扫描器的设计与实现
作者:佚名 日期:2012年01月10日 来源:本站原创  【字体: 】   我要评论(0)
核心提示:
2 端口扫描 2.1 端口的基本概念 2.1.1 端口的简介 “随着计算机网络技术的发展,原来物理上的接口(如键盘、鼠标、网卡、显示卡等输入/输出接口)已不能满足网络通信的要求,

2 端口扫描

2.1 端口的基本概念

2.1.1 端口的简介

“随着计算机网络技术的发展,原来物理上的接口(如键盘、鼠标、网卡、显示卡等输入/输出接口)已不能满足网络通信的要求,TCP/IP协议作为主流网络操作系统的核心协议很好的解决了这个通信难题。因为在TCP/IP协议中引入了一种称之为"Socket(套接字)"应用程序接口。有了这样一种接口技术,一台计算机就可以通过软件的方式与任何一台具有Socket接口的计算机进行通信。端口在计算机编程上也就是"Socket接口"。

正是有了这些端口,我们才可以把一台计算机既作Web服务器又作FTP服务器,因为各种服务采用不同的端口分别提供不同的服务,通常TCP/IP协议规定Web采用80号端口,FTP采用21号端口等。这样,通过不同端口,计算机就可以与外界进行互不干扰的通信。计算机的端口在计算机内部是由16位二进制书来表示的,因此计算机的端口最大可以有65535个,但是实际上常用的端口才几十个,由此可以看出未定义的端口相当多。这是很多黑客程序都可以采用某种方法,定义出一个特殊的端口来达到入侵的目的的原因所在。为了定义出这个端口,就要依靠某种程序在计算机启动之前自动加载到内存,强行控制计算机打开特殊的端口。这个程序就是"后门"程序,这些后门程序就是常说的木马程序。

2.1.2 端口的分类

端口的分类根据其参考对象不同有不同划分方法,如果从端口的性质来分,通常可以分为以下三类:

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

(2)注册端口:端口号从1025到49151。它们松散地绑定于一些服务。也是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义。

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

如果根据所提供的服务方式的不同,端口又可分为面向连接的"TCP协议端口"和面向无连结的"UDP协议端口"两种,参见表1和表2。

表1 常见TCP公认端口号

服务名称

端口号

说明

FTP

21

文件传输服务

TELNET

23

远程登录服务

HTTP

80

网页浏览服务

POP3

110

邮件服务

SMTP

25

简单邮件传输服务

SOCKS

1080

代理服务

表2 常见UCP公认端口号

RPC

111

远程调用

SNMP

161

简单网络管理

TFTP

69

简单文件传送

2.2 端口扫描技术

端口扫描在网络扫描中大约占了96%,UDP (User Datagram Protoc服务次之,占3.7%。除了这两种之外,剩余的0.3%是用户名和密码扫描、NetBIOS域登录信息和SNMP管理数据等。某组织I-Trap曾经收集了来自24个防火墙12小时工作的数据,这些防火墙分别位于美国俄亥俄州24个企业内网和本地ISP所提供的Internet主干网之间。其间,黑客攻击端口的事件有12000次之。

“端口扫描”通常指用同一信息对目标计算机的所有所需扫描的端口进行发送,然后根据返回端口状态来分析目标计算机的端口是否打开、是否可用。

2.2.1 开放扫描技术

1. TCP connects扫描:

这是最基本的TCP扫描。操作系统提供的connects系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,那么connects就能成功。否则,这个端口是不能用的,即没有提供服务。

优点:稳定可靠,不需要特殊的权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的connects调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。使用非阻塞I/O允许设置一个低的时间用尽周期,同时观察多个套接字。

缺点:扫描方式不隐蔽,服务器日志会记录下大量密集的连接和错误记录,并容易被防火墙发现和屏蔽。目标计算机的logs文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。

2.TCP反向ident扫描:

ident协议允许(rfc1413)看到通过TCP连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。因此能连接到http端口,然后用identd来发现服务器是否正在以root权限运行。

缺点:这种方法只能在和目标端口建立了一个完整的TCP连接后才能看到。

2.2.2 半开放扫描技术

1.TCP SYN扫描:

扫描主机向目标主机的选择端口发送设置了SYN数据标志的TCP包,就象打开常规TCP连接时一样。如果被扫描主机发送设置了RST和ACK标志的包,那么说明端口是关闭的,按照设定就探听其它端口;如果该端口是打开的,则被扫描主机返回设置了SYN和ACK标志的包进行响应,说明目标端口处于监听状态。由于在SYN扫描时,全连接尚未建立,所以这种技术通常被称为半打开扫描。

优点:隐蔽性较全连接扫描好,即使日志中对扫描有所记录,但是尝试进连接的记录也要比全扫描少得多。

2.TCP间接扫描:

间接扫描的思想是利用第三方的IP(欺骗主机)来隐藏真正扫描者的IP。由于扫描主机会对欺骗主机发送回应信息,所以必须监控欺骗主机的EP行为,从而获得原始扫描的结果。扫描主机通过伪造第三方主机lP地址向目标主机发起SYN扫描,并通过观察其IP序列号的增长规律获取端口的状态间接扫描的工作过程如下:假定参与扫描过程的主机为扫描机,隐藏机,目标机。扫描机和目标记的角色非常明显。隐藏机是一个非常特殊的角色,在扫描机扫描目的机的时候,它不能发送任何数据包(除了与扫描有关的包)



编辑:admin
相关文章列表
网友评论
asp.net毕业设计-关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助中心