网络安全扫描与防御技术
网站建设 2022-06-21 09:30www.dzhlxh.cn网站建设
1 扫描技术概述
什么是扫描器
扫描器是一种自动检测远程或本地主机安全性弱点的程序。它集成了常用的各种扫描技术。它的功能主要有:扫描目标主机识别其工作状态(开/关机)、识别目标主机端口的状态(监听/关闭)、识别目标主机操作系统的类型和版本、识别目标主机服务程序的类型和版本、分析目标主机、目标网络的漏洞(脆弱点)、生成扫描结果报告。
扫描的重要性
扫描的重要性在于把繁琐的安全检测,通过程序来自动完成,这不仅减轻了网络管理员的工作,而且也缩短了检测时间。同时,也可以认为扫描器是一种网络安全性评估软件,利用扫描器可以快速、深入地对目标网络进行安全评估。
扫描与网络漏洞的关系
网络漏洞是系统软、硬件存在安全方面的脆弱性,安全漏洞的存在导致非法用户入侵系统或未经授权获得访问权限,造成信息篡改、拒绝服务或系统崩溃等问题。网络扫描可以对计算机网络系统或网络设备进行安全相关的检测,以找出安全隐患和可能被黑客利用的漏洞。
扫描三部曲
第一阶段:发现目标主机或网络;第二阶段:发现目标后进一步搜集目标信息,包括操作系统类型、运行的服务以及服务软件的版本等。如果目标是一个网络,还可以进一步发现该网络的拓扑结构、路由设备以及各主机的信息;第三阶段:根据收集到的信息判断或者进一步测试系统是否存在安全漏洞。
2 常见的扫描技术
在介绍具体的扫描技术前,先补充一些计算机网络的基本知识。
首先我们要来认识一下TCP/IP协议。在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。那么如何让他们之间互相交流呢?TCP/IP应运而生。
TCP/IP是一个协议栈,里面包括IP协议,IMCP协议,TCP协议,以及我们更加熟悉的HTTP、FTP协议等等。其中IP是网络层协议,负责计算机之间的通信(点对点),而TCP是传输层协议,负责进程之间的通信(端对端)。在进程间通信时进程发出TCP协议报文,在IP层拆成几个IP报文,传送到目的地再重新组合成TCP报文。TCP报文的格式如下图所示。
ACK置1代表报文有效,SYN代表建立连接(如果SYN=1,ACK=0表示连接请求;若SYN=1, ACK=1表示同意连接),FIN表示发送结束,释放连接。
正常的TCP连接是3次握手:
TCP断开是4次挥手:
至于为什么是这些次数不多赘述,主要原因是防止因为报文丢失而导致无法正常连接或关闭。长时间处于等待状态耗费资源。
IP协议包括正常的IP数据报协议和ICMP协议(全称是差错与控制报文协议),当出现问题时,ICMP报文可以提供反馈信息用于报告错误。当然了,ICMP报文自己也不是可靠传输的。ICMP报文其实很常见,比如大家常用的ping命令,返回的就是ICMP报文。
下面开始正题,介绍一下主要的几种扫描技术。先来说主机扫描技术。
主机扫描的目的是确定在目标网络上的主机是否可达。这是信息收集的初级阶段,其效果直接影响到后续的扫描。传统的主机扫描技术有:ICMP Echo扫描、ICMP Sweep扫描、Broadcast ICMP扫描。
ICMP Echo扫描
利用Ping的实现机制,在判断在一个网络上主机是否开机时非常有用。向目标主机发送ICMP Echo Request 数据包,等待回复的ICMP Echo Reply 数据包。如果能收到,则表明目标系统可达,否则表明目标系统已经不可达或发送的包被对方的设备过滤掉。
ICMP Sweep扫描
使用ICMP Echo轮询多个主机称为ICMP Sweep扫描。对于小的或者中等网络使用这种方法来探测主机是一种比较可接受的行为,但对于一些大型网络这种方法就显得十分缓慢,原因是Ping在处理下一个请求之前将会等待正在探测主机的回应。扫描工具Nmap实现了ICMP sweep的功能。
Broadcast ICMP扫描
其实现原理是将ICMP请求包的目标地址设为广播地址或网络地址,则可以探测广播域或整个网络范围内的主机。然而这种扫描方式有一定风险,可能引起广播风暴。
防火墙和网络过滤设备常常导致传统的探测手段变得无效。为了突破这种限制,必须采用一些非常规的手段(称为高级的主机扫描技术),利用ICMP协议提供网络间传送错误信息的手段,往往可以更有效的达到目的。
接下来说端口扫描技术。TCP/IP协议提出的端口是网络通信进程与外界通讯交流的出口,可被命名和寻址,可以认为是网络通信进程的一种标识符。进程通过系统调用与某端口建立连接绑定后,便会监听这个端口,传输层传给该端口的数据都被相应进程所接收,而相应进程发给传输层的数据都从该端口输出。互联网上的通信双方不仅需要知道对方的IP地址,也需要知道通信程序的端口号。
目前IPv4协议支持16位的端口,端口号范围是0~65535。其中,0~1023号端口称为熟知端口,被提供给特定的服务使用;1024~49151号端口称为注册端口,由IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)记录和追踪;49152~65535号端口称为动态端口或专用端口,提供给专用应用程序。
许多常用的服务使用的是标准的端口,只要扫描到相应的端口,就能知道目标主机上运行着什么服务。端口扫描技术就是利用这一点向目标系统的TCP/UDP端口发送探测数据包,记录目标系统的响应,通过分析响应来查看该系统处于监听或运行状态的服务。
端口扫描技术包括全扫描、半扫描、秘密扫描、认证扫描和FTP代理扫描。
全扫描
全扫描指的是建立全TCP连接,全TCP连接是长期以来TCP端口扫描的基础。扫描主机尝试(使用三次握手)与目标主机的某个端口建立正规的连接。连接由系统调用connect()开始。对于每一个监听端口,connect()可能会获得成功,否则返回-1,表示端口不可访问。
全扫描的优点是实现简单,对操作者的权限没有严格要求(有些类型的端口扫描需要操作者具有root权限),系统中的任何用户都有权力使用这个调用。而且其扫描速度快。如果对每个目标端口以线性的方式,使用单独的connect()调用,可以通过同时打开多个套接字,从而加速扫描。 缺点是这种扫描方式不隐蔽、且在日志文件中会有大量密集的连接和错误记录、容易被防火墙发现和屏蔽。
半扫描
半扫描指的是还未建立完整的TCP连接,比如扫描主机向目标主机的选择端口发送了SYN数据段(又叫做TCP-SYN扫描)。如果应答是RST,那么,说明端口是关闭的,按照设定继续探听其他端口;如果应答中包含SYN和ACK,说明目标端口处于监听状态。
SYN扫描的优点在于即使日志中对于扫描有所记录,但是尝试进行连接的记录也要比全扫描的记录少的多。缺点是在大部分操作系统中,发送主机需要构造适用于这种扫描的IP包,通常情况下,构造SYN数据包需要超级用户或者得到授权的用户,才能访问专门的系统调用。
秘密扫描
秘密扫描又叫TCP-FIN扫描,TCP FIN扫描技术使用FIN数据包探测端口。当一个FIN数据包到达一个关闭的端口,数据包会被丢掉,且返回一个RST数据包。当一个FIN数据包到达一个打开的端口,数据包只是简单丢掉(不返回RST数据包)。由于这种技术不包含标准的TCP三次握手协议的任何部分,所以无法被记录下来,从而比SYN扫描隐蔽的多。
秘密扫描能躲避IDS、防火墙、包过滤器和日志审计,从而获取目标端口的开放或关闭的信息。 但和SYN扫描类似,秘密扫描也需要构造自己的IP包。
TCP FIN扫描通常适用于UNIX目标主机。在Windows NT环境下,该方法无效,因为不论目标端口是否打开,操作系统都发送RST。这在区分UNIX和NT时,是十分有用的。
认证扫描
根据认证协议(RFC1413),每个类UNIX操作系统都带有一个缺省的侦听113端口的认证服务器,该认证服务器的基本功能是回答类似这样的问题:“是什么用户从你的端口X初始化出来连接到我的端口Y上来了?”因而监听TCP 113端口的ident服务应该是安装在客户端的,并由该TCP连接的服务端向客户端的113号端口发起认证连接。
连接过程:当客户端向服务器发送某个连接请求后,服务器便先向客户端的TCP 113端口发起连接,询问客户端该进程的拥有者名称。服务器获取这一信息并认证成功后,记录下“某年某月某日谁连到我的机器上”,再建立服务连接进行通信。
在端口扫描中,利用这一协议,扫描程序先主动尝试与目标主机建立起一个TCP连接(如Http连接等),连接成功之后,它向目标主机的TCP 113端口建立另一连接,并通过该连接向目标主机的ident服务发送第一个TCP连接所对应的两个端口号。如果目标主机安装并运行了ident服务,那么该服务将向扫描程序返回相关联的进程的用户属性等信息。
由于在此过程中,扫描程序先以客户方身份与目标主机建立连接,后又以服务方身份对目标主机进行认证,因此这种扫描方式也被称为反向认证扫描。不过,这种方法只能在和目标端口建立了一个完整的TCP连接后才能发挥作用。
FTP代理扫描
FTP协议允许数据连接与控制连接位于不同的机器上,并支持代理FTP连接。FTP代理扫描正是利用了这个缺陷,使用支持代理的FTP服务器来扫描TCP端口。
扫描程序先在本地与一个支持代理的FTP服务器建立控制连接,然后使用PORT命令向FTP服务器声明欲扫描的目标机器的IP地址和端口号,其中IP地址为代理传输的目的地址,而端口号则为传输时所需的被动端口,并发送LIST命令。这时,FTP服务器会尝试向目标主机指定端口发起数据连接请求。
如果目标主机对应端口确实处于监听状态,FTP服务器就会向扫描程序返回成功信息,返回码为150和226。否则返回类似这样的错误信息:“425 Can’t build data connection: Connection refused”。这种方式隐藏性很好,难以跟踪,能轻而易举的绕过防火墙。不过对所有需扫描的端口都要逐一进行上述步骤,速度比较慢。
还有一种方法叫远程OS指纹识别。因为操作系统(也就是OS)识别是入侵或安全检测需要收集的重要信息,是分析漏洞和各种安全隐患的基础。只有确定了远程主机的操作系统类型、版本,才能对其安全状况作进一步的评估。因此,利用TCP/IP堆栈作为特殊的“指纹”,来确定操作系统。
由于TCP/IP协议栈技术只是在RFC文档中描述,各个公司在编写应用于自己的OS的TCP/IP协议栈的时候,对RFC文档做出了不尽相同的诠释,因而造成了各个OS在TCP/IP协议的实现上的不同。通过对不同的OS的TCP/IP协议栈存在的些微差异的鉴别来判定OS类型就叫做OS指纹识别。
最后一种方法叫漏洞扫描。漏洞扫描主要通过以下两种方法来检查目标主机是否存在漏洞:
基于漏洞库的特征匹配:通过端口扫描得知目标主机开启的端口以及端口上的网络服务后,将这些相关信息与网络漏洞扫描系统提供的漏洞库进行匹配,查看是否有满足匹配条件的漏洞存在;
基于模拟攻击:通过模拟黑客的攻击手段,编写攻击模块,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱势口令等,若模拟攻击成功,则表明目标主机系统存在安全漏洞。
基于网络系统漏洞库,漏洞扫描大体包括CGI漏洞扫描、POP3漏洞扫描、FTP漏洞扫描、SSH漏洞扫描、HTTP漏洞扫描等。这些漏洞扫描是基于漏洞库,将扫描结果与漏洞库相关数据匹配比较得到漏洞信息。同时,漏洞扫描还包括没有相应漏洞库的各种扫描,比如Unicode遍历目录漏洞探测、FTP弱势密码探测、OPENRelay邮件转发漏洞探测等,这些扫描通过使用插件(功能模块技术)进行模拟攻击,测试出目标主机的漏洞信息。
基于网络系统漏洞库的漏洞扫描的关键部分就是它所使用的漏洞库。通过采用基于规则的匹配技术,即根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员对网络系统安全配置的实际经验,可以形成一套标准的网络系统漏洞库,然后再在此基础之上构成相应的匹配规则,由扫描程序自动的进行漏洞扫描的工作。
这样,漏洞库信息的完整性和有效性决定了漏洞扫描系统的性能,漏洞库的修订和更新的性能也会影响漏洞扫描系统运行的时间。因此,漏洞库的编制不仅要对每个存在安全隐患的网络服务建立对应的漏洞库文件,而且应当能满足前面所提出完整性和有效性(新)的性能要求。
基于模拟攻击的漏洞扫描将模拟攻击的模块做成插件的形式,插件是由脚本语言编写的子程序,扫描程序可以通过调用它来执行漏洞扫描,检测出系统中存在的一个或多个漏洞。添加新的插件就可以使漏洞扫描软件增加新的功能,扫描出更多的漏洞。插件编写规范化后,甚至用户自己都可以用perl、c或自行设计的脚本语言编写的插件来扩充漏洞扫描软件的功能。
n这种技术使漏洞扫描软件的升级维护变得相对简单,而专用脚本语言的使用也简化了编写新插件的编程工作,使漏洞扫描软件具有强的扩展性。
3 扫描工具赏析
以Nessus为例,介绍一下该扫描工具。Nessus是一个功能强大而又简单易用的网络安全扫描工具,对网络管理员来说,它是不可多得的审核堵漏工具。2000年、2003年、2006年,Nmap官方在Nmap用户中间分别发起“Top 50 Security Tools”、“Top 75 Security Tools”、“Top 100 Security Tools”的评选活动,Nessus“战胜”众多的商业化漏洞扫描工具而三次夺魁。
Nessus采用基于插件的技术。工作原理是通过插件模拟黑客的攻击,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱势口令等,若模拟攻击成功,则表明目标主机系统存在安全漏洞。Nessus可以完成多项安全工作,如扫描选定范围内的主机的端口开放情况、提供的服务、是否存在安全漏洞等等。
Nessus有很多优点:首先它是免费的,比起商业的安全扫描工具如ISS具有价格优势。其次,它采用了基于多种安全漏洞的扫描,避免了扫描不完整的情况;基于插件体制,扩展性强,支持及时的在线升级,可以扫描自定义漏洞或者最新安全漏洞;采用客户端/服务端机制,容易使用、功能强大。
Nessus所采用的扫描技术包括了上文提到的:主机扫描、端口扫描、远程主机OS识别和漏洞扫描。Nessus自带的上万个扫描插件是其最引人注目的功能。Nessus工作的过程如下。
4 扫描的防御
反扫描技术
反扫描技术是针对扫描技术提出的。 扫描技术一般可以分为主动扫描和被动扫描两种,它们的共同点在于在其执行的过程中都需要与受害主机互通正常或非正常的数据报文。
其中主动扫描是主动向受害主机发送各种探测数据包,根据其回应判断扫描的结果。因此防范主动扫描可以从以下几个方面入手:1 减少开放端口,做好系统防护;2 实时监测扫描,及时做出告警;3 伪装知名端口,进行信息欺骗。
被动扫描由其性质决定,它与受害主机建立的通常是正常连接,发送的数据包也属于正常范畴,而且被动扫描不会向受害主机发送大规模的探测数据,因此其防范方法到目前为止只能采用信息欺骗(如返回自定义的banner信息或伪装知名端口)这一种方法。
端口扫描监测工具
对网络管理员来说,尽早的发现黑客的扫描活动,也许就能及时采取措施,避免黑客进一步实施真正的攻击和破坏。
监测端口扫描的工具有好多种,最简单的一种是在某个不常用的端口进行监听,如果发现有对该端口的外来连接请求,就认为有端口扫描。一般这些工具都会对连接请求的来源进行反探测,同时弹出提示窗口。另一类工具,是在混杂模式下抓包并进一步分析判断。它本身并不开启任何端口,十分类似于IDS系统中主要负责行使端口扫描监测职责的模块。
防火墙技术
防火墙技术是一种允许内部网接入外部网络,但同时又能识别和抵抗非授权访问的网络技术,是网络控制技术中的一种。
防火墙的目的是要在内部、外部两个网络之间建立一个安全控制点,控制所有从因特网流入或流向因特网的信息都经过防火墙,并检查这些信息,通过允许、拒绝或重新定向经过防火墙的数据流,实现对进、出内部网络的服务和访问的审计和控制。
审计技术
审计技术是使用信息系统自动记录下的网络中机器的使用时间、敏感操作和违纪操作等,为系统进行事故原因查询、事故发生后的实时处理提供详细可靠的依据或支持。审计技术可以记录网络连接的请求、返回等信息,从中识别出扫描行为。
以Web服务器为例,它的日志记录能帮助我们跟踪客户端IP地址,确定其地理位置信息,检测访问者请求的路径和文件,了解访问状态,检查访问者使用的浏览器版本和操作系统类型等。
其他反扫描技术,比如修改Banner
许多网络服务器通常在用户正常连接或登录时,提供给用户一些无关紧要的提示信息,其中往往包括操作系统类型、用户所连接服务器的软件版本、几句无关痛痒的欢迎信息等,这些信息可称之为旗标信息(Banner)。
殊不知,通过这些Banner黑客们可以很方便的收集目标系统的操作系统类型以及网络服务软件漏洞信息,现在很多扫描器如Nmap都具备了自动获取Banner的功能。可以对Banner进行修改,隐藏主机信息,减小被入侵的风险。
修改Banner的方法:修改网络服务的配置文件,许多服务都在其配置文件中提供了对显示版本号的配置选项;修改服务软件的源代码,然后重新编译;直接修改软件的可执行文件,这种方法往往具有一定的“危险性”,不提倡使用。当然,也可以利用一些专业的Banner修改工具。
5 小结
扫描器能够自动的扫描检测本地和远程系统的弱点,为使用者提供帮助。系统或网络管理员可以利用它来检测其所管理的网络和主机中存在哪些漏洞,以便及时打上补丁,增加防护措施,或用来对系统进行安全等级评估。黑客可以利用它来获取主机信息,寻找具备某些弱点的主机,为进一步攻击做准备。因此,扫描器是一把双刃剑,用户需要尽量减少开放的端口,关闭不必的服务,合理地配置防火墙,以防范扫描行为。