【软考架构】第4章 信息安全的抗攻击技术
密钥的选择
密钥在概念上被分成两大类:数据加密密钥(DK)和密钥加密密钥(KK)。前者直接对数据进行操作,后者用于保护密钥,使之通过加密而安全传递。算法的安全性在于密钥。如果密钥由脆弱的密码程序生成,那么整个系统都将处于极其脆弱的环境中,当攻击者能够分析密钥生成算法时,也就无须分析密码算法了。为对抗攻击者的攻击,密钥生成需要考虑3个方面的因素。
1.增大密钥空间
一个密码算法的密钥若设为N位,那么该密钥空间为2^。显然,若某加密程序限制了密钥的位数,那么密钥空间随之减小,特别是当密钥生成程序比较脆弱的话,将导致密钥能够轻易被破译。例如,采用各种专用蛮力攻击硬件和并行技术,无论是对于一台机器甚至是多台机器并行处理,只要每秒测试100万个密钥,破译8字节以下小写字母和小写字母与数字构成的密钥、7字节以下字母数字密钥、6字节以下可打印字母密钥和ASCIII字符密钥以及5字节以下8位的ASCII字符密钥都是可以的。另外随着计算机设备的不断改进,对破译的时间和条件要求也越来越少。
加长密钥位数,增大密钥空间,对阻止攻击是很有帮助的。例如,采用穷举搜索所有密钥的时间,对于8位ASCII字符(256个)在4字节密钥空间下只需要1.2小时,在6字节密钥空间下需要8.9年,而在8字节情况下需要580000年!明显增加了攻击的难度。
2.选择强钥
在实际应用中,人们为了能方便记忆,往往选择较弱的密钥,如选择“Klone”,而不是“*9(hH\A-”。简单的密钥方便了人们的记忆,也方便了攻击者的测试。对于公钥算法,不同的算法对强钥的选择也有不同的规定。
3.密钥的随机性
好的生成密钥是一个随机位串。会话密钥的产生,用随机数作为会话密钥;公钥密码算法也采用随机数作为密钥。密钥位可从可靠的随机源获得,如一些物理噪声产生器、离子辐射脉冲检测器、气体放电关、漏电容等;也可从安全的伪随机数发生器借助于安全的密码算法来产生,只要设计得好,能通过各种随机性检验就具有伪随机性。
随机数序列需满足随机性和不可预测性的要求。首先,均匀分布和独立性可以用来保证随机数的随机性,数列中每个数的出现频率应基本相等且均不能由其他数推出。在设计密码算法时,经常会使用一种称为伪随机数列的数列。例如在RSA算法中素数的产生。一般情况下,决定一个大数N是否为素数是很困难的。最原始的方法就是用每个比N1/2小的数去除N,如果N很大,比如10160,这一方法则超出人类的分析能力和计算能力。另外在相互认证和会话密钥的产生等应用中,更要求数列中以后的数是不可预测的。
拒绝服务攻击与防御
拒绝服务攻击DoS(Denial of Service)是由人为或非人为发起的行动,使主机硬件、软件或者两者同时失去工作能力,使系统不可访问并因此拒绝合法的用户服务要求。拒绝服务攻击的主要企图是借助于网络系统或网络协议的缺陷和配置漏洞进行网络攻击,使网络拥塞、系统资源耗尽或者系统应用死锁,妨碍目标主机和网络系统对正常用户服务请求的及时响应,造成服务的性能受损甚至导致服务中断。
由于目前个人计算机或者服务器系统的性能逐渐在提升,网络带宽也由原来的10Mb/s逐步提升到1000Mb/s甚至是10kMb/s,个人对其他主机发起攻击行为,要使其性能受损或者服务中断,非常困难。目前常见的拒绝服务攻击为分布式拒绝服务攻击DDoS(Distributed Denial ofService)。
要对服务器实施拒绝服务攻击,有两种思路:
(1)服务器的缓冲区满,不接收新的请求。
(2)使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接。这也是DoS攻击实施的基本思想。
1.传统拒绝服务攻击的分类
拒绝服务攻击有许多种,网络的内外部用户都可以发动这种攻击。内部用户可以通过长时间占用系统的内存、CPU处理时间使其他用户不能及时得到这些资源,而引起拒绝服务攻击;外部黑客也可以通过占用网络连接使其他用户得不到网络服务。本节主要讨论外部用户实施的拒绝服务攻击。外部用户针对网络连接发动拒绝服务攻击主要有以下几种模式:(1)消耗资源。计算机和网络需要一定的条件才能运行,如网络带宽、内存、磁盘空间、CPU时间。攻击者利用系统资源有限这一特征,或者是大量地申请系统资源,并长时间地占用;或者是不断地向服务程序发请求,使系统忙于处理自己的请求,而无暇为其他用户提供服务。攻击者可以针对以下几种资源发起拒绝服务攻击。
●针对网络连接的拒绝服务攻击;
●消耗磁盘空间;
●消耗CPU资源和内存资源。
(2)破坏或更改配置信息。计算机系统配置上的错误也可能造成拒绝服务攻击,尤其是服务程序的配置文件以及系统、用户的启动文件。这些文件一般只有该文件的属主才可以写入,如果权限设置有误,攻击者(包括已获得一般访问权的黑客与恶意的内部用户)可以修改配置文件,从而改变系统向外提供服务的方式。
(3)物理破坏或改变网络部件。这种拒绝服务针对的是物理安全,一般来说,通过物理破坏或改变网络部件以达到拒绝服务的目的。其攻击的目标有:计算机、路由器、网络配线室、网络主干段、电源、冷却设备、其他的网络关键设备。
(4)利用服务程序中的处理错误使服务失效。最近出现了一些专门针对Windows系统的攻击方法,如LAND等等。被这些工具攻击之后,目标机的网络连接就会莫名其妙地断掉,不能访问任何网络资源或者出现莫名其妙的蓝屏,系统进入死锁状况。这些攻击方法主要利用服务程序中的处理错误,发送一些该程序不能正确处理的数据包,引起该服务进入死循环。
2.分布式拒绝服务攻击DDoS
分布式拒绝服务DDoS攻击是对传统DoS攻击的发展,攻击者首先侵入并控制一些计算机,然后控制这些计算机同时向一个特定的目标发起拒绝服务攻击。传统的拒绝服务攻击有受网络资源的限制和隐蔽性差两大缺点,而分布式拒绝服务攻击却克服了传统拒绝服务攻击的这两个致命弱点。分布式拒绝服务攻击的隐蔽性更强。通过间接操纵网络上的计算机实施攻击,突破了传统攻击方式从本地攻击的局限性。被DDoS攻击时可能的现象有:
(1)被攻击主机上有大量等待的TCP连接。
(2)大量到达的数据分组(包括TCP分组和UDP分组)并不是网站服务连接的一部分,往往指向机器的任意端口。
(3)网络中充斥着大量无用的数据包,源地址为假。
(4)制造高流量的无用数据造成网络拥塞,使受害主机无法正常和外界通信。
(5)利用受害主机提供的服务和传输协议上的缺陷,反复发出服务请求,使受害主机无法及时处理所有正常请求。
(6)严重时会造成死机。
DDoS引入了分布式攻击和Client/Server结构,使DoS的威力激增。同时,DDoS囊括了已经出现的各种重要的DoS攻击方法,比DoS的危害性更大。现有的DDoS工具一般采用三级结构,如图4-8所示,其中Client(客户端)运行在攻击者的主机上,用来发起和控制DDoS攻击;Handler(主控端)运行在已被攻击者侵入并获得控制的主机上,用来控制代理端;Agent(代理端)运行在已被攻击者侵入并获得控制的主机上,从主控端接收命令,负责对目标实施实际的攻击。
3.拒绝服务攻击的防御方法
操作系统和网络设备的缺陷在不断地被发现,并被攻击者利用来进行恶意的攻击。如果清楚地认识到这一点,应当使用下面的方法尽量阻止拒绝服务攻击。
(1)加强对数据包的特征识别,攻击者在传达攻击命令或发送攻击数据时,虽然都加入了伪装甚至加密,但是其数据包中还是有一些特征字符串。通过搜寻这些特征字符串,就可以确定攻击服务器和攻击者的位置。
(2)设置防火墙监视本地主机端口的使用情况。对本地主机中的敏感端口,如UDP 31335、UDP27444、TCP 27665进行监视,如果发现这些端口处于监听状态,则系统很可能受到攻击。即使攻击者已经对端口的位置进行了一定的修改,但如果外部主机主动向网络内部高标号端口发起连接请求,则系统也很可能受到侵入。
(3)对通信数据量进行统计也可获得有关攻击系统的位置和数量信息。例如,在攻击之前,目标网络的域名服务器往往会接收到远远超过正常数量的反向和正向的地址查询。在攻击时,攻击数据的来源地址会发出超出正常极限的数据量。
(4)尽可能的修正已经发现的问题和系统漏洞。
欺骗攻击与防御
1.ARP欺骗
1)ARP欺骗原理
ARP原理:某机器A要向主机C发送报文,会查询本地的ARP缓存表,找到C的IP地址对应的MAC地址后,就会进行数据传输。如果未找到,则广播一个ARP请求报文(携带主机A的IP地址Ia——物理地址AA:AA:AA:AA),请求IP地址为Ic的主机C回答物理地址Pc。网上所有主机包括C都收到ARP请求,但只有主机C识别自己的IP地址,于是向A主机发回一个ARP响应报文。其中就包含有C的MAC地址CC:CC:CC:CC,A接收到C的应答后,就会更新本地的ARP缓存。接着使用这个MAC地址发送数据(由网卡附加MAC地址)。因此,本地高速缓存的这个ARP表是本地网络流通的基础,而且这个缓存是动态的。
ARP协议并不只在发送了ARP请求才接收ARP应答。当计算机接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中。因此,局域网中的机器B首先攻击C,使C瘫痪,然后向A发送一个自己伪造的ARP应答,而如果这个应答是B冒充C伪造来的,即IP地址为C的IP,而MAC地址是B的,则当A接收到B伪造的ARP应答后,就会更MAC: CC:CC:CC:CC新本地的ARP缓存,这样在A看来C的IP地址没有变,而它的MAC地址已经变成B的了。由于局域网的网络C流通不是根据IP地址进行,而是按照使C瘫痪MAC地址进行传输。如此就造成A传MAC: BB:BB:BB:BBA送给C的数据实际上是传送到B。这就是一个简单的ARP欺骗,如图4-9所示。
2)ARP欺骗的防范措施
(1)在Win XP下输入命令:arp -s gate-way-ip gate-way-mac固化ARP表,阻止ARP欺骗。
(2)使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。
(3)采用双向绑定的方法解决并且防止ARP欺骗。
(4)ARP防护软件——ARP Guard。通过系统底层核心驱动,无须安装其他任何第三方软件(如WinPcap),以服务及进程并存的形式随系统启动并运行,不占用计算机系统资源。无须对计算机进行IP地址及MAC地址绑定,从而避免了大量且无效的工作量。也不用担心计算机会在重启后新建ARP缓存列表,因为此软件是以服务与进程相结合的形式存在于计算机中,当计算机重启后软件的防护功能也会随操作系统自动启动并工作。
2. DNS欺骗
DNS欺骗是一种比较常见的攻击手段。一个著名的利用DNS欺骗进行攻击的案例是,全球著名网络安全销售商RSA Security的网站所遭到的攻击。其实RSA Security网站的主机并没有被入侵,而是RSA的域名被黑客劫持,当用户连上RSA Security时,发现主页被改成了其他的内容。
1)DNS欺骗的原理
DNS欺骗首先是冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。
2)DNS欺骗的现实过程
如图4-10所示,www.xxx.com的IP地址为202.109.2.2,如果www.angel.com向xxx.com的子域DNS服务器查询www.xxx.com的IP地址时,www.heike.com冒充DNS向www.angel.com回复www.xxx.com的IP地址为200.1.1.1,这时www.angel.com就会把200.1.1.1当www.xxx.com的地址了。当www.angel.com连www.xxx.com时,就会转向那个虚假的IP地址了,这样对www.xxx.com来说,就算是给黑掉了。因为别人根本连接不上他的域名。
3)DNS欺骗的检测
根据检测手段的不同,将其分为被动监听检测、虚假报文探测和交叉检查查询3种。
(1)被动监听检测。该检测手段是通过旁路监听的方式,捕获所有DNS请求和应答数据包,并为其建立一个请求应答映射表。如果在一定的时间间隔内,一个请求对应两个或两个以上结果不同的应答包,则怀疑受到了DNS欺骗攻击,因为DNS服务器不会给出多个结果不同的应答包,即使目标域名对应多个IP地址,DNS服务器也会在一个DNS应答包中返回,只是有多个应答域(Answer Section)而已。
(2)虚假报文探测。该检测手段采用主动发送探测包的手段来检测网络内是否存在DNS欺骗攻击者。这种探测手段基于一个简单的假设:攻击者为了尽快地发出欺骗包,不会对域名服务器IP的有效性进行验证。这样如果向一个非DNS服务器发送请求包,正常来说不会收到任何应答,但是由于攻击者不会验证目标IP是否是合法DNS服务器,他会继续实施欺骗攻击,因此如果收到了应答包,则说明受到了攻击。
(3)交叉检查查询。所谓交叉检查即在客户端收到DNS应答包之后,向DNS服务器反向查询应答包中返回的IP地址所对应的DNS名字,如果二者一致说明没有受到攻击,否则说明被欺骗。
3.IP欺骗
1)IP欺骗的原理
通过编程的方法可以随意改变发出的包的IP地址,但工作在传输层的TCP协议是一种相对可靠的协议,不会让黑客轻易得逞。由于TCP是面向连接的协议,所以在双方正式传输数据之前,需要用“三次握手”来建立一个值得信赖的连接。假设是hosta和hostb两台主机进行通信,hostb首先发送带有SYN标志的数据段通知hosta建立TCP连接,TCP的可靠性就是由数据包中的多位控制字来提供的,其中最重要的是数据序列SYN和数据确认标志ACK。B将TCP报头中的SYN设为自己本次连接中的初始值(ISN)。
假如想冒充hostb对hosta进行攻击,就要先使hostb失去工作能力。也就是所谓的拒绝服务攻击,让hostb瘫痪。
2)IP欺骗的防范
虽然IP欺骗攻击有着相当难度,但这种攻击非常广泛,入侵往往由这里开始。预防这种攻击可以删除UNIX中所有的/etc/hosts.equiv、$HOME/.rhosts文件,修改/etc/inetd.conf文件,使得RPC机制无法应用。另外,还可以通过设置防火墙过滤来自外部而信源地址却是内部IP的报文。
端口扫描
网络中的每一台计算机如同一座城堡,在这些城堡中,有的对外完全开放,有的却是紧锁城门。在网络技术中,把这些城堡的城门称之为计算机的“端口”。端口扫描是入侵者搜集信息的几种常用手法之一,也正是这一过程最容易使入侵者暴露自己的身份和意图,所以利用暴露的信息可以防范此类攻击。一般来说,扫描端口有如下目的。
(1)判断目标主机上开放了哪些服务。
(2)判断目标主机的操作系统。
如果入侵者掌握了目标主机开放了哪些服务,运行何种操作系统,他们就能够使用相应的手段实现入侵。
1.端口扫描原理
端口在计算机网络领域中是个非常重要的概念。它是专门为计算机通信而设计的,它不是硬件,不同于计算机中的“插槽”,可以说是个“软插槽”。如果有需要的话,一台计算机中可以有上万个端口。
端口是由计算机的通信协议TCP/IP协议定义的。TCP/IP协议规定,用IP地址和端口作为套接字,它代表TCP连接的一个连接端,一般称为Socket。具体来说,就是用[IP:端口]来定位一台主机中的进程。可以做这样的比喻,端口相当于两台计算机进程间的大门,可以随便定义,其目的只是为了让两台计算机能够找到对方的进程。计算机就像一座大楼,这个大楼有好多入口(端口),进到不同的入口中就可以找到不同的公司(进程)。如果要和远程主机A的程序通信,那么只要把数据发向[A:端口]就可以实现通信了。
端口扫描就是尝试与目标主机的某些端口建立连接,如果目标主机该端口有回复(见三次握手中的第二次),则说明该端口开放,即为“活动端口”。
2.扫描原理分类
(1)全TCP连接。这种扫描方法使用三次握手,与目标计算机建立标准的TCP连接。需要说明的是,这种古老的扫描方法很容易被目标主机记录。
(2)半打开式扫描(SYN扫描)。在这种扫描技术中,扫描主机自动向目标计算机的指定端口发送SYN数据段,表示发送建立连接请求。
●如果目标计算机的回应TCP报文中SYN=1,ACK=1,则说明该端口是活动的,接着扫描主机传送一个RST给目标主机拒绝建立TCP连接,从而导致三次握手的过程失败。
●如果目标计算机的回应是RST,则表示该端口为“死端口”,这种情况下,扫描主机不用做任何回应。
由于扫描过程中,全连接尚未建立,所以大大降低了被目标计算机记录的可能性,并且加快了扫描的速度。
(3)FIN扫描。在前面介绍过的TCP报文中,有一个字段为FIN,FIN扫描则依靠发送FIN来判断目标计算机的指定端口是否是活动的。
发送一个FIN=1的TCP报文到一个关闭的端口时,该报文会被丢掉,并返回一个RST报文。但是,如果当FIN报文到一个活动的端口时,该报文只是被简单的丢掉,不会返回任何回应。
从FIN扫描可以看出,这种扫描没有涉及任何TCP连接部分。因此,这种扫描比前两种都安全,可以称之为秘密扫描。
(4)第三方扫描。第三方扫描又称“代理扫描”,这种扫描是利用第三方主机来代替入侵者进行扫描。这个第三方主机一般是入侵者通过入侵其他计算机而得到的,该“第三方”主机常被入侵者称之为“肉鸡”。这些“肉鸡”一般为安全防御系数极低的个人计算机。
强化TCP/IP堆栈以抵御拒绝服务攻击
针对TCP/IP堆栈的攻击方式有多种类型,下面分别介绍攻击原理及抵御方法。
1.同步包风暴(SYN Flooding)
同步包风暴是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,是应用最广泛的一种DoS攻击方式,它的原理虽然简单,但使用起来却十分有效。
问题出在TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端),并等待一段时间后丢弃这个未完成的连接,这段时间的长度称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒~2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源——数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP堆栈不够强大,最后的结果往往是堆栈溢出崩溃。即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应。这种情况被称作:服务器端受到了SYN Flooding攻击。
如果攻击者盗用的是某台可达主机X的IP地址,由于主机X没有向主机D发送连接请求,所以当它收到来自D的SYN+ACK包时,会向D发送RST包,主机D会将该连接重置。因此,攻击者通常伪造主机D不可达的IP地址作为源地址。攻击者只要发送较少的、来源地址经过伪装,而且无法通过路由达到的SYN连接请求至目标主机提供TCP服务的端口,将目的主机的TCP缓存队列填满,就可以实施一次成功的攻击。实际情况下,攻击者往往会持续不断地发送SYN包,故称为“SYN洪水”。
可以通过修改注册表防御SYN Flooding攻击,修改键值位于注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet Services的下面,如表4-1所示。
2. ICMP攻击
ICMP协议是TCP/IP协议集中的一个子协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标,IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。我们可以通过Ping命令发送ICMP回应请求消息并记录收到ICMP回应的回复消息,通过这些消息来对网络或主机的故障提供参考依据。
ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。比如,前面提到的“Ping of Dcath”攻击就是利用操作系统规定的ICMP数据包的最大尺寸不超过64KB这一规定,达到使TCP/IP堆栈崩溃、主机死机的效果。
可以通过修改注册表防御ICMP攻击,修改键值位于注册表项HKLMSystem CurrentControlSet\Services\AFD\Parameters的下面,如表4-2所示。
3.SNMP攻击
SNMP是TCP/IP网络中标准的管理协议,它允许网络中的各种设备和软件,包括交换机、路由器、防火墙、集线器、操作系统、服务器产品和部件等,能与管理软件通信,汇报其当前的行为和状态。但是,SNMP还能被用于控制这些设备和产品,重定向通信流,改变通信数据包的优先级,甚至断开通信连接。总之,入侵者如果具备相应能力,就能完全接管你的网络。
可以通过修改注册表项HKLMSystem CurrentControlSet Services TcpiplParameters的键值防御SNMP攻击,如表4-3所示。
系统漏洞扫描
系统漏洞扫描指对重要计算机信息系统进行检查,发现其中可能被黑客利用的漏洞。系统漏洞扫描的结果是对系统安全性能的一个评估,指出了哪些攻击是可能的,因此,成为安全方案的一个重要组成部分。目前,从底层技术来划分,可以将系统漏洞扫描分为基于网络的扫描和基于主机的扫描这两种类型。
1.基于网络的漏洞扫描
基于网络的漏洞扫描器,是通过网络来扫描远程计算机中的漏洞。比如,利用低版本的DNS Bind漏洞,攻击者能够获取root权限,侵入系统或者攻击者能够在远程计算机中执行恶意代码。使用基于网络的漏洞扫描工具,能够监测到这些低版本的DNS Bind是否在运行。一般来说,基于网络的漏洞扫描工具可以看作为一种漏洞信息收集工具,根据不同漏洞的特性,构造网络数据包,发给网络中的一个或多个目标服务器,以判断某个特定的漏洞是否存在。基于网络的漏洞扫描器,一般由以下几个方面组成。
(1)漏洞数据库模块。漏洞数据库包含了各种操作系统的各种漏洞信息,以及如何检测漏洞的指令。
(2)用户配置控制台模块。用户配置控制台与安全管理员进行交互,用来设置要扫描的目标系统以及扫描哪些漏洞。
(3)扫描引擎模块。扫描引擎是扫描器的主要部件。根据用户配置控制台部分的相关设置,扫描引擎组装好相应的数据包,发送到目标系统,将接收到的目标系统的应答数据包与漏洞数据库中的漏洞特征进行比较,来判断所选择的漏洞是否存在。
(4)当前活动的扫描知识库模块。通过查看内存中的配置信息,该模块监控当前活动的扫描,将要扫描的漏洞的相关信息提供给扫描引擎。
(5)结果存储器和报告生成工具。报告生成工具,利用当前活动扫描知识库中存储的扫描结果,生成扫描报告。
基于网络的漏洞扫描器有很多优点:
(1)基于网络的漏洞扫描器的价格相对来说比较便宜。
(2)基于网络的漏洞扫描器在操作过程中,不需要涉及目标系统的管理员。
(3)基于网络的漏洞扫描器在检测过程中,不需要在目标系统上安装任何东西。(4)维护简便。当企业的网络发生了变化的时候,只要某个结点能够扫描网络中的全部目标系统,基于网络的漏洞扫描器不需要进行调整。
2.基于主机的漏洞扫描
基于主机的漏洞扫描器,扫描目标系统漏洞的原理与基于网络的漏洞扫描器的原理类似,但是两者的体系结构不一样。基于主机的漏洞扫描器通常在目标系统上安装了一个代理(Agent)或者是服务(Services),以便能够访问所有的文件与进程,这也使得基于主机的漏洞扫描器能够扫描更多的漏洞。
基于主机的漏洞扫描优点:
(1)扫描的漏洞数量多。
(2)集中化管理。基于主机的漏洞扫描器通常都有个集中的服务器作为扫描服务器。所有扫描的指令,均从服务器进行控制,这一点与基于网络的扫描器类似。服务器下载到最新的代理程序后,再分发给各个代理。这种集中化管理模式,使得基于主机的漏洞扫描器在部署上能够快速实现。
(3)网络流量负载小。由于ESM管理器与ESM代理之间只有通信的数据包,漏洞扫描部分都由ESM代理单独完成,这就大大减少了网络的流量负载。当扫描结束后,ESM代理再次与ESM管理器进行通信,将扫描结果传送给ESM管理器。