随着信息技术在社会生活中的应用日益广泛,人们对信息安全的重要性有了更加深刻的认识。
作为信息流通与传输的主要媒介,网络的安全问题无疑是信息安全中不可或缺的一环。
而作为信息最初的发送方、中间的传递方、最终的接收方,主机的安全问题也占有非常重要的地位。
在系统维护人员看来,只有足够安全的网络和主机,才能最大可能地保证信息安全。
相应的,黑客(攻击者)也会尽可能地寻找网络和主机的漏洞,从而实施攻击来破坏信息安全。
双方攻防的第一步,主要集中在对网络和主机的漏洞扫描上。
网络扫描,是基于Internet的、探测远端网络或主机信息的一种技术,也是保证系统和网络安全必不可少的一种手段。
主机扫描,是指对计算机主机或者其它网络设备进行安全性检测,以找出安全隐患和系统漏洞。
总体而言,网络扫描和主机扫描都可归入漏洞扫描一类。
漏洞扫描本质上是一把双刃剑:黑客利用它来寻找对网络或系统发起攻击的途径,而系统管理员则利用它来有效防范黑客入侵。
通过漏洞扫描,扫描者能够发现远端网络或主机的配置信息、TCP/UDP端口的分配、提供的网络服务、服务器的具体信息等。
主机漏洞扫描,主要通过以下两种方法来检查目标主机是否存在漏洞:1)在端口扫描后得知目标主机开启的端口以及端口上的网络服务,将这些相关信息与网络漏洞扫描系统提供的漏洞库进行匹配,查看是否有满足匹配条件的漏洞存在;2)通过模拟黑客的攻击手法,对目标主机系统进行攻击性的安全漏洞扫描,如测试弱势口令等。
若模拟攻击成功,则表明目标主机系统存在安全漏洞。
一、漏洞扫描技术安全扫描技术是一类重要的网络安全技术。
安全扫描技术与防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。
通过对网络的扫描,网络管理员可以了解网络的安全配置和运行的应用服务,及时发现安全漏洞,客观评估网络风险等级。
网络管理员可以根据扫描的结果更正网络安全漏洞和系统中的错误配置,在黑客攻击前进行防范。
如果说防火墙和网络监控系统是被动的防御手段,那么安全扫描就是一种主动的防范措施,可以有效避免黑客攻击行为,做到防患于未然。
漏洞扫描可以划分为ping扫描、端口扫描、OS探测、脆弱点探测、防火墙扫描五种主要技术,每种技术实现的目标和运用的原理各不相同。
按照TCP/IP协议簇的结构,ping扫描工作在互联网络层:端口扫描、防火墙探测工作在传输层;0S探测、脆弱点探测工作在互联网络层、传输层、应用层。
ping扫描确定目标主机的IP地址,端口扫描探测目标主机所开放的端口,然后基于端口扫描的结果,进行OS探测和脆弱点扫描。
1.1 Ping扫描ping扫描是指侦测主机IP地址的扫描。
ping扫描的目的,就是确认目标主机的TCP/IP网络是否联通,即扫描的IP地址是否分配了主机。
对没有任何预知信息的黑客而言,ping扫描是进行漏洞扫描及入侵的第一步;对已经了解网络整体IP划分的网络安全人员来讲,也可以借助ping扫描,对主机的IP分配有一个精确的定位。
大体上,ping扫描是基于ICMP协议的。
其主要思想,就是构造一个ICMP包,发送给目标主机,从得到的响应来进行判断。
根据构造ICMP包的不同,分为ECH0扫描和non—ECHO扫描两种。
1.1.1 ECH0扫描向目标IP地址发送一个ICMP ECHOREQUEST(ICMP type 8)的包,等待是否收至UICMP ECHO REPLY(ICMP type 0)。
如果收到了ICMP ECHO REPLY,就表示目标IP上存在主机,否则就说明没有主机。
值得注意的是,如果目标网络上的防火墙配置为阻止ICMP ECH0流量,ECH0扫描不能真实反映目标IP上是否存在主机。
此外,如果向广播地址发送ICMPECHO REQUEST,网络中的unix主机会响应该请求,而windows 主机不会生成响应,这也可以用来进行OS探测。
1.1.2 non-ECH0扫描向目的IP地址发送一个ICMP TIMESTAMP REQUEST(ICMP type l3),或ICMP ADDRESS MASK REQUEST (ICMP type l7)的包,根据是否收到响应,可以确定目的主机是否存在。
当目标网络上的防火墙配置为阻止ICMP ECH0流量时,则可以用non.ECH0扫描来进行主机探测。
1.2端口扫描端口扫描用来探测主机所开放的端口,比如23端口对应telnet,21对应ftp,80对应http。
端口扫描通常只做最简单的端口联通性测试,不做进一步的数据分析,因此比较适合进行大范围的扫描:对指定IP地址进行某个端口值段的扫描,或者指定端口值对某个IP地址段进行扫描。
这种方式判定服务是较早的一种方式,对于大范围评估是有一定价值的,但其精度较低。
例如使用nc这样的工具在80端口上监听,这样扫描时会以为80在开放,但实际上80并没有提供http服务,由于这种关系只是简单对应,并没有去判断端口运行的协议,这就产生了误判,认为只要开放了80端口就是开放了http协议。
但实际并非如此,这就是端口扫描技术在服务判定上的根本缺陷。
根据端口扫描使用的协议,分为TCP扫描和UDP扫描。
1.2.1 TCP扫描主机间建立TCP连接分三步(也称三次握手):利用三次握手过程与目标主机建立完整或不完整的TCP连接。
TCP connect()扫描: tcp的报头里,有6个连接标记,分别是urg、ack、psh、rst、syn、fin。
通过这些连接标记不同的组合方式,可以获得不同的返回报文。
例如,发送一个syn置位的报文,如果syn置位瞄准的端口是开放的,syn置位的报文到达的端口开放的时候,他就会返回syn+ack,代表其能够提供相应的服务。
我收到syn+ack后,返回给对方一个ack。
这个过程就是著名的三次握手。
这种扫描的速度和精度都是令人满意的。
Reverse-ident扫描:这种技术利用了Ident协议(RFC1413),tcp端口113.很多主机都会运行的协议,用于鉴别TCP连接的用户。
identd 的操作原理是查找特定 TCP/IP 连接并返回拥有此连接的进程的用户名。
它也可以返回主机的其他信息。
但这种扫描方式只能在tcp全连接之后才有效,并且实际上很多主机都会关闭ident服务。
Tcp syn扫描:向目标主机的特定端口发送一个SYN包,如果端口没开放就不会返回syn+ack,这时会给你一个rst,停止建立连接。
由于连接没有完全建立,所以称为半开放扫描。
但由于syn flood 作为一种ddos攻击手段被大量采用,因此很多防火墙都会对syn报文进行过滤,所以这种方法并不能总是有用。
其他还有fin、NULL、Xmas等扫描方式。
根据TCP连接的建立步骤,TCP扫描主要包含两种方式:(1)TCP全连接和半连接扫描全连接扫描通过三次握手,与目的主机建立TCP连接,目的主机的log文件中将记录这次连接。
而半连接扫描(也称TCP SYN扫描)并不完成TCP三次握手的全过程。
扫描者发送SYN包开始三次握手,等待目的主机的响应。
如果收到SYN/ACK包,则说明目标端口处于侦听状态,扫描者马上发送RST包,中止三次握手。
因为半连接扫描并没有建立TCP连接,目的主机的log文件中可能不会记录此扫描。
(2)TCP隐蔽扫描根据TCP协议,处于关闭状态的端口,在收到探测包时会响应RST包,而处于侦听状态的端口则忽略此探测包。
根据探测包中各标志位设置的不同,TCP隐蔽扫描又分为SYN/ACK扫描、FIN扫描、XMAS(圣诞树)扫描和NULL扫描四种。
SYN/ACK扫描和FIN扫描均绕过TCP三次握手过程的第一步,直接给目的端口发送SYN/ACK包或者FIN包。
因为TCP是基于连接的协议,目标主机认为发送方在第一步中应该发送的SYN包没有送出,从而定义这次连接过程错误,会发送一个RST包以重置连接。
而这正是扫描者需要的结果—只要有响应,就说明目标系统存在,且目标端口处于关闭状态。
XMAS扫描和NULL扫描:这两类扫描正好相反,XMAS扫描设置TCP包中所有标志位(URG、ACK、RST、PSH、SYN、FIN),而NULL扫描则关闭TCP包中的所有标志位。
1.2.2 UDP端口扫描由于现在防火墙设备的流行,tcp端口的管理状态越来越严格,不会轻易开放,并且通信监视严格。
为了避免这种监视,达到评估的目的,就出现了秘密扫描。
这种扫描方式的特点是利用UDP 端口关闭时返回的ICMP信息,不包含标准的TCP三次握手协议的任何部分,隐蔽性好,但这种扫描使用的数据包在通过网络时容易被丢弃从而产生错误的探测信息。
但是,UDP扫描方式的缺陷很明显,速度慢、精度低。
UDP的扫描方法比较单一,基础原理是:当你发送一个报文给udp端口,该端口是关闭状态时,端口会返回给一个icmp信息,所有的判定都是基于这个原理。
如果关闭的话,什么信息都不发。
Traceroute扫描:tracert 向30000以上的高端口(一般认为,主机的30000以上高端口利用率非常低,任何主机都不会轻易开放这种高端口,默认都是关闭的)。
如果对方端口关闭,会返回给icmp信息,根据这个往返时间,计算跳数、路径信息,了解延时情况。
这是tracerote原理,也是从这个原理上演变出来udp扫描技术。
使用udp扫描要注意的是1、udp状态、精度比较差,因为udp是不面向连接的,所以整个精度会比较低。
2、udp扫描速度比较慢,tcp扫描开放1秒的延时,在udp里可能就需要2秒,这是由于不同操作系统在实现icmp协议的时候为了避免广播风暴都会有峰值速率的限制(因为icmp信息本身并不是传输载荷信息,不会有人拿他去传输一些有价值信息。
操作系统在实现的时候是不希望icmp报文过多的。
为了避免产生广播风暴,操作系统对icmp报文规定了峰值速率,不同操作系统的速率不同)利用udp作为扫描的基础协议,就会对精度、延时产生较大影响。
当前在渗透测试过程中对于端口的扫描是非常灵活的,06年的黑帽大会上,就有人利用了开发了工具探测网内哪台主机打开了80端口,这样的技术在当前的互联网上利用的非常普遍。
1.3 0S探测OS探测有双重目的:一是探测目标主机的0S信息,二是探测提供服务的计算机程序的信息。
比如OS探测的结果是:OS是Windows XP sp3,服务器平台是IIS 4.0。
1.3.1二进制信息探测通过登录目标主机,从主机返回的banner中得知OS类型、版本等,这是最简单的0S探测技术从图l可以看出,在telnet连上FTP服务器后,服务器返回的banner已经提供了server的信息,在执行ftp的syst命令后可得到更具体的信息。
1.3.2 HTTP响应分析在和目标主机建立HTTP连接后,可以分析服务器的响应包得出OS类型。