《第4章端口与系统漏洞检测.ppt》由会员分享,可在线阅读,更多相关《第4章端口与系统漏洞检测.ppt(69页珍藏版)》请在优知文库上搜索。
1、 系统安全检测是系统管理员必须要做的一项工作,当一个系统架设好后,系统的管理和维护就是系统管理员的主要任务了。为了能更好地防御黑客攻击,系统管理员必须要学会像 黑客攻击那样对系统进行安全检测的方法,然后根据得到的检测结果进行相关的安全设置。因此,系统管理员必须要熟练掌握常用的系统检测工具,本章介绍了几款不错的安全检测工具,包括端口扫描、端口扫描、插件扫描和系统漏洞扫描插件扫描和系统漏洞扫描。绝大多数应用程序都运行在TCP或UDP协议之上,这些协议是众多应用程序使用的传输机制。端口扫描端口扫描就是通过扫描主机确定哪一些TCP和UDP端口可以访问的过程。TCP数据包的6个标志位(代表了不同的数据包
2、)具体如下:URG:紧急数据包 ACK:确认(应答数据包)PSH:将数据强制压入缓冲区 RST:连接复位(断开连接)SYN:连接请求 FIN:TCP连接结束 TCP是可靠的面向连接的协议,传输数据报之前,必须先采用“三次握手”的方式建立传输连接。TCP协议同样采用客户机/服务器模式。客户机:主动发起建立连接请求的主机。服务器:等待并接受连接建立请求的主机。图4-1 TCP三次握手过程常见的端口扫描类型有以下几种:TCP Connect()扫描 SYN扫描 NULL扫描 FIN扫描 ACK扫描 Xmas-Tree扫描 Dumb扫描 1.TCP Connect()扫描这种扫描试图与每一个TCP端口
3、进行“三次握手”通信,如果能够成功建立连接,则证明端口开放,否则为关闭。优点:准确性高缺点:最容易被防火墙或入侵检测系统检测到,而且在目标主机的日志中会记录大批连接请求以及错误信息。2.SYN扫描这种扫描隐蔽一些,仅仅发送初始的SYN数据包给目标主机,如果端口处于开放状态,那么目标主机将响应SYN-ACK数据包;如果端口处于关闭状态,则目标主机响应RST数据包。优点:能躲开某些防火墙的检测缺点:许多IDS能够检测到SYN扫描3.NULL扫描(反向扫描)这种扫描将一个没有设置任何标志位的数据包发送给TCP端口。正常的TCP通信中,至少要设置标志位。根据RFC 793的要求,端口关闭的状态下,若收
4、到没设置标志位的数据字段,则接收主机应该丢弃这个分段,并返回一个RST数据包,否则不会响应。优点:可以辨别某台主机运行的是哪种操作系统。缺点:使用NULL扫描要求所有主机都必须符合RFC 793标准,但现实中Windows系统主机并不遵从RFC 793标准(不管端口是否开放,收到无标志位的数据包时都返回RST数据包),故精确度相对低一些。4.FIN扫描(反向扫描)这种扫描将一个设置了FIN标志的数据包发送给目标主机的每一个端口。端口关闭的状态下,若收到设置FIN标志位的数据字段,则接收主机返回一个RST数据包,否则不会响应,则表示端口开放。优点:更隐蔽一些。缺点:现实中Windows系统主机并
5、不遵从RFC 793标准,故精确度相对低一些。5.ACK扫描这种扫描使用响应包来发现防火墙的配置信息。如果某个端口被防火墙过滤,那么就不会返回数据包。若没被过滤,则返回RST数据包。通过侦听RST数据包,可了解哪些端口被防火墙过滤,哪些端口没有被防火墙过滤。优点:常用于穿越防火墙的规则集。6.Xmas-Tree扫描(圣诞树扫描)这种扫描发送带有URG、PSH、FIN三种标志的TCP数据包。正常的TCP连接不应该同时设置这3个标志。优点:能识别部分端口是否关闭。缺点:依然不能确定Windows平台上端口的关闭与开放。7.Dump扫描(哑扫描,Idle扫描或反向扫描)这是另一种扫描方法,在扫描目标
6、主机的过程中,它使用第三方的僵尸计算机作为“哑”主机进行扫描。僵尸主机是一台被入侵的空闲主机。典型情况下,这台主机并不存储敏感数据,对这样的主机的访问通常不引人注目。在Idle扫描中,僵尸主机向目标主机发SYN包,目标主机根据端口的不同状态,发送不同的回应:端口开放时回应SYN/ACK,端口关闭时回应RST。僵尸主机对SYN/ACK回应RST,对RST不回应。因此,通过监控僵尸主机的发包数量就可以知道目标主机端口的状态。优点:隐蔽性强,该扫描不是发自自己的计算机,而是发自某个僵尸主机。漏洞扫描主要通过以下两种方法来检查目标主机是否存在漏洞:1.漏洞库的匹配方法:端口扫描后得知目标主机开启的端口
7、以及端口上的网络服务,将这些相关信息与网络漏洞扫描系统提供的漏洞库进行匹配,查看是否有满足条件的漏洞存在。2.插件技术(功能模块技术):通过模拟黑客的攻击手法,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱口令等,若模拟成功,则表明目标主机系统存在安全漏洞。1.漏洞库的匹配方法基于网络系统漏洞库的漏洞扫描的关键部分就是它所使用的漏洞库。通过采用基于规则的匹配技术,即根据安全专家对网络系统安全漏洞、黑客攻击案例的分析和系统管理员对网络系统安全配置的实际经验,可以形成一套标准的网络系统漏洞库,然后在此基础上构成相应的匹配规则,由扫描程序自动进行漏洞扫描工作。漏洞库信息的完整性和有效性决定了漏洞扫
8、描系统的性能,漏洞库的修订和更新的性能也会影响漏洞扫描系统运行的时间。2.插件技术(功能模块技术)插件是由脚本语言编写的子程序,扫描程序可以通过调用它来执行漏洞扫描,检测出系统中存在的一个或多个漏洞。添加新插件可以使漏洞扫描软件增加新的功能。用户可以用Perl、C或自行设计的脚本语言编写插件来扩充漏洞扫描功能。可以用它来扫描局域网内所有活动主机或某一台主机所开放的端口,查找IP/主机名,ICMP/路由跟踪,HTTP HEAD/GET请求,Whois等,以及针对Windows系统的多种枚举类型。打开官方网站:http:/www.nmap.org/下载nmap-4.76-win32.zip 和 n
9、map-4.76-setup.exe 解压安装Winpcap,注册表导入 开始-运行,打开CMD,进入Nmap目录,运行,输入Nmap或Nmap h查看帮助Nmap被开发用于允许系统管理员查看一个大的网络系统有哪些主机以及其上运行何种服务。它支持多种协议的扫描,TCP connect()、TCP SYN(half open)、ICMP ping、FIN、ACK、Xmas-Tree、SYN 和Null扫描等。Nmap还提供一些实用功能,如通过TCP/IP来辨别操作系统类型、秘密扫描、动态延迟和重发、通过并行的PING侦测下属的主机、欺骗扫描、端口过滤探测、直接的RPC扫描、分布扫描、灵活的目标选
10、择以及端口的描述等。运行Nmap后通常会得到一个关于你扫描的机器的一个实用的端口列表。Nmap总是显示该服务的服务名称、端口号、状态以及协议。Nmap所能识别的6个状态如下:1.open(开放的)应用程序正在该端口接收TCP 连接或者UDP报文。发现这一点通常是端口扫描的主要目标。安全意识强的人们知道每个开放的端口都有可能是攻击的入口。攻击者或者入侵测试者想要发现开放的端口。而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。2.closed(关闭的)关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应),但没有应用程序在其上监听。因关闭的端口是可访问的,也许稍后再
11、扫描,可能一些端口又开放了。系统管理员可能会考虑用防火墙封锁这样的端口。那样他们就会被显示为被过滤的状态。3.filtered(被过滤的)由于包过滤阻止探测报文到达端口,Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙。普遍的是过滤器只是丢弃探测帧,不做任何响应。这迫使Nmap重试若干次以防万一探测包是由于网络阻塞而丢弃的。这使得扫描速度明显变慢。4.unfiltered(未被过滤的)未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。用其它类型的扫描如SYN扫描,或者FI
12、N扫描来扫描未被过滤的端口可以帮助确定端口是否开放。5.open|filtered(开放或者被过滤的)当无法确定端口是开放还是被过滤时,Nmap就把该端口划分成这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的其它响应。因此Nmap无法确定该端口是开放的还是被过滤的。FIN,Null,和Xmas-Tree扫描可能把端口归入此类。6.closed|filtered(关闭或者被过滤的)该状态用于Nmap不能确定端口是关闭的还是被过滤的。它只可能出现在IP Idle扫描中。Nmap的使用格式如下:nmap 扫描类型 选项 目标主机如:nmap-sS v
13、192.168.0.88关于目标主机,最简单的形式是直接输入一个主机名(域名)或者一个IP地址。如果希望扫描某个IP地址的一个子网,可以使用CIDR的表示方式,如192.168.1.0/24表示192.168.1网段内的所有主机。Nmap 可以灵活地指定IP地址。例如:如果要扫描这个B类网络 128.210.*.*,可以使用下面三种方式来指定这些地址:128.210.*.*128.210.0-255.0-255128.210.0.0/16这三种形式是等价的。-sT(TCP connect()扫描)这是对TCP的最基本形式的侦测。如果该端口被监听,则连接成功,否则代表这个端口无法到达。这个技术的
14、很大好处就是你无须任何特殊权限,在大多数的系统下这个命令可以被任何人自由地使用。缺点:很容易被目标主机察觉并记录下来。因为服务器接受了一个连接但它却马上断开,于是其记录会显示出一连串的连接及错误信息。-sS(TCP SYN 扫描)这是一种“半开”扫描,因为不打开完整的TCP连接,发送一个SYN信息包就像要打开一个真正的连接在等待对方的回应。一个SYNACK(应答)会表明该端口是开放监听的。一个RST则代表该端口未开放。如果SYNACK的回应返回,则会马上发送一个RST包来中断这个连接。最大好处:只有极少的站点会对它作出记录,但需要有root权限来定制这些SYN包。-sF-sXsN(FIN、Xm
15、as-Tree和Null扫描)有时甚至SYN扫描都不够隐蔽,一些防火墙及信息包过滤装置会在重要端口守护,SYN包在此时会被截获。使用这三种方式可以进一步确定端口的开放情况,相对SYN扫描更加隐蔽,但其准确性要低一些。-sP(Ping扫描)仅希望了解网络上哪些主机是开放的,Nmap可以通过对指定IP发送ICMP的echo request信息包来做到这一点,有回应的主机就是开放的。但一些站点对echo request包设置了障碍,这样的话Nmap还能发送一个TCP ACK包到80端口(默认),如果获得了RST返回,机器是开放的。第三个方法是发送一个SYN信息包并等待RST 或SYNACK响应。作为
16、非root的用户可以使用的,常用connect()模式。对root来说,默认的Nmap同时使用ICMP和ACK方法扫描,不想探测任何实际端口扫描只想大面积搜索一下活动主机,可以使用此选项。-sU(UDP扫描)这一方法是用来确定哪个UDP端口在主机端开放。这一技术是以发送零字节的UDP信息包到目标机器的各个端口,如果我们收到一个ICMP端口无法到达的回应,那么该端口是关闭的,否则可以认为它是敞开大门的。-sR(RPC扫描)这一方法是结合nmap多种扫描的一种模式,它取得所有的TCP/UDP开放端口并且用Sun RPC程序的NULL命令来试图确定是否是RPC端口,如果是的话,会进一步查看其上运行什么程序、何种版本等。-sA(TCP ACK扫描)这种扫描与目前为止讨论的其它扫描的不同之处在于它不能确定open(开放的)或者 open|filtered(开放或者过滤的)端口。它用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的。这些选项并非必需的,但有些会非常实用。-P0(数字0)在扫描前不尝试或者PING主机,这是用来扫描那些不允许ICMP echo 请求(或应答)的主机