任务概述
网络安全扫描技术是一种有效的主动防御技术,目前已经成为网络安全研究中的热点之一,这种研究具有重要的现实意义。
任务目标
●能够掌握TCP协议
●能够了解端口扫描及其分类
●能够了解常用端口扫描工具
学习内容
一、网络端口扫描技术
在Internet中,端口扫描是入侵者发起攻击时采取的第一个步骤。通过扫描,攻击者能够寻找出主机系统和网络中有哪些端口是开放的,根据开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞。扫描技术基于TCP/IP协议,对各种网络服务,无论是主机或者防火墙、路由器的服务都适用。目前,扫描的技术已经非常成熟,已经有大量的商业、非商业的扫描器在各组织里使用。
TCP协议和UDP协议是TCP/IP协议传输层中两个用于控制数据传输的协议。TCP和UDP用端口号来唯一地标识一种网络应用。TCP和UDP端口号用16位二进制数表示,理论上,每一个协议可以拥有65535个端口。因此,端口扫描无论是对网络管理员还是对网络攻击者来说,都是一个必不可少的利器。TCP/IP协议上的端口有TCP端口和UDP端口两类。由于TCP协议是面向连接的协议,针对TCP的扫描方法比较多,扫描方法从最初的一般探测发展到后来的躲避IDS和防火墙的高级扫描技术。在TCP/UDP协议中,IP地址和端口被称作套接字(Socket),它代表一个TCP连接的一个连接端,其标志形式是(IP地址,主机端口号)。为了获得TCP服务,必须在发送方的一个连接端上和接收方的一个连接端上建立连接。每条TCP的传输连接用(套接字1,套接字2)来表示,是点到点的全双工通道。TCP/UDP连接唯一地使用每个信息中的套接字的内容来进行确认,见表6-1。
表6-1 TCP协议套接字内容
1.TCP报头
TCP协议在进行数据传输时,其传输的数据包称为段(Segment),段包含有报头和数据两部分,其中在报头中包含了TCP的控制信息,数据部分包含传输的实际内容。
在TCP报头中,除了包含有源主机和目的主机的IP地址和端口号外,还包含了6个标志位。
2.TCP连接
TCP是一个面向连接的可靠传输协议。所谓面向连接,指的是通信双方在利用TCP传送数据前必须先建立TCP连接。TCP给每个发送的数据包分配一个标志数据包顺序的序号,接收端接收到数据后,对数据包进行确认并发送应答,这样TCP协议就保证了数据的可靠传输。由于在一个TCP会话中能够进行全双工通信,因此在建立连接时,必须要为每一个数据流分配ISN(初始序号)。
TCP利用三次握手机制来建立连接,实现步骤如下。
建立连接:初始化序列字段和确认字段,通讯双方就端口使用达成一致。
第一次握手:请求端(客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号ISN。
第二次握手:服务器发送包含自己初始序号(ISN)的SYN段对客户做出应答,并对客户的SYN报文进行确认。此时服务器ACK=客户ISN+1。
第三次握手:客户对服务器的SYN报文段进行确认。此时客户ACK=服务器ISN+1。在双方进行通讯时,发送第一个SYN的一端执行主动打开,而接收这个SYN并发回下一个SYN的另一端执行被动打开。
二、端口扫描及其分类
1.端口扫描
扫描器是一种通过扫描主机端口,进而检测远程或本地主机安全性弱点的程序。通过使用扫描器,攻击者可以不留痕迹地发现主机系统中开放的各种TCP/UDP端口、它们提供的服务及它们的软件版本等,这些信息都为攻击者的侵入提供了手段。
扫描器的工作原理其实十分简单,它只是简单地利用系统提供的连接功能,与每一个感兴趣的目标主机进行各种端口连接(实际中,往往是针对某个IP网段进行),只要目标主机的端口处于监听状态,那么就会对这个连接做出应答。通过这种方法,攻击者就可以搜集到许多关于目标主机的各种有用的信息(如:是否能用匿名登录,是否有可写的FTP目录,是否能用Telnet等)。
2.端口扫描分类
常用的端口扫描技术主要有下面几种。
(1)TCP Connect()扫描:也称为全TCP连接扫描,是长期以来TCP端口扫描的基础。这种技术主要使用三次握手机制来与目标主机的指定端口建立正规的连接。TCP Con-nect()扫描使用操作系统提供的connect()系统调用函数来进行扫描。对于每一个监听端口,connect()调用都会获得一个成功的返回值,表示端口可访问。由于在通常情况下,这种操作不需要什么特权,所以几乎所有的用户都可以通过connect()调用来实现这个技术。这种扫描方法很容易被检测出来,因为在系统的日志文件中会有大量密集的连接和错误记录。通过使用一些工具(如TCP Wrapper),可以对连接请求进行控制,以此来阻止来自不明主机的全连接扫描。
(2)TCP SYN扫描:这种技术通常被认为是“半开放”扫描,这是因为扫描程序不必打开一个完全的TCP连接。扫描主机向目标主机的选择端口发送SYN数据段,如果应答是RST,那么说明端口是关闭的;如果应答中包含SYN和ACK,说明目标端口处于监听状态。如果收到一个SYN+ACK,则扫描程序必须再发送一个RST来关闭这个连接过程。SYN扫描的优点在于即使日志中对扫描有所记录,尝试进行连接的记录也要比全扫描少得多。缺点是在大部分操作系统下,扫描主机需要构造适用于这种扫描的SYN包,通常情况下,构造SYN数据包需要超级用户或者授权用户访问专门的系统调用。
(3)TCP FIN扫描:在实际应用中,一些防火墙和包过滤软件能够对发送到指定端口的SYN数据包进行监视,SYN扫描可能无法通过这些设备,另外,有的程序还能检测到这些扫描。而使用FIN扫描,FIN数据包可能会没有任何麻烦地通过各种包过滤器。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包,而打开的端口必须忽略有问题的包。由于这种技术不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,它比SYN扫描隐蔽得多,所以它也被称为秘密扫描。
(4)TCP Ident扫描:也叫认证扫描。Ident指的是鉴定协议(Identification Protocol),该协议建立在TCP申请的连接上,服务器在TCP 113端口监测TCP连接,一旦连接建立,服务器将发送用户标志符等信息来作为回答,然后服务器就可以断开连接或者读取并回答更多的询问。
(5)代理扫描:文件传输协议(FTP)有一个非常有意思的选项,它支持代理FTP连接。这个选项最初的目的是允许一个客户端同时跟两个FIP服务器建立连接,然后在服务器之间直接传输数据,也就是说使用者可以要求FTP服务器为自己发送Internet上任何地方的文件。攻击者正是利用这个缺陷,让这个协议能够用来投递虚拟的不可达邮件和新闻、进入各种站点的服务器、填满硬盘、跳过防火墙,以及进行其他的骚扰活动,而且这些活动很难被追踪。
(6)ping扫描:使用ping扫描的目的很简单,就是只想知道网络上哪些主机正在运行。
(7)UDP扫描:UDP协议是一个不可靠的无链接的协议,它不像TCP协议那样是面对面连接的。因此,当人们向目标主机的UDP端口发送数据,并不能收到一个开放端口的确认信息,或是关闭端口的错误信息,这和TCP的端口扫描完全不一样。但是,在大多数情况下,当向一个未开放的UDP端口发送数据时,其主机会返回一个ICMP不可到达的错误回应,因此大多数UDP端口扫描的方法就是向各个被扫描的UDP端口发送零字节的UDP数据包,如果收到一个ICMP不可到达的回应,那么则认为这个端口是关闭的,对于没有回应的端口则认为是开放的。但是如果目标主机安装有防火墙或其他可以过滤数据包的软硬件,那么发出UDP数据包后,将可能得不到任何回应,将会见到所有的被扫描端口都是开放的。
三、常用端口扫描工貝
1.Nmap
(1)Nmap简介:Nmap是一款开放源代码的网络探测和安全审核的工具。它的设计目标是快速地扫描大型网络。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,这些主机提供什么服务(应用程序名和版本),这些服务运行在什么操作系统(包括版本信息)上,它们使用什么类型的报文过滤器/防火墙,以及其他功能。虽然Nmap通常用于安全审核,但是许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息,管理服务升级计划,以及监视主机和服务的运行。
(2)使用Nmap:Nmap是一个命令行运行的程序,虽然它也提供一个图形界面运行程序,但是大多数的使用者还是乐意在命令行下运行它。
打开Windows命令提示符窗口,不带任何命令行参数运行Nmap,Nmap将显示出所有命令语法,如图6-1所示。
图6-1 不带任何命令行参数运行Nmap
(3)注意事项:使用Nmap进行网络扫描,需要注意下面几点。
①避免误解。不要随意选择测试Nmap的扫描目标。许多单位把端口扫描视为恶意行为,所以测试Nmap最好在内部网络进行。如有必要,应该告诉同事你正在试验端口扫描,因为扫描可能引发IDS警报以及其他网络问题。
②关闭不必要的服务。根据Nmap提供的报告(同时考虑网络的安全要求),关闭不必要的服务,或者调整路由器的访问控制规则(ACL),禁用网络开放给外界的某些端口。
③建立安全基准。在Nmap的帮助下加固网络、搞清楚哪些系统和服务可能受到攻击之后,下一步是从这些已知的系统和服务出发建立一个安全基准,以后如果要启用新的服务或者服务器,就可以方便地根据这个安全基准执行。
2.X-SCAN
X-SCAN是一款简单实用的端口扫描工具软件,该软件采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,支持插件功能。扫描内容包括远程服务类型、操作系统类型及版本、各种弱口令漏洞、后门、应用服务漏洞、网络设备漏洞和拒绝服务漏洞等。
(1)设置扫描范围:使用X-SCAN进行扫描前,需要对扫描的IP地址范围进行设置。如不设置,X-SCAN将对本机(local host)进行扫描。在X-SCAN主窗口中选择菜单“设置”的“扫描参数”命令,打开设置窗口,选择“检测范围”,在“指定IP范围”文本框中输入欲扫描的IP地址范围完成参数设置,如图6-2所示。单击“示例”按钮可以查看IP地址范围的输入格式。
图6-2 检测范围设置
(2)设置扫描模块:在“扫描参数”窗口中选择“全局设置”的“扫描模块”,可以选择本次扫描所进行的操作,包括对开放服务的扫描,对各种弱密码如Windows NT/2000/XP登录密码、FIP密码、SQL密码等的破解,如图6-3所示。
图6-3 扫描模块设置
(3)开始扫描:根据需要,完成“并发扫描”、“扫描报告”、“其他设置”及“插件设置”各项的设置后,单击“确定”按钮保存所做的设置操作,选择菜单“文件”的“开始扫描”命令即可开始进行扫描。这里是对“192.168.1.0”这个标准C类地址网段进行扫描,在扫描过程中,X-SCAN将会把实时的扫描结果显示在主窗口中,如图6-4所示。
图6-4 X-SCAN的扫描过程
在整个扫描过程中,可以随时选择菜单“文件”的“终止扫描”或“暂停扫描”命令来停止扫描以查看报告。当X-SCAN完成对指定IP地址范围的扫描后,会将扫描结果以HTML文档方式在浏览器中显示出来,如图6-5所示。
图6-5 X-SCAN的扫描报告
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。