《电子技术应用》
您所在的位置:首页 > 通信与网络 > 业界动态 > 网络端口扫描及对策研究

网络端口扫描及对策研究

2008-09-19
作者:武 装

    摘  要: 分析了端口扫描的原理和常用方法,并提出相应检测、处理方法。 

    关键词: 安全防护  端口  端口扫描

 

    随着网络在学校教学、科研、管理各个方面的应用,网络用户资源的安全防护要求日益迫切。网络上充斥着各种各样的良性、恶性信息,其中端口扫描信息最应引起网络管理人员和用户的警觉和注意,因为一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,能得到许多有用的信息,同时也往往是一次入侵的前奏。最近流行的“冲击波”病毒就是通过对主机135、4444端口扫描,利用RPC服务的漏洞进一步对主机进行攻击。 

1 扫描器的基本工作原理 

    进行扫描的方法很多,可以手工进行扫描,但主要是使用端口扫描软件(扫描器)进行。扫描器是一种自动检测远程或本地主机安全性弱点的程序,通过使用扫描器可以不留痕迹的发现远程服务器的各种TCP端口的分配及提供的服务和它们的软件版本。这就能间接的或直观的了解到远程主机所存在的安全问题。  

    扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息(比如:是否能用匿名登陆,是否有可写的FTP目录,是否能用TELNET,HTTPD是否用ROOT在运行。)  

    扫描器并不是一个直接的攻击网络漏洞的程序,它仅仅能帮助我们发现目标机的某些内在的弱点。一个好的扫描器能对它得到的数据进行分析,帮助查找目标主机的漏洞。但它不会提供进入一个系统的详细步骤。  

    扫描器应该有三项功能:(1)发现一个主机或网络;(2)一旦发现一台主机,能发现正运行的这台主机在进行何种服务;(3)通过测试这些服务,发现漏洞。 

2 常见的扫描技术 

    常见的扫描方法有以下几种; 

    (1)TCP connect() 扫描  

    这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态,则connect()就能成功。否则,这个端口是不能用的,即没有提供服务。这个技术的最大的优点是,用户不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度快。如果对每个目标端口以线性的方式,使用单独的connect()调用,将会花费相当长的时间,用户可以通过同时打开多个套接字" title="套接字">套接字,从而加速扫描。使用非阻塞I/O" title="I/O">I/O允许设置一个低的时间用尽周期,同时观察多个套接字。但这种方法的缺点是很容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接出错的服务消息,并且能很快地使它关闭。  

    (2)TCP SYN扫描  

    这种技术通常认为是半开放扫描,这是因为扫描程序不必要打开一个完全的TCP连接。扫描程序发送的是一个SYN数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。一个SYN|ACK的返回信息表示端口处于侦听状态。一个RST返回,表示端口没有处于侦听态。如果收到一个SYN|ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。这种扫描技术的优点在于一般不会在目标计算机上" title="机上">机上留下记录。但这种方法的缺点是,必须要有root权限才能建立自己的SYN数据包。  

    (3)TCP FIN 扫描 

    有的时候有可能SYN扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN数据包可能会顺利通过。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数据包的回复。这种方法和系统的实现有一定的关系。如果有的系统不管端口是否打开,都回复RST,那么这种扫描方法就不适用了。但这种方法在区分Unix和NT时是十分有用的。  

    (4)IP段扫描  

    并不是直接发送TCP探测数据包,是将数据包分成二个较小的IP段。这样就将一个TCP头分成好几个数据包,从而过滤器就很难探测到。但一些程序在处理这些小数据包时会有些问题。  

    (5)TCP 反向 ident扫描  

    ident 协议允许(rfc1413-Request For Comments1413)看到通过TCP连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。例如用户连接到http端口,然后用identd来发现服务器是否正在以root权限运行。这种方法只能在和目标端口建立了一个完整的TCP连接后才能看到。  

    (6)FTP 返回攻击  

    FTP协议的一个的特点是它支持代理(proxy)FTP连接。即入侵者可以从自己的计算机1.com和目标主机2.com的FTP server-PI(协议解释器)连接,建立一个控制通信连接。然后,请求这个server-PI激活一个有效的server-DTP(数据传输进程)来给Internet上任何地方发送文件。这个协议的缺点是能用来发送不能跟踪的邮件和新闻,给许多服务器造成打击,用尽磁盘。  

    利用这个特点的目的是从一个代理的FTP服务器来扫描TCP端口。这样,用户能在一个防火墙后面连接到一个FTP服务器,然后扫描端口(这些原来有可能被阻塞)。如果FTP服务器允许从一个目录读写数据,用户就能发送任意的数据到发现的打开的端口。  

    对于端口扫描,这个技术是使用PORT命令来表示被动的User DTP正在目标计算机上的某个端口侦听。然后入侵者试图用LIST命令列出当前目录,结果通过Server-DTP发送出去。如果目标主机正在某个端口侦听,传输就会成功(产生一个150或226的回应)。否则,会出现″425 Can't build data connection: Connection refused.″。然后,使用另一个PORT命令,尝试目标计算机上的下一个端口。这种方法的优点很明显,难以跟踪,能穿过防火墙。主要缺点是速度很慢,有的FTP服务器最终能得到一些线索,关闭代理功能。  

    这种方法成功的系统显示状态:  

    220 xxxxxxx.com FTP server (Version wu-2.4(3) Wed Dec 14 ...) ready.  

    220 xxx.xxx.xxx.net FTP server ready.  

    220 xx.Telcom.xxxx.edu FTP server (Version wu-2.4(3) Tue Jun 11 ...) ready.  

    220 lem FTP server (SunOS 4.1) ready.  

    220 xxx.xxx.es FTP server (Version wu-2.4(11) Sat Apr 27 ...) ready.  

    220 elios FTP server (SunOS 4.1) ready  

    这种方法不成功的系统显示状态:  

    220 wcarchive.cdrom.com FTP server (Version DG-2.0.39 Sun May 4 ...) ready.  

    220 xxx.xx.xxxxx.EDU Version wu-2.4.2-academ[BETA-12](1) Fri Feb 7  

    220 ftp Microsoft FTP Service (Version 3.0).  

    220 xxx FTP server (Version wu-2.4.2-academ[BETA-11](1) Tue Sep 3 ...) ready.  

    220 xxx.unc.edu FTP server (Version wu-2.4.2-academ[BETA-13](6) ...) ready.  

 

 

    (7)UDP ICMP端口不能到达扫描  

    这种方法与上面几种方法的不同之处在于使用的是UDP协议。由于这个协议很简单,所以扫描变得相对比较困难。这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。但许多主机在向一个未打开的UDP端口发送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样软件就能发现哪个端口是关闭的。UDP和ICMP错误都不保证能到达,因此这种扫描器必须还实现在一个包看上去是丢失的时候能重新传输。这种扫描方法是很慢的,因为RFC对ICMP错误消息的产生速率做了规定。同样,这种扫描方法需要具有root权限。  

    (8)UDP recvfrom()和write()扫描  

    当非root用户不能直接读到端口不能到达错误时,Linux能间接地在它们到达时通知用户。例如,对一个关闭的端口的第二个write()调用将失败。在非阻塞的UDP套接字上调用recvfrom()时,如果ICMP出错还没有到达时回返回EAGAIN-重试。如果ICMP到达时,返回ECONNREFUSED-连接被拒绝。这就是用来查看端口是否打开的技术。  

    (9)ICMP echo扫描  

    这并不是真正意义上的扫描。但有时通过ping,在判断在一个网络上主机是否开机或网络设备是否在线正常工作时非常有用。 

