1、网络安全网络安全陈黎丽陈黎丽计算机系网络教研室cici_课程安排课程安排周数:1-15周 课时:75课时考试方式:闭卷成绩:平时成绩40%+考试成绩60%课程安排课程安排平时成绩40分:考勤10分:第1次缺课扣2分;第2次扣2分,3次扣2分,3次以上考勤成绩0分;作业10分:三次不交此项为0分;期中测评15分;课堂表现5分。第 5 章漏洞扫描5.1 计算机漏洞5.2 实施网络扫描5.3 常用的网络扫描工具5.4 不同的扫描策略目目 录录5.1.1 计算机漏洞的概念 “漏洞”指的是计算机系统具有的某种的可能被侵入者恶意利用的属性。在计算机安全领域,安全漏洞通常又称为脆弱性。简单的说,计算机漏洞使
2、系统的一组特性,恶意的主体能够利用这组特性,通过已授权的手段和方式获取对资源的未授权访问,或者对系统造成损害。此处的漏洞包括单个计算机系统的脆弱性,也包括计算机网络系统的漏洞。5.1计算机漏洞5.1.2 公开的计算机漏洞信息 1.通用漏洞和曝光(CVE)是一个公共安全漏洞和曝光信息的标准化名字列表。致力于为所有公开的漏洞和安全曝光名称标准化的工作。CVE不是一个数据库而是一个字典,目的是使不同的漏洞数据库共享数据和搜索信息变得更容易。5.1计算机漏洞5.1.3 公开的计算机漏洞信息 2.BugTrap漏洞数据库 由SecurityFocus公司维护的一个关于计算机安全漏洞详情信息讨论的邮件列表
3、,讨论内容包括漏洞的描述、漏洞的渗透方法及漏洞的修补方法等。5.1计算机漏洞5.1.3 公开的计算机漏洞信息 3.ICAT漏洞数据库 由美国标准技术研究所NIST维护的的一个CVE兼容的漏洞信息检索索引。ICAT也提供下载的Microsoft Access格式的数据库文件。每条漏洞记录的信息包括漏洞的CVE名字、发布时间、描述、危险等级、漏洞类型、实施范围、受影响系统和参考链接等。5.1计算机漏洞5.1.3 公开的计算机漏洞信息 4.CERT/CC 漏洞信息数据库 也是一个CVE兼容的数据库。可以通过名字、ID号、CVE名字、公布日期、更新日期和严重性等方法索引漏洞信息。5.1计算机漏洞5.1
4、.3 公开的计算机漏洞信息 5.X-Force数据库 由ISS公司维护,是一个比较全面的漏洞信息数据库。可以在web页面上使用关键字对数据库进行检索,检索到的漏洞记录包括漏洞描述、受影响平台、补救措施、风险等级、影响结果、报告时间和参考链接等信息。5.1计算机漏洞一次完整的网络扫描分为下面三个阶段:1)发现目标主机或者网络2)发现目标后进一步搜集目标信息,包括操作系统类型、运行的服务及服务软件的版本等。3)根据搜集到的信息判断或者进一步检测系统是否存在安全漏洞。5.2 实施网络扫描5.2 实施网络扫描5.2 实施网络扫描1.TCP/IP1.TCP/IP协议层次和协议集协议层次和协议集(1)网络
5、接口层网络接口层(SubNetwork Layer)TCP/IP协议的网络接口层与OSI协议的物理层、数据链路层以及网络层的部分相对应。该层没有规定新的物理层和数据链路层协议,允许通信子网采用已有的或将来的各种协议,例如以太网的802.3协议,分组交换网的X.25协议等。该层只定义了TCP/IP与各种通信子网之间的网络接口。网络接口层的功能是传输经网络层处理过的消息。5.2 实施网络扫描1.TCP/IP1.TCP/IP协议层次和协议集协议层次和协议集(2)网络层网络层(Internet Layer)该层与OSI网络层相对应,由于它是针对网际环境设计的,具有更强的网际通信能力。网络层协议为IP协
6、议。它将传输层送来的消息组装成IP数据包,并且把IP数据包传递给网络接口层。IP提供端到端分组发送功能,标识网络号及主机节点地址的功能,为使IP数据包长度与通信子网允许的数据包长度匹配,提供了数据分段和重新组装的功能。该层还提供建立独立的局域网之间的互连网络。在互连网络中,连接两个以上网络的节点称为路由器(网关),其允许网间的报文根据它的目的地址通过路由器传送到另一个网络。5.2 实施网络扫描(3)传输层传输层(Transport Layer)该层与OSI传输层相对应,为应用程序提供端到端通信功能。传输层有3个主要协议,其分别为传输控制协议TCP,用户数据报协议UDP和互联网控制消息协议ICM
7、P。TCP协议负责将用户数据按规定长度组成数据包发送,在接收端对数据包按顺序进行分解重组以恢复用户数据。TCP协议是以建立高可靠性信息传输为目的,为了可靠传输数据,该协议具有数据包的顺序控制、差错检测、检验以及再发送控制等功能。5.2 实施网络扫描 UDP协议负责主机和网关以及Internet运行管理中心等的信息通信,控制管理网络的运行。ICMP协议负责当数据包传输有误时,发送出错信息给数据包发送端主机,另外还具有控制数据包流量的功能。(4)应用层应用层(Application Layer)该层包含了OSI会话层,表示层和应用层的功能,为用户提供各类服务。例如,远程登陆、文件传输、电子邮件、W
8、eb服务器等。5.2 实施网络扫描5.2.1 发现目标 通常称为ping扫射,包括ICMP扫射、广播ICMP、非回显ICMP、TCP扫射、UDP扫射。1.ICMP扫射 ICMP是IP层的一个组成部分,用来传递差错报文和其他需要注意的信息。经常用到ping命令就是使用的ICMP。ICMP报文在IP数据报内部传输的,如图5-1所示图5-1 ICMP报文封装在IP数据报内 5.2 实施网络扫描5-2 ICMP报文格式ICMP扫射利用了类型为8的ICMP报文,即ICMP回显请求。通常网络上受到ICMP回显请求的主机都回向请求者发送ICMP回显应答(类型为0)报文。5.2 实施网络扫描ICMP报文格式如
9、图5-2所示。报文的前两个字节决定了报文的类型。第3个和第4个字节是ICMP报文的校验和字段。ICMP扫射工具比较多。UNIX环境中主要有ping和fping,gping。ping:ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。5.2 实施网络扫描fping:扫射多个IP地址时,速度明显超过ping的速度。gping:与fping一同使用,为fping声称扫射的IP地址列表。5.2 实施网络扫描广播ICMP与ICMP扫射一样,广播ICM
10、P也是利用了ICMP回显应答这两种报文。与前者不同的是,广播的ICMP只需要向目标网络的网络地址和/或广播地址发送一两个回显请求,就能够收到目标网络中所有存活主机的ICMP回显应答。eg.网络192.168.1.0/24中有4台活动主机,期中192.168.1.1和192.168.1.2运行的是Linux,192.168.1.3和1962.168.1.4运行的是Windos 操作系统5.2 实施网络扫描rootlocalhost root#ping 192.168.1.0-bWARNING:pinging broadcast addressPING 192.168.1.0(192.168.1.
11、0)from 192.168.1.1:56(84)bytes of data.64 bytes from 192.168.1.1:icmp_seq=1 ttl=255 time=0.36ms64 bytes from 192.168.2.1:icmp_seq=2 ttl=255 time=0.565ms64 bytes from 192.168.1.1:icmp_seq=3 ttl=255 time=0.164ms(dup!)64 bytes from 192.168.2.1:icmp_seq=4 ttl=255 time=0.246ms(dup!)5.2 实施网络扫描3.非回显ICMP 如果
12、目标主机阻塞了ICMP回显请求报文,仍然可以通过使用其他类型的ICMP报文探测目标主机是否存活。eg:类型13的ICMP报文,ICMP时间戳请求允许系统向另一个系统查询当前时间;类型17的ICMP报文,ICMP地址掩码请求用于无盘系统引导过程中获得自己的子网掩码。5.2 实施网络扫描下面的一个例子使用一个叫icmpenum的工具对目标进行ICMP时间戳请求探测。rootlocalhost root#icmpenum-i2-c 192.168.1.0192.168.1.1 is up192.168.1.2 is up192.168.1.3 is up192.168.1.4 is up5.2 实施
13、网络扫描对于ICMP地址掩码请求报文而言,虽然RFC1122规定,除非是地址掩码的授权代理,否则一个系统不能发送地址掩码应答(为了成为授权代理,必须进行特殊配置)。但是,大多主机在收到请求时都会发送一个应答,甚至有些主机还回发送差错的应答。所以也可以使用类型17的ICMP报文来探测主机是都存活。4.TCP扫射5.2 实施网络扫描5-3 TCP报文封装在IP数据报中4.TCP扫射传输控制协议(transmission control protocol,TCP)为应用层提供一种面向连接的、可靠地字节流服务。与ICMP报文一样,TCP报文也是封装在一个IP数据报中。它使用“3次握手”的方式建立连接。
14、5.2 实施网络扫描4.TCP扫射5.2 实施网络扫描基本原理:如果向目标发送一个SYN报文,则无论是收到SYN/ACK报文还是一个RST报文,都表明目标处于存活状态。与此类似,也可以向目标发送一个ACK报文,如果目标存活,则收到一个RST报文。TCP扫描看起来比用ICMP协议进行探测更加有效。但是TCP扫射也不是百分百可靠,有的防火墙能够伪造RST报文,从而造成防火墙后的某个主机存活的假象。5.2 实施网络扫描5.UDP扫射用户数据报协议(user datagram protocol,UDP)是一个面向数据报的传输层协议。UDP数据报也封装在IP数据报之中,如图5-4。5.2 实施网络扫描5
15、-4 UDP数据报封装在IP数据报中5.UDP扫射用户数据报协议(user datagram protocol,UDP)的规则之一是如果接收到一份目的端口并没有处于侦听状态的数据报,则发送一个ICMP端口不可到达报文;否则不做任何响应。5.2 实施网络扫描5.2 实施网络扫描5.2 实施网络扫描5.2.25.2.2攫取信息攫取信息广义上讲,在入侵系统之前所做的一切工作都可以为成为信息,包括踩点、扫描、查点。因为这些工作走势在搜索着这样或那样的信息。本小节主要讲的主要是扫描阶段攫取的技术和方法。在找出网络上存活的系统之后,下一步就是要得到主机的操作系统信息和开放的服务信息。用到的技术主要有端口扫
16、描(port scanning)、服务识别和操作系统探测(Operating System Detection)。3.操作系统探测5.2.25.2.2攫取信息攫取信息1.端口扫描端口扫描主要取得目标主机开放的端口和服务信息,从而为下一步的“漏洞检测”做准备。(1)TCP connect()扫描基本方法:是TCP connect()扫描。他利用操作系统提供的connect()系统调用,与每一个感兴趣的目标计算机的端口进行连接。如果目标端口处于侦听状态,那么connet()就能成功;否则端口是不能用的,即没有提供服务。优点:不需要任何特殊权限,系统中的任何用户都有权利使用这个调用;缺点:容易被过滤
17、或记录。对于安全管理员而言,使用此方法的唯一缺点是速度慢。3.操作系统探测5.2.25.2.2攫取信息攫取信息3.操作系统探测(2)TCP SYN扫描 又称“半开扫描”。TCP扫射时结识解释了建立TCP连接的“3次握手”过程。TCP SYN扫描只完成了3次握手过程的一半。当时我们只是说如果向目标特定端口发送一个SYN报文,只要接收到来自目标的响应就表明目标处于存活状态。但可以很容易看出,只要再一下收到的响应是SYN/ACK报文还是RST报文,便可知目标的响应端口是处于侦听状态还是关闭状态。(3)TCP ACK扫描 不适用于扫描目标打开了哪些端口,而用来探测防火墙的规则设计,从而确定防火墙是简单
18、地包过滤还是状态监测机制。5.2.25.2.2攫取信息攫取信息3.操作系统探测(4)TCP Fin扫描如果处于侦听状态的端口接收到一个FIN报文,则不做任何回应;如果处于关闭状态的端口接收到一个FIN报文,则响应一个RST报文。据此,可以用FIN报文来探测目标打开了那些端口。通常只工作在基于UNIX的TCP/IP协议栈上。(5)TCP Xmas扫描向目标发送一个URG/PSH/FIN报文,如果目标相应端口打开,则不会收到来自目标的任何回应;否则会受到一个RST报文。(6)TCP空扫描向目标发送一个所有标记位都置0的报文,如果目标响应端口打开,则不会收到来自目标的任何回应;否则收到一个RST报文
19、。(7)FTP反弹扫描FTP协议的一个特点是它支持代理FTP连接。即入侵者可以将自己的计算机和目标主机的FTP服务器建立一个控制通信连接。(8)UDP扫描这里的与前的UDP扫射原理完全不一样,这里强调另一个作用,发现目标打开的UDP端口。3.操作系统探测5.2.25.2.2攫取信息攫取信息2.服务识别3.操作系统探测图5-5识别服务类型5.2.25.2.2攫取信息攫取信息2.服务识别 端口扫描的目的是为了获得目标主机提供的服务,而通常获取服务类型的办法是根据RFC1700直接推断。但是下面几种情况可能会使这项工作变得稍微有些麻烦:该主机将某服务故意开设了非标准端口;该主机开设了一个RFC170
20、0中未定义的服务;该主机被安置了后门程序。所以有时候仅凭端口号来判断服务类型是不够的,可能需要更多的信息。5.2.25.2.2攫取信息攫取信息3.操作系统探测由于许多漏洞是和操作系统紧密相关的,因此,确定操作系统类型对于脆弱性评估工具而言也十分重要。目前用于探测操作系统的方法主要可以分为两类:利用系统旗标信息和利用TCP/IP堆栈指纹。而后者又有多种不同的实现方法。利用系统旗标信息是最原始的探测方法。然而它至今仍然被包括ISS在内的许多网络安全扫描工具使用,因为在大多数情况下,操作系统的多种服务都会暴露其“身份”,例如Telnet、WWW、FTP、SMTP等。同时,这种方法实现起来也特别简单。
21、但是在很多情况下,管理员出于安全考虑都会修改或者关闭旗标信息,或者目标机器并不提供有旗标信息的服务,在这样的情况下,这种方法就不能发挥作用了。5.2.25.2.2攫取信息攫取信息3.操作系统探测利用TCP/IP堆栈指纹识别操作系统是近年来发展迅速的一类技术。这类技术的出现主要基于以下几个原因:每个操作系统通常都使用自己的IP栈实现;TCP/IP规范并不是被严格地执行,每个不同的实现将会拥有自己的特点;规范中一些选择性的特性可能在某些系统中使用,而在其他的一些系统中则没有使用;某些系统私自对IP协议做了改进。目前主要的网络堆栈特征探测技术有如下几种:ICMP响应分析、TCP报文响应分析、TCP报
22、文延时分析、被动特征探测。5.2.25.2.2攫取信息攫取信息(1)ICMP响应分析这种方法向目标发送UDP或者ICMP报文,然后分析目标响应的ICMP报文的内容,根据不同的响应特征来判断操作系统。前面已经介绍过,ICMP数据报是封装在IP数据报之内的,而且这种判断操作系统的方法也利用了IP头部的字段内容,所以在具体说明这种方法使用的技术之前,有必要先熟悉一下IP数据报的头部。其中需要注意的是服务级别TOS、总长度、标识、DF位、生存期TTL和校验和字段。5.2.25.2.2攫取信息攫取信息下面分别说明ICMP响应分析方法使用的具体技术。ICMP差错报文引用大小。ICMP的规则之一是ICMP差
23、错报文必须包括生成该差错报文的数据报IP头部(包含任何选项),还必须至少包括跟在该IP头部后面的前8个字节。图显示了由UDP数据报引起的ICMP端口不可到达差错报文。图“UDP端口不可到达”差错报文3.操作系统探测5.2.25.2.2攫取信息攫取信息 导致差错的数据报中的IP头部要被送回的原因是IP头部中包含了协议字段,使得ICMP可以知道如何解释后面的8个字节(在图12.6中是UDP头部)。大多数操作系统都只返回产生差错的数据报的IP头部后的前8个字节,然而有一些操作系统在这8个字节之后还返回更多的字节(这些字节通常是没有任何意义的)。这样的系统包括Linux(内核2.0.x/2.2.x/2
24、.4.x)、SUN Solaris、HPUX 11.x、MacOS 7.55/8.x/9.04、Nokia系统、Foundry交换机和其他一些操作系统或者网络设备。5.2.25.2.2攫取信息攫取信息 ICMP差错报文回显完整性。一般而言,在发送ICMP差错报文时,差错报文的数据部分,只有产生差错的数据报IP头部的TTL字段和IP头部校验和字段会与初始报文不同,因为初始报文到达目标之前会经过一系列的路由设备,而每经过一个设备TTL都会减一,相应的校验和也要重新计算。然而实际情况是,有些操作系统会改变产生差错的数据报IP头部的其他字段的内容和/或后面数据的内容。如果用UDP数据报产生的端口不可到
25、达差错报文来进行分析,可以利用的特点包括下面一些内容:IP数据报总长度AIX 4.x和BSDI 4.1等操作系统的IP栈会将产生差错的数据报IP头部的总长度字段加上20,而另一些系统会将这个字段的数值减少20,更多的系统会保持这个字段的内容不变。5.2.25.2.2攫取信息攫取信息 IP数据报标识(IPID)FreeBSD 4.0、OpenVMSs和ULTRIX等系统的IP栈不能正确回显产生差错数据报的IPID,它们回显的IPID的位顺序和初始顺序不同。其他更多的系统则能够正确回显IPID字段。分段标志(3位)和片偏移有一些系统会改变产生差错的数据报头部中3位分段标志和片偏移字段的位顺序,而另
26、一些系统只能正确回显。IP头部校验和FreeBSD 4.0、OpenVMSs和ULTRIX等系统会将产生差错的数据报IP头部的校验和字段置为0,而大多数的系统只是将重新计算的校验和回显。UDP头部校验和FreeBSD 4.0/4.11、Compaq Tru64、DGUX 5.6、AIX 4.3/4.2.1、ULTRIX和OpenVMS等系统会将差错报文中的UDP头部的校验和字段置为0。另外的一些系统则会保持UDP校验和不变。5.2.25.2.2攫取信息攫取信息 ICMP差错报文的“优先权”字段。IP头部中有一个8位的TOS字段,TOS字段包括一个3位的优先权字段、4位的TOS子字段和一位必须置
27、0的未用位,如图Ipuuee头部的TOS字段。5.2.25.2.2攫取信息攫取信息 ICMP差错报文IP头部的不分片(DF)位。有一些操作系统在发送ICMP差错报文时,会根据引起差错的数据报的IP头部的DF位来设置差错报文本身IP头部的DF位。Linux、ULTRIX、Novell Netware、HPUX、Windows98/98SE/ME、Windows NT4 Server SP6、Windows 2000 Family等系统则不会这么做。ICMP报文IP头部的TTL字段。不同的操作系统在设置ICMP报文IP头部的TTL字段时有不同的默认值。而且一般来讲,ICMP应答报文和ICMP查询报
28、文的TTL还不一样。例如,Windows 95应答报文和查询报文的TTL都是32Windows 98/98SE/ME/NT4应答报文的TTL是128、查询报文的TTL是32;Windows 2000应答报文和查询报文的TTL都是128。5.2.25.2.2攫取信息攫取信息 使用代码字段不为0的ICMP回显请求。ICMP报文的种类由第一个字节(类型字段)和第二个字节(代码字段)决定。回显请求的类型字段为8,默认的代码字段为0。如果把回显请求的代码字段设置为非0值,这样的回显请求就不是标准的ICMP报文了。对于这样的回显请求报文,Windows操作系统做出的回显应答(类型为0)的代码字段值为0,而
29、其他系统和网络设备做出的回显应答的代码字段值和它收到的回显请求中的代码字段值相同。5.2.25.2.2攫取信息攫取信息 TOS子字段回显。RFC1349定义了ICMP报文使用TOS子字段的方法。其中区分了差错报文、查询报文和应答报文的不同使用方法,规则是:差错报文总是使用默认值0;查询报文可以在TOS子字段中使用任何值;应答报文应该在TOS子字段中使用造成应答的查询报文中使用的TOS值。然而有些操作系统(例如Linux)在发送回显应答报文时忽视了这项规定,无论查询报文使用何种TOS值,它的应答报文的TOS值都是一样的。5.2.25.2.2攫取信息攫取信息(2)TCP报文响应分析这种技术通过区分
30、不同操作系统对特定TCP报文(标准或非标准)的不同反应,实现对操作系统的区分。使用这种技术的代表有Queso和Nmap(Nmap其实也使用了一些ICMP响应分析的技巧)。下面将分别说明Nmap使用的操作系统探测技巧。FIN探测。前面讲端口扫描的技巧时曾提到,“FIN扫描通常只工作在基于UNIX的TCP/IP协议栈上”,这就可以用来作为一个探测操作系统的判断依据。5.2.25.2.2攫取信息攫取信息 伪标记位探测。TCP报文的头部有8个标记位。使用“伪标记位”(BOGUS Flag),即把SYN报文的CWR标记位的左边一位置1,然后将这样的非标准SYN报文发给目标TCP端口。低于2.0.35版本
31、的Linux内核会在回应包中保持这个标记,而其他的操作系统似乎都没有这个问题。不过有的操作系统在收到这样的SYN/BOGUS报文时会发送一个RST复位连接。5.2.25.2.2攫取信息攫取信息 TCP ISN取样。其原理是在操作系统对连接请求的回应中寻找TCP连接初始化序列号(ISN)的特征。目前可以区分的类别有传统的64000方式(旧UNIX系统使用)、随机增加方式(新版本的Solaris、IRIX、FreeBSD、Digital UNIX、Cray和其他许多系统使用)、真“随机”方式(Linux 2.0.*及更高版本、OpenVMS和新版本的AIX等操作系统使用)等。Windows平台(还
32、有其他一些平台)使用“基于时间”方式产生的ISN会随着时间的变化而呈相对固定的增长。另外还有一些系统总是使用固定的ISN,如某些3Com集线器(使用0 x83)和Apple LaserWriter打印机(使用0 xC7001)。根据计算ISN的变化、最大公约数和其他一些有迹可循的规律,还可以将这些类别分得更细、更准确。5.2.25.2.2攫取信息攫取信息 DF位监视。许多操作系统逐渐开始在它们发送的IP数据报中设置DF位,从而有益于提高传输性能。但并不是所有操作系统都进行这种设置,或者有的系统只是在某些情况下使用这种设置。因此通过留意这个标记位的设置可以搜集到关于目标主机操作系统的更多有用信息
33、。TCP初始化窗口大小。这种技巧就是得到目标的初始化TCP窗口大小。有的操作系统总是使用比较特殊的值。例如AIX是惟一使用0 x3F25窗口值的操作系统。而在OpenBSD、和2000/XP的TCP堆栈中,71Free BSDWindows 使用的窗口值总是0 x402E。5.2.25.2.2攫取信息攫取信息 ACK值。不同协议栈实现在TCP报文的ACK值的选择上也存在差异。例如,假设向一个关闭的TCP端口发送一个FIN/PSH/URG报文,许多操作系统会将ACK值设置为ISN值,但Windows和某些打印机会设置为接收到的报文的SEQ+1。如果向打开的端口发送SYN/FIN/URG/PSH报
34、文,Windows的返回值就会非常不确定,有时是接收到的报文的SEQ值,有时是SEQ+,而有时回送的是一个似乎很随机的数值。片段处理。不同操作系统在处理IP片段重叠时采用了不同的方式。有些用新的内容覆盖旧的内容,有些是以旧的内容为优先。有很多探测方法能确定这些包是72如何重组的,从而能帮助确定操作系统类型。5.2.25.2.2攫取信息攫取信息 TCP选项。这是搜集信息的最有效方法之一。其基于以下原因:它们通常是“可选的”,因此并不是所有的操作系统都使用它们。向目标主机发送带有可选项标记的数据包时,如果操作系统支持这些选项,会在返回包中也设置这些标记。可以一次在数据包中设置多个可选项,从而增加了
35、探测的准确度。5.2.25.2.2攫取信息攫取信息5.2.25.2.2攫取信息攫取信息(3)TCP报文延时分析这是利用了TCP报文重传的特性。这种方法的具体实现是在“3次握手”的过程中放弃对远程主机SYN/ACK报文的确认,迫使其重传,通过测量重传TCP报文之间的延时图忽略SYN/ACK报文迫使服务器重传序列,获取远程操作系统指纹。左图说明了延时序列的意义。采用这种方法的代表是RING。这种技术的最大优势就是它只需要一个打开的端口。如果目标主机是被防火墙所保护的,那么很可能只开了一个端口,其他的端口则是被过滤了的。而且这种技术是使用了一个标准的TCP数据报,它将不会对目标主机造成任何的不利影响
36、。但是这种探测方式需要花比nmap或Xprobe更多的时间,这是测量连续数据报时间延74迟的一个固有缺点。下面的例子是使用RING探测操作系统类型。rootlocalhost ring#./ring-d 192.168.1.128-s 192.168.1.12-p 111-i eth03558202 6000667 11999952 24200335OS:Linux2.4distance:10362185.2.25.2.2攫取信息攫取信息(4)被动协议栈指纹探测被动的协议栈指纹探测和主动的协议栈指纹探测很相似,不同之处在于这种方法不主动向目标系统发送分组,而是通过嗅探目标网络的通信,抓取从远程
37、主机上发送的数据报,获取包括TTL、窗口大小、DF位、服务类型等在内的数据报属性,构成目标系统的指纹。这种方法主要被入侵者使用,因为它不容易被发现。5.2.25.2.2攫取信息攫取信息5.2.25.2.2攫取信息攫取信息 经过发现目标和攫取信息两个步骤以后,已经能够得到下面一些信息:目标网络上有哪些主机处于存活状态?这些主机上都运行什么系统?这些主机运行了哪些网络服务?而漏洞检测就是要回答最关键的一个问题这些主机存在哪些漏洞?漏洞检测的方法主要分为3种:直接测试(test)推断(inference)带凭证的测试(Test with Credentials)。5.2.35.2.3漏洞检测漏洞检测
38、 1.直接测试直接测试是指利用漏洞特点发现系统漏洞的方法。要找出系统中的常见漏洞,最显而易见的方法就是试图渗透漏洞。渗透测试是指使用针对漏洞特点设计的脚本或者程序检测漏洞。测试代码通常和渗透攻击代码类似,不同的是测试代码返回与“风险等级”对应的提示,而渗透攻击代码则直接向入侵者返回具有超级权限的执行环境。另外也有一些渗透攻击不返回任何东西,只是让系统处于易被攻击的状态,用户必须另外采取动作来判断是否有漏洞被渗透了。根据这一点,测试方法可以分为两种不同的类型:可以直接观察到的测试和只能间接观察到的测试。下面通过一个例子具体说明直接测试漏洞的方法。5.2.35.2.3漏洞检测漏洞检测对于拒绝服务(
39、DoS)漏洞也可以直接使用渗透代码进行测试,所不同的只是测试DoS漏洞的渗透代码通常是经过编译的二进制代码。直接测试的方法具有下面一些特点:通常用于对Web服务器漏洞、拒绝服务(DoS)漏洞进行检测;能够准确地判断系统是否存在特定漏洞;对于渗透所需步骤较多的漏洞速度较慢;攻击性较强,可能对存在漏洞的系统造成破坏;对于DoS漏洞,测试方法会造成系统崩溃;不是所有漏洞的信息都能通过测试方法获得。5.2.35.2.3漏洞检测漏洞检测 2.2.推断推断推断是指不利用系统漏洞而判断漏洞是否存在的方法。它并不直接渗透漏洞,只是间接寻找漏洞存在的证据。采用推断方法的检测手段主要有版本检查(Version C
40、heck)、程序行为分析、操作系统堆栈指纹分析、时序分析等。其中,版本检查是推断方法中最简单的一个应用。它依赖于服务器对请求响应的旗标获取系统的有关信息,然后将获得的版本号与已知信息比较,以判断目标系统是否是受漏洞影响的系统。5.2.35.2.3漏洞检测漏洞检测行为分析在需要推翻某个“风险假设”的时候非常有用。在这种情况下,它分析目标程序的行为,如果发现该程序的行为和具有漏洞的版本的程序行为不一致,就认为目标程序不存在漏洞。这种方法不如渗透测试方法可靠,但是攻击性更小。这种方法在推断没有公开细节的新漏洞时也很有用。另外,它也可以用于检查DoS漏洞,因为它基本没有攻击性,所以可以在检查很多DoS
41、漏洞以后再重新启动系统。5.2.35.2.3漏洞检测漏洞检测推断方法有时也和测试方法结合使用,如首先推断出目标采用的系统类型,然后进行针对该系统的测试。推断的方法在快速检查大量目标时很有用,因为这种方法对计算机和网络的要求都很低。而它最主要的缺点就是可靠性较低。5.2.35.2.3漏洞检测漏洞检测 3.带凭证的测试凭证是指访问服务所需要的用户名或者密码,包括UNIX的登录权限和从网络调用Windows NT的U W API的能力。除了目标主机IP地址以外,直接测试和推断两种方法都不需要其他任何信息。然而,很多攻击都是由拥有UNIX shell访问权限或者NT资源访问权限的用户发起的,他们的目标
42、在于将自己的权限提升成为超级用户,从而可以执行某个命令。对于这样的漏洞,前面两种方法很难检查出来。因此,如果赋予测试进程目标系统的角色,将能够检查出更多的漏洞。这种方法就是带凭证的测试。5.2.35.2.3漏洞检测漏洞检测由于拥有了目标主机的证书,一些原来只能由本地扫描发现的漏洞就能够通过网络安全扫描发现了。然而需要注意的是,由于拥有了目标主机的证书,检测系统本身的安全就更加值得注意,因为入侵者可能从检测系统上得到目标系统的访问权限。所以一个好的检测系统应该集成对自己进行扫描的功能,否则,漏洞扫描有可能变得很危险5.2.35.2.3漏洞检测漏洞检测5.2.35.2.3常用的网络扫描工具常用的网
43、络扫描工具网络扫描的一些常用工具都是可以从Internet上免费获得的。在使用这些工具之前请一定确认目标网络已经授权你对其进行扫描。因为这些工具有可能对扫描的目标造成危害。1.Netcat由Hobbit(hobbitavian.org)编写的Netcat(或称nc)是一个优秀的实用工具,Weld Pond()将其移植到了NT平台上。它能执行的任务是如此之多,以至于被称作网络工具箱中的“瑞士军刀”2.网络映射程序Nmap由Fyodor(fyodorinsecure.org)编写的Nmap(www.nmap.org)是一个开放源码的网络扫描工具。Nmap实现了前面提到的绝大部分的扫描技巧和操作系统
44、探测技巧,可以用来发现网络上存活的主机、这些主机开放了哪些TCP和UDP端口、这些主机运行什么样的操作系统以及操作系统的版本、正在使用什么样的防火墙和过滤设备等信息。5.2.35.2.3常用的网络扫描工具常用的网络扫描工具3.SATAN前面的两个工具主要是用于发现目标和攫取信息两个阶段,而一次完整的漏洞扫描还应该包括“漏洞检测”这个阶段。SATAN即“网络分析的安全管理工具”。它提供一整套安全管理、测试和报告的功能,可以用来搜集网络上主机的许多信息,可以识别并且自动报告与网络相关的安全问题。5.2.35.2.3常用的网络扫描工具常用的网络扫描工具4.nessusnessus是一个功能强大而又易
45、于使用的网络漏洞扫描工具,运行于POSIX系统(Solaris、FreeBSD、GNU/Linux等)。它不仅免费而且更新很快。该系统被设计为客户/服务器模式,服务器端负责进行安全扫描,客户端用来配置、管理服务器端,客户端和服务器端之间的通信使用SSL加密。5.X-scanX-scan是由“安全焦点”开发的一个免费的漏洞扫描工具,运行于Windows操作系统。采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,持插件功能,提供了图形界面和命令行两种操作方式。5.2.35.2.3常用的网络扫描工具常用的网络扫描工具4.nessusnessus是一个功能强大而又易于使用的网络漏洞扫描工具,运
46、行于POSIX系统(Solaris、FreeBSD、GNU/Linux等)。它不仅免费而且更新很快。该系统被设计为客户/服务器模式,服务器端负责进行安全扫描,客户端用来配置、管理服务器端,客户端和服务器端之间的通信使用SSL加密。5.X-scanX-scan是由“安全焦点”开发的一个免费的漏洞扫描工具,运行于Windows操作系统。采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,持插件功能,提供了图形界面和命令行两种操作方式。5.2.35.2.3常用的网络扫描工具常用的网络扫描工具前面介绍了网络扫描的原理、技术和工具。然而对计算机进行安全扫描不仅可以从网络进行,也可以从主机进行。也就
47、是说安全扫描有基于网络和基于主机两种策略。(1)基于网络的安全评估工具从入侵者的角度评估系统,这类工具叫做远程扫描器或者网络扫描器。基于主机的安全评估工具从本地系统管理员的角度评估系统,这类工具叫做本地扫描器或者系统扫描器。这两类扫描器的主要目的都是发现系统或网络潜在的安全漏洞。然而由于其着眼点和实现方式不同,两者的特点也各有千秋。5.2.45.2.4不同的扫描策略不同的扫描策略(2)基于主机的脆弱性评估分析文件内容,对系统中不合适的设置、脆弱的口令以及其他同安全规则抵触的对象进行检查。它具有以下特点:运行于单个主机,扫描目标为本地主机;扫描器的设计和实现与目标主机的操作系统相关;可以在系统上
48、任意创建进程;扫描项目主要包括用户账号文件、组文件、系统权限、系统配置文件、关键文件、日志文件、用户口令、网络接口状态、系统服务、软件脆弱性等。5.2.45.2.4不同的扫描策略不同的扫描策略基于网络的脆弱性评估通过执行一些插件或者脚本模拟对系统进行攻击的行为并记录系统的反应,从而发现其中的漏洞。它具有以下特点:运行于单个或多个主机,扫描目标为本地主机或者单/多个远程主机;扫描器的设计和实现与目标主机的操作系统无关;通常的网络安全扫描不能访问目标主机的本地文件(具有目标主机访问权限的扫描除外)。扫描项目主要包括目标的开放端口、系统网络服务、系统信息、系统漏洞、远程服务漏洞、特洛伊木马检测、拒绝
49、服务攻击等。5.2.45.2.4不同的扫描策略不同的扫描策略基于主机的脆弱性评估可以更准确地定位系统的问题,发现系统的漏洞;然而缺点是平台相关、升级复杂,而且扫描效率较低(一次只能扫描一台主机)。基于网络的脆弱性评估从入侵者的角度进行检测,能够发现系统中最危险、最可能被入侵者渗透的漏洞,扫描效率更高,而且由于与目标平台无关,通用性强,安装简单;缺点是不能检查不恰当的本地安全策略,另外也可能影响网络性能。5.2.45.2.4不同的扫描策略不同的扫描策略第五章作业1.完整的网络扫描的三个阶段2.目标发现阶段的五个技巧是什么,简单描述他们的方法和优缺点3.操作系统探测方法的比较4.简述基于主机的脆弱性评估和基于网络的脆弱评估的不同