1 引言
网络扫描,是基于internet的、探测远端网络或主机信息的一种技术,也是保证系统和网络安全必不可少的一种手段。主机扫描,是指对计算机主机或者其它网络设备进行安全性检测,以找出安全隐患和系统漏洞。总体而言,网络扫描和主机扫描都可归入漏洞扫描一类。漏洞扫描本质上是一把双刃剑:黑客利用它来寻找对网络或系统发起攻击的途径,而系统管理员则利用它来有效防范黑客入侵。通过漏洞扫描,扫描者能够发现远端网络或主机的配置信息、 tcp/udp端口的分配、提供的网络服务、服务器的具体信息等。
2 漏洞扫描原理
漏洞扫描可以划分为ping扫描、端口扫描、os探测、脆弱点探测、防火墙扫描五种主要技术,每种技术实现的目标和运用的原理各不相同。按照 tcp/ip协议簇的结构,ping扫描工作在互联网络层:端口扫描、防火墙探测工作在传输层;0s探测、脆弱点探测工作在互联网络层、传输层、应用层。 ping扫描确定目标主机的ip地址,端口扫描探测目标主机所开放的端口,然后基于端口扫描的结果,进行os探测和脆弱点扫描。
2.1 ping扫描
ping扫描是指侦测主机ip地址的扫描。ping扫描的目的,就是确认目标主机的tcp/ip网络是否联通,即扫描的ip地址是否分配了主机。对没有任何预知信息的黑客而言,ping扫描是进行漏洞扫描及入侵的第一步;对已经了解网络整体ip划分的网络安全人员来讲,也可以借助ping扫描,对主机的ip分配有一个精确的定位。大体上,ping扫描是基于icmp协议的。其主要思想,就是构造一个icmp包,发送给目标主机,从得到的响应来进行判断。根据构造icmp包的不同,分为ech0扫描和non—echo扫描两种。
2.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探测。
2.1.2 non-ech0扫描
向目的ip地址发送一个icmp timestamp request(icmp type l3),或icmp address mask request (icmp type l7)的包,根据是否收到响应,可以确定目的主机是否存在。当目标网络上的防火墙配置为阻止icmp ech0流量时,则可以用non.ech0扫描来进行主机探测。
2.2端口扫描
端口扫描用来探测主机所开放的端口。端口扫描通常只做最简单的端口联通性测试,不做进一步的数据分析,因此比较适合进行大范围的扫描:对指定 ip地址进行某个端口值段的扫描,或者指定端口值对某个ip地址段进行扫描。根据端口扫描使用的协议,分为tcp扫描和udp扫描。
2.2.1 tcp扫描
主机间建立tcp连接分三步(也称三次握手):
(1)请求端发送一个syn包,指明打算连接的目的端口。
(2)观察目的端返回的包:
返回syn/ack包,说明目的端口处于侦听状态;
返回rst/ack包,说明目的端口没有侦听,连接重置。
(3)若返回syn/ack包,则请求端向目的端口发送ack包完成3次握手,tcp连接建立。
根据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包中的所有标志位。
2.2.2 udp端口扫描
udp协议是数据包协议,为了要发现正在服务的udp端口,通常的扫描方式是构造一个内容为空的udp数据包送往目的端口。若目的端口上有服务正在等待,则目的端口返回错误的消息;若目的端口处于关闭状态,则目的主机返回icmp端口不可达消息。因为udp端口扫描软件要计算传输中丢包的数量,所以udp端口扫描的速度很慢。
2.3 0s探测
os探测有双重目的:一是探测目标主机的0s信息,二是探测提供服务的计算机程序的信息。比如os探测的结果是:os是windows xp sp3,服务器平台是iis 4.0。
2.3.1二进制信息探测
通过登录目标主机,从主机返回的banner中得知os类型、版本等,这是最简单的0s探测技术。
图1 二进制信息
从图l可以看出,在telnet连上ftp服务器后,服务器返回的banner已经提供了server的信息,在执行ftp的syst命令后可得到更具体的信息。
2.3.2 http响应分析
在和目标主机建立http连接后,可以分析服务器的响应包得出os类型。比如响应包中可能包含如下信息:
图2 响应包分析
从图2中对响应包中的数据分析,可以得到server的信息。
2.3.3栈指纹分析
网络上的主机都会通过tcp/ip或类似的协议栈来互通互联。由于0s开发商不唯一,系统架构多样,甚至是软件版本的差异,都导致了协议栈具体实现上的不同。对错误包的响应,默认值等都可以作为区分0s的依据。
(1)主动栈指纹探测
主动栈指纹探测是主动向主机发起连接,并分析收到的响应,从而确定os类型的技术。
1)fin探测。跳过tcp三次握手的顺序,给目标主机发送一个fin包。rfc793规定,正确的处理是没有响应,但有些os,如ms windows,cisc0,hp/ux等会响应一个rst包。
2)bogus标志探测。某些os会设置syn包中tcp头的未定义位(一般为64或128),而某些0s在收到设置了这些bogus位的syn包后,会重置连接。
3)统计icmp error报文。rfcl812中规定了icmp error消息的发送速度。linux设定了目标不可达消息上限为80个/4秒。0s探测时可以向随机的高端udp端口大量发包,然后统计收到的目标不可达消息。用此技术进行os探测时时间会长一些,因为要大量发包,并且还要等待响应,同时也可能出现网络中丢包的情况。
4)icmperror报文引用。rfc文件中规定,icmp error消息要引用导致该消息的icmp消息的部分内容。例如对于端口不可达消息,某些os返回收到的ip头及后续的8个字节,solaris返回的 error消息中则引用内容更多一些,而linux比solaris还要多。
(2)被动栈指纹探测
被动栈指纹探测是在网络中监听,分析系统流量,用默认值来猜测0s类型的技术。
1)tcp初始化窗口尺寸。通过分析响应中的初始窗口大小来猜测os的技术比较可靠,因为很多0s的初始窗口尺寸不同。比如aix设置的初始窗口尺寸是0x3f25,而windows nt5、openbsd、freebsd设置的值是0x402e。
2)don’t fragment位。为了增进性能,某些0s在发送的包中设置了df位,可以从df位的设置情况中做大概的判断。
3)tcpisn采样。建立tcp连接时,syn/ack中初始序列号isn的生成存在规律,比如固定不变、随机增加 (solaris,freebsd等),真正的随机(linux 2.0.*),而windows使用的是时间相关模型,isn在每个不同时间段都有固定的增量。
2.4脆弱点扫描
从对黑客攻击行为的分析和脆弱点的分类,绝大多数扫描都是针对特定操作系统中特定的网络服务来进行,即针对主机上的特定端口。脆弱点扫描使用的技术主要有基于脆弱点数据库和基于插件两种。
2.4.1基于脆弱点数据库的扫描
首先构造扫描的环境模型,对系统中可能存在的脆弱点、过往黑客攻击案例和系统管理员的安全配置进行建模与分析。其次基于分析的结果,生成一套标准的脆弱点数据库及匹配模式。最后由程序基于脆弱点数据库及匹配模式自动进行扫描工作。脆弱点扫描的准确性取决于脆弱点数据库的完整性及有效性。
2.4.2基于插件的扫描
插件是由脚本语言编写的子程序模块,扫描程序可以通过调用插件来执行扫描。添加新的功能插件可以使扫描程序增加新的功能,或者增加可扫描脆弱点的类型与数量。也可以升级插件来更新脆弱点的特征信息,从而得到更为准确的结果。插件技术使脆弱点扫描软件的升级维护变得相对简单,而专用脚本语言的使用也简化了编写新插件的编程工作,使弱点扫描软件具有很强的扩展性。
2.5防火墙规则探测
采用类似于traceroute的ip数据包分析法,检测能否给位于过滤设备后的主机发送一个特定的包,目的是便于漏洞扫描后的入侵或下次扫描的顺利进行。通过这种扫描,可以探测防火墙上打开或允许通过的端口,并且探测防火墙规则中是否允许带控制信息的包通过,更进一步,可以探测到位于数据包过滤设备后的路由器。
3 常见漏洞扫描程序
通常在制定漏洞扫描策略时,扫描者会考虑程序的操作系统、所应用的技术、易用性、准确性等因素。其中,程序的可用性是最重要的,也是最基本的,但是可控性和准确性同样不容忽视。
3.1 unix/linux平台
3.1.1 hping
hping支持tcp、udp、icmp、raw-ip多种协议。特点在于能进行ping扫描、端口扫描、0s探测、防火墙探测等多种扫描,并能自定义发送的icmp/udp/tcp包到目标地址并且显示响应信息。
3.1.2 icmpush&icmpquery
icmpush&icmpquery的特点在于完全应用了icmp协议,可以定制icmp包的结构以及种类。扫描者可以用这套工具把目标网络的各个子网全部查找出来,从而可以撇开广播地址而集中扫描某几个特定的子网。
3.1.3 xprobe 2
是专业的端口扫描、os探测程序。特点在于自身的0s特征数据库详细,进行os探测的可靠性较好。
3.1.4 thc-anap
os探测程序。特点在于扫描速度快,扫描结果可靠。
3.1.5 whisker
针对cgi的脆弱点探测程序。应用了多线程、多文件扫描技术,脆弱点数据库更新频繁,对扫描结果自行复核,从而扫描结果可靠性好。
3.1.6 nessus
脆弱点探测程序。应用了主动扫描、高速扫描技术,可设置扫描过程。特点在于支持dmz区以及多物理分区网络的大范围扫描。
3.1.7 firewalk
防火墙探测程序。使用类似traceroute的技术来分析ip包的响应,从而测定防火墙的访问控制列表和绘制网络拓扑图。
3.2 windows平台
3.2.1 pinger
是一个图形化的ping扫描工具。特点在于可以指定要ping的ip地址,以图形的形式显示扫描结果,并保存至文本文件。
3.2.2 fport
是端口扫描程序。特点在于可以把扫描出的端口与使用该端口的程序相匹配,扫描速度快,匹配程度较好。
3.2.3 superscan
可以进行ping扫描、端口扫描、0s探测,并且白带一个木马端口列表,可以检测目标计算机是否有木马。
3.2.4 gfilanguard
脆弱点探测程序。特点在于集成了网络审计、补丁管理功能,可以自动生成网络拓扑图、自动补丁管理。
上述漏洞扫描程序及特点如表1所示。
4 结论
一般而言,综合地应用多种扫描方法或扫描程序可以得到比较满意的结果。但是漏洞扫描从其技术原理上分析,有不可忽视的副作用。比如对大范围的 ip地址或者端口进行某种扫描,反复高速的发出特定的连接请求,所造成的结果就是目标网络及主机上存在大量的连接请求数据包,可以造成网络拥塞,主机无法正常使用,这正是dos攻击的方法及表现。因此若要防范漏洞扫描以及可能的dos攻击,要做到以下三点:
1.在防火墙及过滤设备上采用严格的过滤规则,禁止扫描的数据包进入系统。
2.主机系统除了必要的网络服务外,禁止其它的网络应用程序。
3.对于只对内开放的网络服务,更改其提供服务的端口。
此外,网络扫描时发送的数据或多或少都会含有扫描者自身相关信息,从而也可以抓取扫描时的数据包,对扫描者进行反向追踪,这也是一个值得研究的方向。
芯片竞争异常激烈,恩智浦遭遇困境
JTAG 连接器和接口
SRAM和DRAM的区别在哪
西门子1500系列创建轴并模拟运行的过程
薄膜瑕疵在线检测仪的详细介绍
漏洞扫描原理及程序
rpm命令参数列表
浅谈离子电池分容技术的二种解释
环网柜和开关柜的区别
液压系统的组成及优缺点_液压系统的维护
骁龙835神补刀联发科X30,降价近2成卖给小米!
高通5G基带和完整解决方案,助阵国产厂商占领国际市场
LG制造的OLED电视在日本市场销量中排名第三
工业机器人将成为为阿里铸造行业的核心力量
英特尔收购了以色列人工智能公司提高人工智能的能力
复合电视信号
硅胶加热器中热保护器的工作原理-HCET海川温控
TH1520是思必驰推出的一款聚焦于语音应用场景下的AI专用芯片
从“星链”看我国卫星互联网的发展
区块链币圈现在的情况是怎样的