3 网络扫描" title="网络扫描">网络扫描的监测与处理 

    网络扫描监测系统从逻辑上可以分为三个部分:即抓包模块,判定模块,以及处理模块" title="处理模块">处理模块。同时还应该保留对处理模块的接口。 

    (1)抓包模块,这一模块一般只需要调用标准的网络接口。目前一般的开发工具都提供相应的Winsock API()。 

    (2)判定模块,其流程图如下;本模块是处理由抓包模块提交的数据报文,根据预定义的过滤规则进行第一次匹配,选出非正常报文,提交给上层应用,对于选定的非正常报文,由于存在多种可能,如:TCP SYN、TCP FIN等,则需要进行由用户定制的二次匹配,其中的特征值由用户根据相应的扫描特点定义。那些仍然没有确定的报文,往往带有二义性,这就需要借助历史记录的数据库,或者报文(如ICMP报文)长度的阀值来加以判断。 

    (3)处理模块,这一模块是按照需要设置的各种实现方式和采取相对策略,并且要将相应记录存入日志。需要注意的是对一般的扫描要设置有效的阀值,仅仅一次、二次的扫描不应该被视为网络扫描。 

    端口扫描虽然可以分为秘密扫描、间接扫描、认证扫描、代理扫描、PING扫描和安全扫描等等,其应用的领域也十分广泛,但作为网络的用户对发生在自己身上的被扫描和请求连接应引起足够的重视,尤其是常用的低端口扫描和联结请求,如23、69、135、139、445等。做到心中有数,安全防范,预防攻击。 

参考文献 

1 Tcp/Ip Illustrated Volume 1The Protocols.U.S. W. Richard Stevens 2000.4 

2 Tcp/Ip Illustrated Volume 2 The Implementation.U.S. Gary R. Wright 2000.4 

3 NETWORK MANAGEMENT-Principles and Practice.Mani  Subramanian 2003 

4 张 琳等. 网络管理与应用. 北京:人民邮电出版社, 2000.5 

5 谭思亮. 监听与隐藏-网络侦听揭密与数据保护技术. 北京:机械工业出版社,2002.8 

6 网络安全技术与应用. 北京:公安大学出版社,总第32期, 2003.12

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。