赞
踩
安全扫描技术是一类重要的网络安全技术。安全扫描技术与防火墙、入侵检测系统互相配合,能够有效地提高网络的安全性。通过对网络的扫描,网络管理员可以了解网络的安全配置和运行的应用服务,及时发现安全漏洞,客观评估网络风险等级。网络管理员可以根据扫描的结果更正网络安全漏洞和系统中的错误配置,在黑客攻击之前进行防范。如果防火墙和网络监控系统是被动的防御手段,那么安全扫描就是一种主动的防范措施,它可以有效避免黑客攻击行为,做到防范于未然。
安全扫描技术主要分为网络安全扫描技术和主机安全扫描技术两类。网络安全扫描技术主要针对系统中不合适的设置和脆弱的口令,以及其他同安全规则抵触的对象进行检查。而主机安全扫描技术则是通过执行一些脚本文件来模拟对系统进行攻击行为并记录系统的反应,从而发现其中的漏洞。
网络安全扫描技术既安全又方便,且网络扫描的技术和工具都非常成熟,在这里主要介绍网络安全扫描技术。
网络安全扫描技术是一种基于Internet远程检测目标网络或本地主机安全性的技术。通过网络安全扫描,系统管理员能发现所维护的Web服务器的各种TCP/IP端口的分配、开放的服务、Web服务软件版本和这此服务及软件呈现在Internet上的安全漏洞。网络安全扫描技术通过采用积极的、非破坏性的办法来检验系统是否有可能被攻击而崩溃。它利用了一系列的脚本模拟对系统进行攻击,并对结果进行分析。这种技术通常被用来进行模拟攻击实验和安全审计。
一次完整的网络安全扫描分为以下3个阶段:
网络安全扫描技术包括Ping扫射(Ping Sweep)、操作系统探测(Operating System Identification)、如何探测访问控制规则(Firewalking)、端口扫描(Port Scan)以及漏洞扫描(Vulnerability Scan)等。这此技术在网络安全扫描的3个阶段中各有体现。Ping扫射用于第 1 阶段,可以帮助我们识别系统是否处于活动状态;操作系统探测、如何探测访问控制规则和端口扫描用于第 2 阶段,其中操作系统探测就是对目标主机运行的操作系统进行识别,如何探测访问控制规则用于获取被防火墙保护的远端网络的资料,而端口扫描通过与目标系统的TCP/IP端口连接来查看该系统处于监听或运行状态的服务。那第 3 阶段则采用的漏洞扫描通常是在端口扫描的基础上,对得到的信息进行相关处理,进而检测出目标系统存在的安全漏洞。
端口扫描技术和漏洞扫描技术是网络安全扫描技术中的两种核心技术,并且广泛运用于当前较成熟的网络扫描器中,如Nmap和Nessus。
对于位于网络中的计算机系统来说,一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描,我们能得到许多有用的信息,从而发现系统的安全漏洞。通过端口扫描可以使用户了解系统目前向外网提供了哪些服务,从而为用户管理网络提供了参考信息。
从技术原理上说,端口扫描向目标主机的TCP/UDP服务端口发送探测数据包,并记录主机的响应。通过分析响应来判断服务端口是否打开或关闭,就可以得知端口提供的服务或信息。端口扫描也可以通过捕获本地主机或服务器的流入/流出IP数据包来来监视本地主机的运行情况,不仅能对接收到的数据进行分析,而且能够帮助用户发现目标主机的某些内在的弱点,而不会提供进入一个系统的详细步骤。一般说来,端口扫描的目的通常是如下一项或多项:
端口扫描主要有经典的TCP扫描器(全连接) 以及 SYN(半连接)的扫描器 。此外,还有秘密扫描等。TCP扫描方式是通过与被扫描主机建立标准的TCP连接,因此这种方式最准确,但容易被目标主机察觉、记录;SYN扫描方式是通过与目标主机建立半打开连接,这样就不容易被目标主机记录,但扫描结果会出现漏报,而且在网络状况不好的情况下这种漏报是严重的。
(1) TCP全连接扫描
全连接扫描是TCP端口扫描的基础,现有的全连接扫描包括TCP connect()扫描和TCP反向ident扫描等。
TCP connect()扫描的实现原理:扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接。连接由系统调用connect开始。如果端口开放,则连接将建立成功,否则返回-1,便表示端口关闭。如果建立连接成功,则响应扫描主机的SYN/ACK连接请求,该响应表明目标端口处于监听(打开)的状态。如果目标端口处于关闭状态,则目标主机会向扫描主机发送RST的响应。
反向ident扫描协议允许看到通过TCP连接的任何进程的拥有者的用户名,即使这个连接不是由这个进程开始的。比如,连接到HTTP端口,然后用identd来发现服务器是否正在以root权限运行。这种方法的缺点是只能在和目标端口建立了一个完整的TCP连接后才能看到。
(2) TCP半连接(SYN)扫描
若端口扫描没有完成一个完整的TCP连接,在扫描主机和目标主机的一个指定端口建立连接的时候只完成了前两次握手,在第三次握手时,扫描主机中断了本次连接,使连接没有完全建立起来,这样的端口扫描称为半连接扫描,也称为间接扫描。现有的半连接扫描有TCP SYN扫描和IP ID头dumb扫描等。
TCP SYN扫描的优点在于,即使日志中对扫描有所记录,但是尝试进行连接的记录也要比全连接扫描少得多。其缺点是在大部分操作系统下,发送主机需要构造适用于这种扫描的IP包,在通常情况下,构造SYN数据包需要超级用户或者授权用户访问专门的系统调用。
(3) UCP扫描
在UDP扫描中不使用工具来设置特定的状态标志。如果源UDP包的响应,即ICMP端口不可达消息,则说明端口已经关闭。UDP扫描的过程比较长,且速度比较慢。
(4) 标志获取扫描
标志获取扫描是指连接到系统的特定端口,检查和监听该端口的应用软件的标志的过程。它可以利用TCP端口连接来获得特定系统上运行的软件和程序版本信息。在实际的应对过程中,系统管理员可能会更改或者删除相关的标志,从而隐藏被监听的应用程序。
(5) 包分片
许多端口扫描器都支持包分片功能。这个功能有助于包穿透包过滤设备并逃避入侵检测系统的监测。包分片技术将TCP或者UDP包头分成多个包,增加访问控制设备检测端口扫描信息的难度。当前大多数防火墙和IDS实现都能在评估原始IP包前先对其进行重组,这可以阻挡包分片的企图,只有一些旧的防火墙和IDS设备缺乏这种功能。
(6) 欺骗扫描
Nmap和其他一些端口扫描工具都有“欺骗”功能,能在直接扫描的同时进行一个或者多个欺骗性的扫描。由于这种欺骗性通常掩盖了真实的源地址,并与真实的扫描同时进行,因此目标系统追踪扫描来源的难度大大增加。
(7) 标识扫描
标识扫描用来识别与特定TCP连接绑定的用户账户,它可以通过与113号TCP端口进行通信来完成,该端口会返回该连接所有者的身份信息。这种扫描仅仅对于运行ident服务的系统有效。它也可以用于识别使用特权账号(root)的服务。
(8) FTP反弹扫描
FTP反弹扫描利用FTP服务器进行欺骗扫描,它利用的是FTP协议对代理FTP连接的支持这一特性。利用FTP服务器作为反弹“代理”,黑客能隐藏源扫描器的原始地址。
(9) 源端口扫描
端口扫描工具中的源端口扫描允许扫描设置静态的TCP或者UDP源扫描端口,以避开包过滤访问控制设备。用于扫描的源端口通常与常用服务的端口相关联(如HTTP、DNS、SMTP和FTP等),这些端口经常处于访问控制设备的许可范围之内。
(10) 主机扫描
主机扫描的目的是确定在目标网络上的主机是否可达。这是信息收集的初级阶段,其效果直接影响到后续的扫描。它主要包括以下几类:
(11) 操作系统“指纹”扫描
根据各个操作系统在TCP/IP协议栈实现上的不同特点,采用黑盒测试方法,通过研究其对各种探测的响应形成识别指纹(footprint),进而识别目标主机运行的操作系统。根据采集指纹信息的方式,它又可以分为被动扫描和主动扫描两种方式。
-1- 被动扫描
通过抓包程序(如TCPDUMP、Sniffer和Wireshark等)收集数据包,再对数据包的不同特征(TCP Window Size、IP TTL、IP TOS和DF位等参数)进行分析来识别操作系统。被动扫描基本不具备攻击特征,具有很好的隐蔽性,但其实现依赖扫描主机所处的网络拓扑结构。它和主动探测相比较,具有速度慢、可靠性不高等缺点。
-2- 主动扫描
主动扫描采用向目标系统发送构造的特殊包,并监控其应答的方式来识别操作系统类型。它具有速度快、可靠性高等优点,但同样依赖于目标系统网络拓扑结构和过滤规则。
主动扫描主要包括如下几种技术:
【链接】更详细的Nmap讲解
Nmap是一个网络探测和安全扫描程序,系统管理者可以使用这个软件扫描大型的网络,获取主机正在运行以及提供什么服务等信息。Nmap支持很多扫描技术,例如,UDP、TCP connect()、TCP SYN(半开扫描)、FTP代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)和Null扫描。Nmap还提供了一些高级的特征,例如,通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行Ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口影射),碎片扫描,以及灵活的目标和端口设定。
为了提高Nmap在non-root状态下的性能,软件的设计者付出了很多的努力。但是,一些内核界面(如raw socket)需要在root状态下使用。所以应该尽可能在root状态下使用Nmap。
Nmap运行通常会得到被扫描主机端口的列表。Nmap总会给出Well Known端口的服务名、端口号、状态和协议等信息。每个端口的状态有open、filtered和unfiltered。
根据使用的功能选项,Nmap也可以报告远程主机的一些特征,如使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址,以及其他一些信息。
漏洞扫描就是对计算机系统或者其他网络设备进行安全相关的检测,以找出安全隐患和可被黑客利用的漏洞。显然,漏洞扫描软件是把双刃剑,黑客利用它入侵系统,而系统管理员掌握它以后又可以有效地防范黑客入侵。因此,漏洞扫描是保证系统和网络安全必不可少的手段,用户必须仔细研究并加以利用。
漏洞扫描通常采用两种策略,第一种是被动式策略,第二种是主动式策略。所谓被动式策略就是基于主机之上,对系统中不合适的设置、脆弱的口令以及其他同安全规则抵触的对象进行检查。而主动式策略是基于网络的,它通过执行一些脚本文件模拟对系统进行攻击的行为并记录系统的反应,从而发现其中的漏洞。利用被动式策略进行扫描,我们称之为系统安全扫描。而利用主动式策略进行扫描,我们称之为网络安全扫描。
这里进一步介绍漏洞扫描的4种检测技术。其具体介绍如下:
选择基于网络的漏洞扫描器,其优点:
选择基于主机的漏洞扫描器,其优点:
当然,基于主机的漏洞扫描工具也存在不足之处:
网络漏洞扫描器的扫描原理和工作原理:通过远程检测目标主机TCP/IP不同端口的服务,记录目标主机给予的回答。通过这种方法可以搜集到很多目标主机的各种信息(例如,是否能用匿名登录,是否有可写的FTP目录,是否能用Telnet,httpd是否是用root在运行)。在获得目标主机TCP/IP端口和其对应的网络访问服务的相关信息后,与网络漏洞扫描系统提供的漏洞库进行匹配,如果满足匹配条件,则视为漏洞存在。此外,通过模拟黑客的进攻手法,对目标主机的系统进行攻击性的安全漏洞扫描,如测试弱势口令等,这也是扫描模块的实现方法之一。如果模拟攻击成功则视为漏洞存在。在匹配原理上,该网络漏洞扫描器采用的是基于规则的匹配技术,即根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员关于网络系统安全配置的实际经验,形成一套标准的系统漏洞库,然后在此基础之上构成相应的匹配规则,由程序自动进行系统漏洞扫描的分析工作。所谓基于规则就是基于一套事先定义的规则的匹配系统。同时应当说明的是,基于规则的匹配系统也有局限性,因为作为这类系统的基础的推理规则一般都是根据已知的安全漏洞进行安排和策划的,而对网络系统的很多威胁是来自未知的安全漏洞,这一点和PC杀毒很相似。
基于网络的漏洞扫描器一般由以下几个方面组成:
网络漏洞扫描器结构:
这种漏洞扫描器基于浏览器/服务器(B/S)结构。这种网络扫描器的工作原理是,当用户通过控制平台发出了扫描命令之后,控制平台立即向扫描模块发出相应的扫描请求,扫描模块在接到请求之后启动相应的子功能模块,对被扫描主机进行扫描。通过对从被扫描主机返回的信息进行分析、判断,扫描模块将扫描结果返回给控制平台,再由控制平台最终呈现用户。
另一种结构的扫描器采用插件程序结构,即客户端/服务器模式(C/S)。插件是由脚本语言编写的子程序,扫描程序可以通过调用它来执行漏洞扫描,检测出系统中存在的一个或多个漏洞。添加新的插件就可以使漏洞扫描软件增加新的功能,从而可以扫描 出更多的漏洞。插件编写规范化后,用户可以用Perl、C语言或自行设计的脚本语言编写的插件来扩充漏洞扫描软件的功能。这种技术使漏洞扫描软件的升级和维护变得相对简单,专用脚本语言的使用也简化了编写新插件的编程工作,使漏洞扫描软件具有强的扩展性。我们可以针对某一个具体漏洞来编写对应的外部测试脚本。通过调用服务检测插件,检测目标主机TCP/IP不同端口的服务,并将结果保存在信息库中,然后调用相应的插件程序,向远程主机发送构造好的数据,也将检测结果保存于信息库,以提供给其他的脚本运行所需的必要信息,这样可以提高检测效率。例如,在针对某FTP服务的攻击中,可以首先查看服务检测插件的返回结果,只有在确认目标主机服务器开启FTP服务时,对应的针对某FTP服务的攻击脚本才能被执行。采用这种插件结构的扫描器可以让用户构造自己的攻击测试脚本,而不用了解太多扫描器的原理。采用这种结构的扫描器具有很强的生命力,如著名的Nessus就是采用这种结构的。
网络漏洞扫描器结构:
【链接】新版Nessus安装使用向导
Nessus是一个功能强大而又易于使用的远程安全扫描器,它不仅免费,而且更新较快。安全扫描器的功能是对指定网络进行安全检查,找出该网络是否存在导致对手发起攻击的安全漏洞。该系统被设计为C/S模式,服务器端负责进行安全检查,客户端用来配置管理服务器端。服务端还采用了plug-ins的体系,允许用户加入执行特定功能的插件,这插件可以进行更快速和更复杂的安全检查。在Nessus中还采用了一个共享的信息接口,称为知识库,其中保存了前面进行检查的结果。检查的结果可以使用HTML、纯文本、LaTeX等格式来保存。
Nessus有以下的几点优点:
Nessus的安全检查完全由plug-ins的插件完成。除此之外,Nessus还为用户提供了描述攻击类型的脚本语言,可以用来进行附加的安全测试。这种语言称为Nessus攻击脚本语言(NSSL),用来完成插件的编写。
在客户端,用户可以指定运行Nessus服务的机器、使用的端口扫描器及测试的内容和IP地址范围。Nessus本身是工作在多线程基础上的,所以用户还可以设置系统同时工作的线程数。安全检测完成后,服务端将检测结果返回到客户端,然后由客户端生成直观的报告。在这个过程中,由于服务器向客户端传送的内容是系统的安全弱点,为了防止通信内容受到监听,其传输过程还可以设置加密。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。