李佳倩 吴承荣 周 荃
(复旦大学计算机科学技术学院网络与信息安全研究所 上海 200433)
尽管信息安全保障技术发展迅猛,信息系统的安全防护能力不断提升,但依然无法阻止各类新型的网络攻击。近年来各类网络入侵和信息窃取事件依然经常发生,信息系统的安全仍然是一个严重的问题。网络攻击和入侵事件无法根绝的重要原因之一是攻击者和防御者之间存在攻防代价不对称的现象。首先,攻击从“点”,防御从“面”。在当前IT系统技术基础上,无论开发人员多么努力,漏洞总是不可避免的,这就给了攻击者成功实施攻击的可能。攻击者只要针对系统某个薄弱点实施攻击即可得手,而防御者必须对整个攻击表面进行均衡的防护,代价远高于攻击者。其次,攻击方处“动”,而防御方处“静”。目前的主流信息系统大都呈现出确定性、静态性和同质性的特点,使得攻击者有足够时间去分析目标系统,发现和探测存在的漏洞,并不断变换攻击手段,直至达到目标。此外,攻击者在“暗”,防御者在“明”。攻击者可以不断获取、收集系统中有利于攻击的信息,而不易被发现;防御者则难以洞悉攻击者的行为、目的以及当前的状态,尤其在面对APT攻击时。综上所述,在现有的网络攻防形势中,攻击者在成本、时间、信息方面均占据优势地位。
移动目标防御(Moving Target Defense,MTD)是为了“改变网络攻防游戏规则”而提出的。MTD是指试图通过增加系统的动态性、随机性和异构性来增加网络攻击的复杂性,从而保护信息系统的一系列技术[1]。MTD并不是指一个具体的方法和技术,而是一种主动防御的理念。它可以指任何一种引入移动性、多样性、不确定性等特性的技术。从作用于IT系统的不同层次的角度,MTD机制一般可以分为网络层MTD、系统层MTD和应用层MTD。
IP地址跳变技术是一种典型的网络层MTD,通过随机变迁主机的IP地址,使得攻击者无法持续瞄准静态攻击目标进行扫描和入侵。IP地址是攻击者实施远程网络攻击的必要因素之一,如果无法获取攻击目标的IP地址,则无法实施端口扫描、漏洞扫描和利用漏洞进行攻击。然而即使采用了IP地址跳变技术,攻击者依然能够采用扫描技术获取跳变以后的IP地址信息,只是成功获取IP地址的概率理论上有所降低。当前IPv4依然是主流,地址资源并不丰富,而扫描效率则随着网络带宽以及计算能力的增长而得到不断提升,在当前普遍的网络资源供给场景下,IP地址跳变机制是否能够带来预期的防御能力提升;如何优化IP地址跳变的相关参数,使得其对系统的带来的影响尽可能小,而对抗扫描能力的提升尽可能大,这是值得深入研究的问题。本文提出了针对IP地址跳变机制的抗扫描能力评估方法,揭示了抗扫描能力与若干IP地址跳变相关参数以及网络资源条件之间的关系,为IP地址跳变机制的优化提供了参考。
IP地址跳变又称为网络地址洗牌(Network Address Shuffling)和IP地址空间随机化(IP Address Space Randomization),这是一种通过改变IP地址以增加IP地址扫描和DOS攻击难度的机制。近年来有几种经典的IP地址跳变方法被提出。
动态网络地址转换(Dynamic Network Address Translation, DyNAT)[2]使用DyNAT Shim(安装在客户端机器上的软件)和DyNAT Gateway(独立的装置或设备)的配合,基于预共享密钥来变换和恢复网络数据包中的服务端IP地址和端口。因此,在不可信网络中传输的数据包中的服务端IP地址和端口被混淆了,但这些数据包仍然可以通过路由器被传递到服务器所在的子网(IP地址的变化范围在服务端子网范围内)。服务器所处子网的内部通信则不受地址跳变机制的保护。
网络地址空间随机化(Network Address Space Randomization,NASR)[3]使用经过改进的DHCP服务器来重新分配主机的IP地址,并使用DNS根据的主机名定位到当前的IP地址。它是一种主机型IP地址跳变机制,可以保护子网中的每一个主机。但这种跳变机制在进行IP地址跳变时TCP连接会被中断。为了尽量减少干扰,研究人员也提出了一些解决方案,例如采用活动监视模块跟踪每个主机的开放连接,对于服务可能被中断的主机,不进行地址跳变。因此,对于那些比较“繁忙”的主机,IP地址是不会跳变的,这就会削弱地址跳变的作用。
可变网络(MUTE)[4]采用随机地址跳变机制,定期将一个随机虚拟IP地址分配给主机,但主机的实际地址并不改变。随机虚拟IP地址基于共享的随机密钥,采用密码函数在网络上同步生成,并采用DNS获取当前分配的地址。该机制同时还采用随机指纹机制(Random Finger Printing mechanism),截获主机响应并透明地进行修改,从而使攻击者获得的操作系统和应用程序标识信息是经过随机伪装的。然而它依然使用DNS,因此更改后的虚拟IP地址仍然可以通过DNS定位,此外,它没有提供针对客户端攻击的保护机制[1]。
移动目标IPv6防御(Moving Target IPv6 Defense,MT6D)[5]充分利用了IPv6带来的广阔地址空间优势。它使用IPv6上UDP隧道将原始数据包(带有原始IP地址)封装在IPv6数据包中,并在新的数据包中使用经过变化的IP地址。其采用主机的EUI-64 IID、时间戳和预共享密钥的散列形成动态IID;使用IPv6 NDP通知路由器以验证所要跳变的新地址不会发生冲突。它可以作为嵌入式软件,也可以作为独立设备来实现。但是,这种机制必须采用密码机制对数据包进行加密,否则攻击者可以提取封装在UDP隧道中的原始数据包,从而确定发送方和接收方,因此也增加了系统开销,对现有的网络入侵检测和网络审计等安全机制的效能也有所削弱。
基于OpenFlow的随机主机变异(OpenFlow Random Host Mutation,OF-RHM)[6]使主机的真实IP地址(RIP)保持不变,使用OpenFlow控制器为每个主机分配一个随机的短时虚拟IP(VIP)。交换机或子网网关执行从RIP到VIP的转换。由一个中央管理器负责协调跨网络的“变异”。因此,IP地址跳变对终端主机是完全透明的。它实际上是一个网络到网络的解决方案,但是如果所有的交换机都支持OpenFlow,它可以产生主机到主机的IP地址跳变效果。然而这种机制的IP地址跳变是由控制器实现的,因此当流建立以后,RIP到VIP的映射是固定的。长连接的IP地址将永远不会发生改变,而在长时间静止的IP地址上建立起的连接容易被攻击者劫持。
自屏蔽动态网络体系结构(Self-shielding Dynamic Network Architecture,SDNA)[7]是一种集成的体系结构,它通过多种技术的结合来提供动态的网络特性;利用hypervisor作为中介,采用一个SDNA实体虚拟机(SDNA entity VM)独立地处理(改写)客户虚拟机(Guest VM)之间的通信数据包,并直接与其他的相关的SDNA实体(SDNA Entities)进行协调;使用间接和临时地址(Token IP)来隐藏每个节点和服务的真实地址;采用数据包的散列值形成SDNA位(SDNA bit),嵌入到真实IP中,以提供完整性保护。一旦它发现带有无效SDNA位的数据包,将会把这些数据包重定向到蜜罐。在这个机制中,虽然对于客户虚拟机,真正的IP地址被隐藏,但如果攻击者破坏了中间层,就可以看到真实的IP。真实IP的主机ID部分是静态的,可以用来确定主机和重新组装嗅探到的数据包。
此外,还有其他类型的IP地址跳变技术,例如APOD[8]和RHM[9]等。纵观这些IP地址跳变技术,虽然实现的方法各不相同,但还是存在一些共性:
(1) 在某个环节改变IP地址。各类IP地址跳变机制在数据包生成、传输、接收的不同阶段改变客户端或服务端的IP地址。有些IP地址跳变机制保持客户端和服务端收到的数据包中的IP地址的静态性,而在传输中途改变IP地址。改变IP地址的努力主要是为了使假想攻击方(网络嗅探者、远程攻击扫描、恶意客户虚拟机等不同对象)无法使用一个固定IP瞄准攻击目标。
(2) 具备配套的同步机制。各类IP地址跳变机制均需要保证正常的网络通信,因此需要同步机制使得网络上的正常合法通信方能够及时获得跳变方的动态IP地址。有些机制采用DNS机制,有些则充分利用SDN技术、Hypervisor层部件等;有些需要主机层面相关部件的参与同步,有些只需要网关、网络设备等部件参与同步,对上层应用软件透明。
根据执行IP地址跳变机制的实体的不同,我们可以将IP地址跳变机制大致分为两种类型:主机型和网关型。主机型IP地址跳变机制主动更改主机上的IP地址配置;网关型IP地址跳变机制使用处于网络传输途径中的相关设备或装置(硬件或软件形式)来更改主机传输的数据包中的IP地址(或端口)字段。两类跳变机制均能实现针对攻击者视角的IP地址跳变,但产生的效果有很大不同。
通常网关型的IP地址跳变机制具有更多的优势。这一类的机制可以保持主机的网络配置不变,IP地址跳变对主机透明。通常当IP地址跳变发生时,TCP连接不会被中断。但是这些方法只为网络飞地(Enclave)之间的通信提供保护,网络飞地内部的通信不受保护。随着虚拟化技术的应用,可以将Hypervisor或支持SDN的设备用作网关,实现网关型IP地址跳变机制,但在对主机透明的同时具有主机粒度的IP地址跳变效果。然而,正是由于网关型IP地址跳变机制的透明特性,使得某些依赖真实IP地址的应用程序可能无法正常工作(例如,诸如FTP等协议在应用层有效载荷中存在IP信息,某些情况下还会导致某些中间处理环节,如状态检测防火墙、应用网关等,出现错误操作)。
基于主机的IP地址跳变机制实际改变了主机的网络配置。IP地址跳变对主机而言是不透明的。当IP地址跳转时,TCP连接将被中断。然而主机型IP地址跳变机制也有一些优点。主机型IP地址跳变机制可以达到主机粒度,网络飞地中的所有主机都可以受到保护。IP地址跳变所需的运算任务被分担到所有主机,在数据包传输路径中不会有瓶颈(不依赖于某个mid-box的性能)。在网络传输路径上不需要额外的mid-box设备(或充当网关的软件),所有的IP地址跳变环节都可以由对等主机完成。它适用于互联网上的一个单独主机连接到飞地中某个主机的场景。IP地址跳变可以被应用软件所感知,因此应用软件可以根据IP的跳变进行一些操作上的调整(例如,纠正一些由IP变化引起的问题)。
可充分利用多地址通信机制,实现“渐变型”的IP地址跳变,实现更平滑的网络通信。例如利用MPTCP、SCTP(Stream Control Transmission Protocol)等,可使用多个IP地址在通信双方之间建立多个子流,某几条子流的中断不会使整个流中断。Reese Moore等在MT6D基础上,提出了新的改进机制,将MT6D中封装原始数据包所采用的UDP换成SCTP,将显著提高性能[10]。Argonne国家实验室的COAR也提出了一种称为“流分裂移动目标防御”(Stream Splitting Moving Target Defense,SS-MTD)机制,也采用将并行多条TCP连接与MTD相结合的思路。
与IP地址跳变机制相配套的还有端口跳变机制。这里的“端口”包括TCP端口和UDP端口。只要通信双方对于服务端软件的监听端口建立同步机制,就可以以一定的时间间隔改变服务端软件所绑定的端口。这样可进一步拓宽服务入口的变化空间。一个服务入口可以标识为“IP-端口”组成的二元组。IP地址跳变机制需要对全子网范围的IP资源统一控制,因为IP地址是全子网共享资源,但“端口”是主机本地资源,端口跳变只需要在主机范围进行控制即可。对于服务器而言,IP地址和端口进行组合跳变,其本质是使得服务入口发生转移。
针对IP地址跳变机制有效性的量化评估方法,在MTD领域已开展了若干研究。
文献[11]总结了网络地址空间数、探测地址数、活跃地址数、攻击者预期探测数以及IP地址跳变频率这五个因素对扫描成功概率的影响,采用urn模型针对静态系统和完美跳变(Perfect Hopping,指系统在每次连接后均进行IP地址跳变)这两种极端情况进行随机扫描成功概率的量化分析,并采用实验方式测试跳变率处于这两种极端情况之间的系统抗扫描能力。假设仅有一台活跃主机,随着网络地址空间数以及允许攻击者探测地址数的增加,对于静态系统,扫描成功的概率最终趋于1;对于完美跳变系统,扫描成功的概率趋向于e-1=0.63;当跳变率处于两种情况之间,文献[11]通过实验证明了扫描成功率处于1和0.63之间,跳变率越高,扫描成功率越低。若增加活跃主机数,对于静态系统或支持IP跳变的系统,扫描成功的概率均趋向于1,只有当活跃主机数占总地址数的比例小于1%时,IP地址跳变对于系统的抗扫描能力才能产生有利影响。因此得出结论,只有当扫描空间内活跃主机数很小(小于扫描空间的1%)时,IP地址跳变才能有效提升系统的抗扫描能力,否则优势很小。
文献[12]为抵御DoS攻击,提出了一种基于时间戳的服务跳变体系。主机根据跳变算法以及从中央控制器发出的时间戳来决定当前提供的服务。作者定义静态系统中一次攻击成功的时间(T)=探测时间(Ts)+攻击时间(Ta),假设系统只提供一个服务,可供跳变的IP地址数为n,可供使用的端口数为m,因此在支持跳变的系统中,攻击者成功攻破一个服务所需时间T′为:
(1)
即由于跳变的随机性,攻击者在跳变系统中成功扫描到一个服务需要额外花费(n×m-1)/2个攻击时间。作者分别针对集中式跳变系统和分布式跳变系统讨论并实验验证了跳变间隔对抗DoS攻击的影响,得出结论:1) 支持端口与地址同时跳变的系统抗DoS攻击性能优于仅支持端口跳变以及不支持跳变的系统;2) 分布式跳变系统良好的可扩展性带来了更高的可用性;3) 跳变越复杂、跳变间隔越短系统的抗攻击能力越强,但是过短的跳变间隔也会带来很多其他的问题。
文献[9]为解决地址跳变造成的TCP连接中断问题,提出了RHM(Random Host Mutation)技术,地址跳变对终端主机透明,为每台主机随机分配一个短暂的虚拟IP地址,并引入两个转换频率:LFM(Low Frequency mutation)和HFM(High Frequency mutation),以低频率随机选择虚拟IP地址范围,以高频率在该范围内随机选择虚拟IP地址,从而增加了IP地址变换的不可预测性。由于虚拟IP地址处于双重不可预测的变化中,攻击者获得的服务入口空间经过LFM后便会失效,因此若想扫描成功,攻击者需要扫描的服务入口总空间为整个虚拟IP地址范围,从而减小了扫描成功的可能性。
文献[13]假设有一台至少包含一个漏洞的主机,将每次攻击划分为侦查阶段和攻击阶段,讨论了一次攻击所需时长与IP地址跳变间隔对攻击成功率的影响。假设在(ti,tj)时间内主机的IP地址不变,Km表示开始扫描的时间,Kn表示扫描到漏洞开始攻击的时间,若(Km,Kn)⊆(ti,tj),即扫描到漏洞并进行攻击的过程中没有发生地址跳变,则攻击成功。因此,可以通过减少(ti,tj)(即增加IP地址跳变频率)或增加(Km,Kn)(即增加扫描到漏洞的时间)来降低攻击成功的概率。作者将IP跳变频率定义为每小时跳变次数,并分别测试扫描到漏洞所需时间及IP地址跳变频率对攻击成功率的影响,得出结论:1) 当地址跳变频率高于某个特定值时,IP地址跳变频率的增加对攻击成功的概率没有显著影响,将该特定值定义为最佳跳变频率;2) 当扫描时长增长到某值后,时长的增长将不再对攻击成功的概率产生显著影响,因此定义该值为最佳扫描时长。同时,作者给出了这两个最佳因素的公式:最佳跳变频率=1/扫描时长,最佳扫描时长=1/IP地址跳变频率。
尽管已有不少研究试图对IP跳变机制的有效性进行量化评估,但是现有的评估模型尚未针对具有多个活跃服务入口、每次跳变一定比例的服务入口,攻击方采用全面遍历服务空间的顺序扫描以及随机扫描策略,攻击进程跨越多个跳变周期的常见攻防场景进行深入分析和评估,因此没有全面揭示IP地址跳变系统中各类因素对扫描成功概率造成的影响。这也是本文研究的主要内容。
如何评估IP地址跳变机制所带来的抗扫描能力的提升?服务入口的不可预测性与跳变参数以及所处网络的情况(如全子网可用的IP地址资源、子网活跃主机数)之间是否有关系?这需要建立一个模型进行理论评估。我们提出了一个方法来量化评估IP地址跳变机制带来的抗扫描能力,并试图揭示服务入口的不可预测性与一些跳变参数和网络条件之间的关系。
探测特定主机是否存活/开机,可以采用基于ICMP协议的ping方法进行扫描。然而在实际网络中,很多环节ping扫描被禁止。防火墙可以简单地设置禁止ICMP echo数据包从而阻止ping扫描。在ping扫描被禁止的情况下,可以直接采用端口扫描方法,即用TCP Connect方式尝试连接目标IP和端口组合,即可探测在特定主机的特定端口上某个服务是否开放;进一步地,在建立连接的情况下,采用简单的交互,根据返回信息即可获得服务相关的信息,进而判断该服务是否是欲攻击的目标。如果某个服务具有高威胁漏洞,向该服务建立连接后,只需一至几个回合的交互即可在目标系统中建立反射型Shell,直接获得机密信息或者植入一个后门。一旦某个主机被植入一个具备反向连接机制的后门,即使此后该主机IP地址跳变了,也不能阻止该主机被攻击者控制。也就是说,如果某个服务具有高威胁漏洞,只要扫描到该服务,瞬间就可完成攻击,整个攻击的所经历的时间与成功扫描的所需时间几乎相等,成功扫描几乎等于成功攻击。
IP地址跳变(配套端口跳变)机制本质上就是通过随机地、不可预测地迁移服务入口,来增加扫描服务入口的难度。对于具有高威胁漏洞的服务,在一定时间内降低被成功扫描的概率,也就等于降低被成功攻击的概率。以下我们统一使用服务入口迁移的概念来涵盖IP地址跳变和端口跳变的组合机制,而采用TCP Connect的端口扫描作为扫描方式。
为了评估IP地址跳变机制的抗扫描能力,我们使用如下表示:
•NSP:服务入口的总空间。通常,它等于可以在子网中使用的IP数量乘以服务可以使用的TCP端口数(假定每个主机上可使用TCP端口数相等)。
•NSE:活跃服务入口数量。如果子网中总共有Ns个服务,并且每个服务将同时占用No个服务入口(为实现健壮性,支持多地址冗余的渐变型跳变,假定每个服务有No个冗余的服务入口,这No个服务入口上均有守护进程进行监听),则NSE=Ns×No。NSE/NSP则是服务入口空间中活跃服务入口的比例,可看作服务密度。
•S:攻击者扫描一个服务入口所需的时间。
•T:IP跳变间隔时间。
•PWt:在t时间内成功扫描到活跃服务入口的可能性,t/S(为计算方便,假设t为S的整数倍)。
•PAt:恰好在t时刻成功扫描到一个活跃服务入口的可能性,t/S(假设t为S的整数倍),指正好在第t/S次扫描尝试时,第一次获得了一个活跃的服务入口。
此外,我们假设:
• 在跳转时,k%的活跃服务入口将迁移,新的服务入口将在服务入口空间中的空闲入口中随机选取,主要为了在后面的推导中涵盖基于多地址的渐变型IP地址跳变的机制。之所以选择空闲入口作为新的服务入口,主要是因为之前被使用的服务入口相关资源释放还需要一定时间,在紧接的下一个周期中不再被分配用于新的服务入口。
• 假定T=m×S,表示攻击者可以在跳变间隔的时间内扫描m个服务入口。
可见,当No=1,k%=100%,则代表传统的单服务入口(通常是用单IP上的1个端口作为服务端口)方式的跳变。因此这种评估方法可通用于经典IP地址跳变(及端口跳变)以及渐变式IP地址跳变。
攻击者对整个服务入口空间进行扫描可以采用不同的扫描策略,顺序扫描是最简单、最常见的一种,指攻击者对整个服务入口空间的所有服务入口进行顺序、不重复的扫描,已经扫描过的入口将不会再被扫描到。顺序扫描可以在最短时间内对整个服务入口空间实现遍历,这是当前普遍采取的扫描方式。我们根据攻击者扫描目标的不同又具体地划分为针对任意目标的扫描和针对特定目标的扫描,并分别进行评估。
2.1.1针对任意目标扫描的抵御能力评估
针对任意目标扫描,即不限定服务,只要求扫描到该服务入口空间上的任一活跃服务入口,即算扫描成功。对于以获取肉鸡控制权为目的,或者为了取得网络飞地中任何一台主机控制权作为落脚点的攻击,这种假设符合此类场景。对于任意时间t,在t时间内,攻击者最多可以扫描⎣t/S」个服务入口。关于扫描开始的时间,有以下两种情况:
(1) 扫描开始于某次地址跳变完成的时刻(假定攻击者已获得IP地址跳变的规律,使得扫描开始时间与跳变同步,以在下一次跳变前可扫描更多入口);
(2) 扫描开始于跳变间隔期间内的某一时刻(假定攻击者未获得IP跳变的规律,只能随机选择开始扫描的时间)。
针对第(1)种情况,即扫描开始时间与跳变发生时间一致,可以得出以下推导:
如果t≤T,表示扫描持续的时间在一个跳变间隔期内,即评估攻击者在第一个跳变间隔内就可以扫描成功的概率。则:
(2)
(3)
对于式(2),在t时刻,攻击者共扫描过⎣t/S」个服务入口,因此t时刻扫描成功的概率为前⎣t/S」-1个入口均不是活跃服务入口(扫描未成功),且第⎣t/S」个入口是活跃服务入口的可能性。式(2)前⎣t/S」-1个连乘项即连续⎣t/S」-1次扫描均未成功的概率,每个连乘项的分子为当前未扫描空间内非活跃服务入口数,分母均为当前未扫描空间总入口数。第⎣t/S」项为第⎣t/S」次扫描成功的概率,分子为活跃服务入口数,分母为当前未扫描空间总入口数。
对于式(3),由于单个入口扫描时间为S,且扫描开始时间与跳变发生时间一致,因此t时间内扫描成功的概率为S、2×S、…、⎣t/S」×S时刻扫描成功的概率之和,从而得到式(3)。
如果T NSC1=NSP (4) NLS1=NSE (5) (6) NLSn由两部分组成: • 在上个跳变间隔期间内,NLSn-1个活跃服务入口处于未扫描空间中,其中的,NLSn-1×(1-k%)个服务入口将在下一个跳变间隔内保持不变,由于攻击者在上一个跳变间隔期内没有扫描到任何服务入口,所以它们都还将保留在未扫描的空间中; • 在上个跳变间隔期间内,整个扫描空间中有NSP-NSE个非活跃入口(空闲服务入口),在第n个跳变间隔期间内,未扫描空间中共有NSCn-1-NLSn-1-⎣T/S」个非活跃入口,要在NSP-NSE个非活跃入口中随机选择NSE×k%个跳变为活跃入口,其中将有(NSCn-1-NLSn-1-⎣T/S」)/(NSP-NSE)×NSE×k%个跳变后的服务入口位于未扫描空间。 因此: NSE×k% (7) 可得到通式: (8) 式(7)中,第一项表示还保留在未扫描的空间中,保持不变的NLSn-1×(1-k%)个服务入口;第二项表示进行跳变的服务入口,恰好跳变到当前未扫描空间的服务入口数量。式(8)为式(7)从递归表达转换成通式表达的形式。 因此,当攻击者在第n个跳变间隔期内继续扫描时,假设正好在t时刻扫描到一个活跃服务入口的概率为: (9) 那么,在t时间内扫描到一个活跃服务入口的概率: PWt=∑PAi×S= (10) 式(10)与式(3)同理,t时间内扫描成功的概率为S、2×S、…、⎣t/S」×S时刻扫描成功的概率之和。 根据式(8),NSP(服务入口的总空间)、NSE(活跃服务入口数量)、k%(每次跳变进行迁移的服务入口比例)可确定NLSn,进而决定PAt和PWt,最重要的变量是k%。如果k%=0,则系统是静态系统,活跃服务入口不跳变,NLSn总是NSE,在NSP-NSE次失败的扫描尝试后,PWt将达到1。如果k%=1,PWt将得到最小值,因为所有NSE个服务入口都会迁移,使NLSn得到最小值。在第n个间隔内,未扫描服务空间的非活跃服务入口数等于第n-1个跳变间隔期间内未扫描空间中的非活跃入口数(NSCn-1-NLSn-1)减去该跳变间隔扫描的入口数(⎣T/S」),每次跳变将从NSP-NSE个非活跃入口中随机选择NSE个入口作为新的活跃服务入口。因此,当k%=1时: (11) 可得到通式: (12) 针对第(2)种情况,即扫描开始于跳变间隔的某个时刻,需要另外考虑在一个跳变间隔内扫描开始的概率,从而得出以下推导: 假设在第一个跳变间隔的T-t′时刻开始扫描,则在第一个跳变间隔内扫描了t′时间,可以扫描⎣t′/S」个服务入口。 如果t′≤T,在第一个跳变间隔期间内扫描成功,则t=t′,没有经历过服务入口跳变,那么t时间内可以扫描⎣t/S」个服务入口,那么与第(1)种情况一致: (13) (14) 如果在第一个跳变间隔期间内没有扫描成功,则需要经历服务入口的跳变,假设在第n个跳变间隔扫描成功,同样地,我们用NSCn表示此时还没有被扫描(将被扫描)的服务入口空间,用NLSn表示此时位于在未扫描空间中的活跃服务入口数量,则NSCn等于服务入口总空间(NSP)减去第1个跳变间隔内扫描的入口数(⎣t′/S」)减去中间n-2个跳变间隔扫描的入口数((n-2)× ⎣T/S」)。显然: NSC1=NSP (15) NLS1=NSE (16) (17) NLSn与式(7)相同,由两部分组成: NLSn=NLSn-1×(1-k%)+ (18) 可得到通式: (19) 式(19)与式(12)的不同之处在于需要对第一个间隔内的扫描时长t′在(0,T)范围内积分。 在t时刻扫描到一个活跃服务入口的概率PAt由两部分组成,其一是在第一个跳变间隔内没有扫描成功且第n个跳变间隔扫描成功的可能性,同时需要对第一个跳变间隔扫描时间t′积分,其二是中间n-2个跳变间隔均未扫描成功的概率: (20) 那么,在t时间内扫描到一个活跃服务入口的概率PWt,同样需要对第一个跳变间隔内的扫描时间t′积分: PWt=∑∑PA(i-1)×T+l×S+∑PA(n-1)×T+j×S= (21) 如果k%=1,仍有: (22) 可得到通式: n≥2 (23) 当k%=1时所有的服务入口全跳变,在经典的针对单地址主机IP跳变机制中是显然满足的。为了保持通信的顺畅,渐变式IP地址跳变机制每次跳变都保留至少一个IP地址不跳变,因此不能达到k%=1。但是当IP跳变与端口跳变结合时,则可以在一定程度上起到所有的服务入口均迁移的效果。因此,我们可以采用的机制是:即使对于那些为了提供通信平滑性保持不变的IP地址,其上面的服务端口也应该发生跳变(仅针对监听的服务端口,已建立连接的端口不变,所以这个IP地址上的已有连接不会中断),以获得针对扫描而言更大的不可预测性。 但渐变式IP地址跳变的另一个问题是:NSE(活跃服务入口数量)比经典的IP地址跳变机制增大了。因为一个主机将有多个IP地址,而一个服务也可能在多个IP-端口(组合)上监听。如果一个服务在No个TCP端口上监听,服务入口数增加了No倍。服务入口增多则增大了攻击表面,因此扫描获得服务入口的概率也相应增大。因此我们建议根据NSE扩展的规模等比例扩展NSP(服务入口空间),以抵消NSE(由于服务程序冗余监听TCP端口引起的)增加所带来的影响。例如,如果我们在一个主机上增加一个网络接口(所有服务也在这个增加的网络接口的IP地址上绑定监听端口),我们也会在网络中使用一个额外的相同规模的子网,这样NSP也会以相同比例增加。 以下讨论跳变间隔T的变化对一定时间t内扫描成功的概率PWt以及t时刻扫描成功的概率PAt的影响: • 根据式(3)或式(14),若t • 根据式(10)和式(21),评估在第一个跳变间隔内不能扫描成功,在后续跳变间隔内才扫描成功的概率。则当T减小时,相同扫描时间t下,m=T/s减小,n=⎣t/T」+1增大,tn=t%T的变化无法确定(但其最大值将减小)。因此单个跳变间隔内可以扫描的服务入口数减小,相同t内经历的跳变数增加。T减少使得PWt中的累加项(PAt′,t′ • 随着扫描的进行,t越大,扫描经历的时间越久,未扫描空间越小,活跃入口中未扫描空间入口占比越小,扫描成功的概率PAt越小,但PWt总是不断累积而增大。一次遍历扫描,t的取值极限为NSP×S,因此PWNSP×S是一次遍历扫描过程的扫描成功概率最大值。 2.1.2针对特定目标扫描能力评估 针对特定目标,即针对特定服务的扫描,需要扫描到主机上开放指定服务的端口,即扫描到活跃入口后需要判断该入口是否提供指定服务,若未提供指定服务,则放弃该入口,继续扫描。由于子网中共有Ns个服务,每个服务将同时占用No个服务入口,每次跳变每个服务占用的入口数不变,每个跳变间隔期间内,指定服务的活跃入口占总活跃服务入口的比重均为1/Ns,因此,只有扫描到指定服务的No=NSE/Ns个入口中的任一个才能认定扫描成功。 假设在t时刻扫描到特定目标的概率是PAt,在t时间内扫描到特定目标的概率是PWt,与2.1.1节的分析相同,t的分布也包含两种情况,分别为: (1) 扫描开始与地址跳变同时发生; (2) 扫描开始于跳变间隔期间内的某一时刻。 针对第(1)种情况,可以得出以下推导: 若t≤T,那么在第一个跳变间隔内扫描成功,t时间内共可扫描⎣t/S」个端口,只有扫描到⎣NSE/Ns」个指定服务端口中的一个才算成功,因此t时刻扫描成功的概率为前⎣t/S」-1个被扫描端口均未提供指定服务,且第⎣t/S」个被扫端口提供指定服务的可能性。公式如下: (24) NSC1=NSP (25) (26) (27) (28) 可得到通式: (29) 因此: (30) (31) 针对第(2)种情况: 如果t′≤T,那么在第一个跳变间隔内即可扫描成功,与第(1)种情况一致: (32) (33) 假设在第n个跳变间隔扫描成功,且第一个间隔内扫描t′时间,与式(17)同理: NSC1=NSP (34) (35) (36) NLSn同样由两部分组成: NLSn=NLSn-1×(1-k%)+ (37) 可得到通式: n≥2 (38) 则恰好在t时刻扫描到一个活跃服务入口的概率是: (39) 那么,在t时间内扫描到一个活跃服务入口的概率为: (40) 对于针对特定目标的扫描,要求扫描到活跃入口,同时该入口属于指定的服务,相较于针对任意目标的扫描,这无疑增大了扫描成功的难度。针对特定目标扫描,可以看作是系统服务密度为降低为针对任意目标扫描时系统服务密度的1/Ns。如果在每个跳变间隔内,每个服务均有入口开放,且仅开放一个入口,即No=1,那么,NSE缩小为Ns。根据2.1.1节中的分析,当服务密度很小时,当T/S超过一定的数量级,T的变化不会对扫描成功率造成显著的影响,即T即使显著增加,也不能显著提升扫描成功的概率。经实验证明,在平均扫描速度不超过10 ms/端口的情况下,只有当跳变间隔足够大(3 000~4 000 s),甚至近似为不跳变时,采用顺序的毫秒级扫描才能够扫描到所指定的服务开放的端口。 IP地址跳变机制能够在一定程度上抵御顺序扫描攻击,其中的一个因素是跳变时一部分活跃服务入口迁移到已经扫描过的服务空间,这部分服务入口在下一个跳变周期中不会被扫描到。随着扫描的进展,将会有越来越多的活跃服务入口分布到已扫描过的空间,未扫描空间的活跃服务入口数量将会逐渐减少,存在扫描者遍历整个服务入口空间时(t=NSP×S)都没有成功扫到一个活跃服务入口的情况。但顺序扫描是对传统的、没有实施IP地址跳变机制的系统的常见扫描方式。如果攻击者知道目标系统采用IP地址跳变机制,将顺序扫描策略改为随机扫描策略,那么理论上已经被扫描过的空间依然可能会被重复扫描,迁移到已扫描空间的服务入口仍然会被扫描到。在实施IP跳变机制的系统中,随机扫描是否比顺序扫描有更大的成功概率?下面将分析其扫描成功概率。 攻击者进行随机扫描时,每次扫描将在服务入口总空间中随机选择一个入口进行扫描。因此,任一时刻的未扫描空间都是服务入口总空间,任一时刻所扫描的入口都是在入口总空间中随机选择的,即任一时刻扫描成功的概率均为活跃服务入口在入口总空间的占比,因此在某时刻t恰好扫描到一个活跃入口的概率为: (41) 由于t时间内共可扫描⎣t/S」个端口,因此t时间内扫描成功的概率为第i个被扫描的端口被扫描成功且在该端口之前均未扫描成功的概率和,则在时间t内扫描到一个活跃服务入口的概率为: (42) 经历的扫描时间t越长,能够扫描的入口数⎣t/S」越多,成功扫描到活跃服务入口的概率越大。由于每次扫描的入口是随机选择的,入口选择的随机性导致可能存在一些入口被频繁地扫描,一些入口很少甚至从未被扫描过,因此在有限时间内,还是存在无法扫描到活跃入口的情况。 同时,由于随机扫描是重复扫描,每次扫描时的未扫描空间都是服务入口总空间,因此随机扫描的每次扫描都相当于是t=0时的顺序扫描,由2.1的分析可知,顺序扫描的PWt随扫描时间t的增大而增大,因此一定时间t内随机扫描成功的概率小于顺序扫描(由于随机扫描的偶然性,存在随机扫描比顺序扫描更快获得活跃服务入口的情况,我们仅讨论大量数据的统计规律)。由于在随机扫描的情况下,攻击者对扫描入口的选择是随机的,可以认为IP地址跳变对于抗随机扫描没有增益效果。但是IP地址跳变机制在服务密度较低的系统中对顺序扫描成功率产生的影响,使得攻击者无法采用顺序扫描获得更高的收益,在极端情况下(如T足够小),扫描成功率可能退化成接近随机扫描,这可看作是IP地址跳变机制产生的安全增益。 3.1.1实验方法 为使实现接近现实情况,我们采用接近一个C类IP地址的空间作为可用IP资源,采用分钟级跳变间隔(考虑到大部分情况下分钟级跳变间隔已经给同步机制和系统平滑性带来较大的影响),毫秒级扫描效率(符合当前普遍的局域网上扫描能力): (1) 为虚拟机分配10.0.0.3-10.0.0.253共251个IP地址,探测出1 025~65 534中未被系统占用的端口号,共64 502个,将这些IP地址与端口进行组合,形成251×64 502个服务入口,随机选择出NSE(个位数级)个活跃入口,绑定这NSE个服务入口:(IP地址,端口号),打开套接字进行监听,并记录该入口被打开,等待T时间后进行第一次跳变。 (2) 在NSE个活跃入口中随机选择NSE×k%个入口,关闭这些活跃入口,记录本轮被关闭,在未打开且非本轮关闭的入口中随机选择NSE×k%个入口,绑定并打开监听,等待T时间后进行下一次跳变。 (3) 主机使用nmap对251×64 502个服务入口进行顺序扫描,使用nmap的优势是单个入口所需平均扫描时间短,平均4~5 ms可扫描一个服务入口。在实际测试中,受网络性能的影响较大,单个入口扫描所需时间差距较大,范围大致为0.7~16 ms。若主机同样使用套接字,顺序与服务入口尝试建立连接,可通过控制尝试建立连接的时长来控制单个入口的扫描时间,使其不至于相差过大。 3.1.2实验结果 在NSP=251×64 502,NSE=5,k=60,S=4 ms的情况下,我们针对不同的跳变间隔T(55~95 s)可以得出扫描成功的概率p随扫描时间t的变化如图1、图2所示,并得出结论: • 对于抗任意目标扫描,在T/S为104数量级的情况下,扫描能否成功与服务入口的跳变间隔基本无关,以毫秒级的扫描速度,几乎总能够在一轮顺序扫描结束前扫描到活跃的服务入口。 • 以相同的活跃入口密度和单个入口扫描时间,在相同时间内,若能够在一个跳变间隔内完成一轮扫描(遍历整个服务空间),则一定能够扫描成功,否则跳变间隔对扫描成功概率的影响没有显著规律。 • 扫描开始时间与扫描成功率没有显著的关系。 • 经历的时间t越大,扫描成功的概率PWt越大。 图1 扫描开始与地址跳变同时发生扫描时间与 成功概率的联系 图2 扫描开始于跳变间隔任意时刻扫描时间与 成功概率的联系 另外,我们控制不同的活跃入口密度,分别测试不同跳变间隔下扫描成功所需要的时间,可以得出结论: • 相同活跃入口密度下,跳变间隔的变化对扫描成功所需时间没有太大影响; • 相同跳变间隔、单个入口扫描时间下,活跃服务入口密度越小,扫描成功所需时间越长。 结果如图3所示。 图3 扫描成功所需时间与活跃入口密度的联系 3.2.1实验方法 虚拟机端与3.1所述相同,主机使用nmap对251×64 502个服务入口进行顺序扫描,扫描到开放端口后判断是否是所需服务,若是,则扫描成功,否则继续扫描。 3.2.2实验结果 以服务入口总空间为251×64 502=16 190 002, 活跃服务入口数为5,每次跳变3个活跃入口,平均单个端口扫描时长为4 ms为例,一轮顺序扫描时间为16 190 002×4 ms=64 760.008 s,逐步增大跳变间隔T,实验证明,当T<4 000 s时,针对特定目标的单轮顺序扫描成功概率小于50%,当T≥4 000 s时,扫描成功的概率大于50%。 表1 各跳变参数与扫描成功的概率 3.3.1实验方法 虚拟机端与3.1节所述相同,主机在服务入口总空间中随机选择一个入口,建立套接字,尝试与该入口建立TCP连接,并设置超时时长为10 ms。若连接成功,则表示扫描到一个活跃入口,否则继续随机选择入口尝试连接。 3.3.2实验结果 以跳变间隔T为65 s,服务入口总空间为250×6 000=1 500 000,活跃服务入口数为5,每次跳变3个活跃入口,平均单个端口扫描时长为10 ms为例,针对任意目标随机扫描的成功概率随扫描时间t的变化如图4所示,并显示与相同条件下顺序扫描成功概率的对比。 图4 随机扫描与顺序扫描成功概率对比 由实验可以得出结论: • 扫描时间越长,随机扫描与顺序扫描成功的概率越大,成功概率的差值越小。 • 相同活跃服务入口密度、单个入口扫描时长、跳变间隔以及扫描时间下,随机扫描成功概率明显低于顺序扫描。 移动目标防御为信息安全防御提供了新的思路。基于移动目标理念在网络层采用IP地址跳变是一种有效增加攻击者扫描服务入口难度的防御机制。但是不同的跳变参数和网络资源条件也会对抗扫描能力产生影响。通过针对IP地址跳变机制抗扫描能力的分析与评估,可以得出结论: (1) 对于抗任意目标的顺序扫描。 • 在当前普遍的网络资源供给情况下(C类IPv4地址作为一个子网空间,承载5个服务),以及普遍可接受的跳变间隔(分钟级跳变),扫描能否成功。与服务入口的跳变间隔没有明显的关系。如不指定特定服务,以毫秒级的扫描速度,100秒级的跳变间隔,基本都能够在一轮顺序扫描结束前扫描到活跃的服务入口;在相同的活跃服务入口密度下,跳变间隔的变化对扫描成功所需时间及一定时间内扫描成功的概率影响不大。 • 在分钟级跳变间隔,毫秒级扫描效率的条件下,扫描成功的所需时间与活跃服务入口的密度有较大关联,相同跳变间隔下,活跃服务入口密度越小,扫描成功所需时间越长。 • 扫描经历的时间越长,该时刻扫描成功的概率越小,该时间内扫描成功的概率越大。 (2) 对于抗特定目标的顺序扫描。 针对特性目标的扫描,由于服务密度降低,使得扫描难度显著增加。在服务密度本身较小的情况下,若进一步减小服务密度,将显著抵消跳变周期增加所带来的扫描概率提升。 (3) 关于随机扫描与顺序扫描。 • 随机扫描的成功概率与跳变间隔T无关,且随着扫描时间t的推移,存在永远无法扫描成功的情况,IP地址跳变机制对于抗随机扫描没有影响。 • 若能够在一个跳变间隔内完成一轮顺序扫描,则一定能够扫描成功,即若不进行IP地址跳变,顺序扫描一定能够成功;若不能在一个跳变间隔内完成一轮顺序扫描,则扫描成功的概率与扫描持续时间t、活跃服务入口密度以及单个入口扫描时间有关。 • 在相同活跃服务入口密度、单个入口扫描时长、跳变间隔以及扫描时间下,随机扫描成功概率低于顺序扫描。 • IP地址跳变机制对于抗随机扫描没有影响,但能够从一定程度上降低顺序扫描成功的概率。 基于以上的结论,我们认为在当前IPv4的地址资源供给条件下,IP地址跳变带来的安全增益有限,IPv6的巨大地址资源可能给IP地址跳变的效应带来普遍提升。在IP资源有限的情况下,只有通过显著降低服务密度才能获得较好的抗扫描能力;当需要承载的服务较多时,跳变并不能有效抵御针对任意目标的扫描。IP地址跳变机制需要与其他MTD或拟态防御机制的组合才能发挥效应。 当前我们对于IP地址跳变机制有了初步的量化评估方法研究,今后将进一步研究当攻击者获知IP地址跳变策略,采用更有针对性的扫描策略时,系统可能达到的抗扫描能力。2.2 随机扫描
3 实验验证
3.1 针对任意目标顺序扫描
3.2 针对特定目标顺序扫描
3.3 针对任意目标随机扫描
4 结 语