Argos:指纹识别零日攻击的仿真器

  • 摘要
  • 简介
  • 2.背景和相关工作
  • 3.设计
  • 4. 实现
    • 4.1 扩展动态污点分析
      • 4.1.1 标记
      • 追踪
      • 4.1.3 防止污染数据的无效使用
    • 生成签名
    • 4.2.1 提取数据
      • 4.2.2 先进的取证
  • 4.2.3 信息关联
    • 4.2.4 SweetBait
  • 5 评估
    • 5.1 性能
    • 5.2 效果
    • 5.3 签名
  • 6 结论
  • 未来的工作

摘要

当现代操作系统和软件变得越来越大也越来越复杂时,它们也更有可能包含bug,可能会允许攻击者获取非法途径。对于成功的网络或者系统保护来说,一种能够识别攻击并且快速产生策略的快速并且可靠的机制是至关重要的。在本文中我们提出了Argos,对于蠕虫和人们精心设计的攻击来说的一个封闭环境。Argos是建立在一个快速的x86模拟器上,它能够在整个执行过程中追踪网络数据来识别其无效用作跳转目标,函数地址,指令等。此外,系统调用规则不允许网络数据作为特定调用的参数来使用。当一个攻击被发现时,我们对相应的模拟器状态执行“智能的”进程或者内核感知日志来进行更进一步的离线处理。此外,我们注入自己的取证溢出代码来取代恶意的溢出代码,来收集被攻击进程的信息。通过将模拟器记录的数据和从网络上收集的数据相关联,我们能够为免于负载编译影响的漏洞利用生成精准的网络入侵检测签名。整个过程能够自动化的完成,并且几乎没有任何误报,因此签名的全球化规模的快速部署能够实现。

随着现代操作系统和软件变得越来越大,越来越复杂,它们更可能包含漏洞,这可能使攻击者获得非法访问权。快速,可靠的机制来识别和生成针对此类攻击的疫苗,对于成功保护网络和系统至关重要。在本文中,我们介绍了Argos,一种用于蠕虫以及人类精心策划的攻击的遏制环境。 Argos建立在快速的x86仿真器上,该仿真器在整个执行过程中跟踪网络数据,以识别其无效用作跳转目标,函数地址,指令等。此外,系统调用策略不允许将网络数据用作某些调用的参数。当检测到攻击时,我们对相应的仿真器状态执行“智能”过程感知或内核感知日志记录,以进行进一步的在线处理。此外,我们还插入了自己的取证shellcode,代替了恶意的shellcode,以收集有关被攻击进程的信息。通过将仿真器记录的数据与从网络收集的数据相关联,我们能够为不受有效载荷突变影响的漏洞利用产生准确的网络入侵检测签名。整个过程可以自动化,并且几乎没有误报,因此可以在全球范围内快速部署签名。

简介

对自我传播攻击在网络上传播速度的评估,促使了对自动响应系统的大量研究。我们已经遇到过能够在短短十分钟内在网络上传播的蠕虫,并且研究员宣称更快的蠕虫也是存在的。对于这种爆发速度来说,人类的干预太慢了,因此自动化的响应系统是必不可少的。在实践中,这些系统的重要标准是:(a)能够可靠的检测各种零日漏洞,(b)能够可靠的产生能够被用于阻止攻击的签名,(c)方便部署

自传播攻击在Internet上的传播速度促使人们对自动响应系统进行了大量研究。 我们已经遇到了仅在十分钟之内传播到Internet的蠕虫,而且研究人员声称,甚至更快的蠕虫也指日可待[40]。 对于此类爆发,人为干预太慢,需要自动响应系统。 在实践中,此类系统的重要标准是:(a)可靠地检测各种各样的零时差攻击;(b)可靠地生成可用于停止攻击的签名;以及(c)具有成本效益的部署。

现有的自动化响应系统在攻击检测中倾向于导致相当大概率的误报,并使用签名[43,37,23,15,27]。大规模的误报违反了一二条件。尽管这些系统可能在入侵检测系统中扮演了一个重要角色,但他们并不适合全自动响应系统。

现有的自动响应系统在攻击检测和签名使用中往往会产生相当大的误报率[43、37、23、15、27]。 大量的误报违反了前两个标准。 尽管这些系统可能在入侵检测系统(IDS)中发挥重要作用,但它们不适合用于全自动响应系统

众所周知的一个能够尝试避免误报的方法是动态污点分析。简单来说,来自互联网的不被信任的数据会被标记,当进行漏洞利用时(比如来自网络的数据被执行时),将会生成一个警报。这种技术被证明是可靠的,并且几乎不会产生误报。当前项目使用的能够被分为(1)面向硬件的全系统保护,(2)特定于操作系统和进程的软件解决方案。这里有两个不同的方式,并且每一个方法都有重要的意义。对我们的目的来说,这些方法中最重要的就是Minos和Vigilante。

一种尝试完全避免误报的方法称为动态污点分析。 标记来自网络的贿赂,不受信任的数据,并且仅在发生漏洞利用时(例如,当执行来自网络的数据时)才会生成警报(仅)。 事实证明,该技术是可靠的,几乎不会产生误报。 它在当前项目中使用,可以归类为(i)面向硬件的完整系统保护,以及(ii)软件中的OS和特定于过程的解决方案。 这是两种不同的方法,每种方法都有重要的含义。 就我们的目的而言,这些方法的两个最重要的代表分别是Minos [12]和Vigilante [28]。

Minos并不产生签名,并且通过硬件来实现高效的调用。除此之外,它能够仅仅通过查看物理地址检测出漏洞利用攻击,例如寄存器扩展攻击,但是这还需要一个笨拙的黑客来攻击。同样,他也不能直接处理从物理地址到虚拟地址的转换。

Minos根本不生成签名,而有效部署依赖于硬件实现。 而且,仅通过查看物理地址,它可以检测到某些漏洞利用,例如寄存器弹簧攻击[39],但需要笨拙的黑客来确定攻击的起源[13]。 而且,它根本无法直接处理物理地址到虚拟地址的转换。

与之相反,Vigilante代表一个处理虚拟地址的每个进程的解决方案。同时,这也限制了它的灵活性,正如它无法处理DMA或者内存映射。同样,由于Vigilante必须检测单个服务并且根本不保护OS内核,因此出现了效率问题。不幸的是内核攻击已经变成了现实,并且预计在未来会成为常态。对于签名生成,它依赖于重播攻击,由于与特定场景、随机数等的挑战/响应交互,这通常是不可能的。

相比之下,Vigilante代表一种使用虚拟地址的按进程解决方案。 同样,这是一个设计由于它无法处理DMA或内存映射,因此限制了其灵活性的决定。 同样,由于Vigilante必须检测单个服务并且根本不保护OS内核,因此出现了成本有效的问题。 不幸的是,内核攻击已成为现实,并有望在未来变得更加普遍[26]。 对于签名生成,它依赖于重放攻击,由于与随机数,随机数等的质询/响应交互,通常是不可能的

我们相信面向硬件的全系统解决方案和特定于操作系统和进程的软件解决方案在这部分的开始时都受限于上述的三个条件。我们设计提出一个第三方案,结合了两个世界的优点并且满足所有的要求。

我们认为,面向硬件的完整系统解决方案以及特定于操作系统和过程的软件解决方案在本节开头提到的所有三个方面都太受限制。 我们的设计提出了第三种方法,该方法结合了两个方面的优点并满足所有标准

在本文中我们提到了Argos,它探索了自动化响应系统设计领域的另一个极端。首先,就像Minos,我们通过修改运行我们自己版本的动态污点分析的x86模拟器来在软件中实现全系统的保护。换句话说,我们自动化的保护任何(未被修改的)操作系统和它所有的进程、驱动等。第二,Argos考虑到了复杂的内存操作,比如内存映射和DMA(通常被其他项目忽视),同时相当有能力处理复杂的exploit(比如寄存器爆发)。这有很大概率是因为我们处理虚拟地址和物理地址的能力。第三,自动化产生签名是基于漏洞利用中内存足迹的相关性以及网络追踪,作为结果:缓冲区溢出和格式化字符串或者代码注入的漏洞利用将会触发警报。第四,当系统是操作系统和应用时,如果检测到攻击,我们会注入特定于操作系统的取证shellcode。换句话说,在攻击发生时,我们利用被攻击的代码来提取关于攻击的额外信息,这些信息后来会被用于签名的生成。第五,通过对比不同网站的签名,我们优化了Argos的自动生成的签名。第六,签名会自动分发到远程入侵检测和防御系统。(IDS和IPS)

我们专注于那些被远程精心设计(就像蠕虫)并且不需要使用者操作的攻击。利用错误设置的安全策略的方法不能被解决。虽然那些攻击构成了一个充足的安全问题,但是他们是在我们研究的另一边,需要一个不同的方法。特别的,我们专注于exploit而不是攻击的payload,也就是说,我们捕捉那些能够触发缓冲区溢出和注入代码的代码是为增加对机器的掌控,而不是捕获攻击行为。在我们看来,捕获或者阻止exploit会更加的有用,因为离开了exploit实际的攻击永远不能执行。更多的是,在实际中相同的exploit经常使用不同的payload,所以阻止exploit的收益可能是巨大的。此外,exploit相比于攻击的payload更不易改变,并且即使是已经发生了改变,也更加容易捕获。

Argos被设计作为‘广告蜜罐’,也就是说,是一个运行真实服务的蜜罐,与普通蜜罐不同的是他并未被隐藏。而且,我们积极的链接它并且公布他的IP地址,让利用命中访问表的攻击者(而不是随机IP扫描来识别攻击目标的攻击者)能够访问。我们为此付出的代价不同于传统的蜜罐,我们希望收到一定数量的合法流量(例如网络爬虫)。从另一个角度,既然Argos的目标是最为一个蜜罐,我们不需要表现得像是没有被保护的系统。然而,他应该足够的快来运行真实的服务,同时有合理的响应时间。

本文余下的内容如下:本文讨论了相关工作,我们总结了各种方法在Section2,在Section3我们介绍了Argos的设计。实现的细节在Section4中讨论。在Section5中评估这个系统。在Section6中总结。

2.背景和相关工作

攻击者进攻主机时,最重要的是转移主机控制流来来执行他自己的指令,或者是用自己的控制流来替代主机的控制流。为了实现这个操作,攻击者需要重写数值,比如:跳转目标,函数地址和函数返回地址。或者它也可以重写函数的参数甚至是指令。这些攻击在过去几年尤为显著并且能够被划分为以下几类:

栈溢出攻击:攻击者利用漏洞使一个栈的缓冲区溢出来改写函数的返回地址,当函数返回时,攻击者可以执行想执行的任意代码。

堆腐烂攻击:利用堆溢出来允许攻击者重写任意的内存位置,最后可以执行任意想执行的代码。

格式化字符串攻击:这是最普遍的攻击。他们利用printf()函数家族的特性:允许一定数目的字符被打印并被存储在内存中。当用户提供的字符串被当作一个格式化字符串使用时,攻击者能够操作字符串来用任意的代码来改写内存中的任意位置。这些攻击为协调器提供了更多的选项,比如:execve()系统调用时要执行的文件。

上述的这些攻击方式已经被安全领域研究数年。Stackguard、Stackshield和gcc扩展已经被用于对抗栈溢出攻击。后来的研究发现:这些方法中很多都可以被轻易绕过。大多数操作系统通过补丁来让栈不可执行,但是这也带来了其他的问题(比如:trampolines依赖于栈的可执行,信号也同样是),同样有时也可以被绕过。缓冲区溢出的检测和保护方法有很多。他们让通过重写特殊的地址来转移控制流变得几乎不可能,例如:通过修改代码和数据存入内存的方式。相反,我们渴望一种能够允许控制流但是在控制流尝试转移时能触发警报的方法。除此之外,地址不应该被修改,因为我们致力于的是产生真实攻击的可靠签名。

一些现有的格式化字符串的保护方式是通过安装补丁来实现对printf()的参数计数并且使用特定的形式来保证安全。这两种方法都需要重新编译代码。代码注入已经通过指令系统随机化和非法地址执行系统调用的检测来解决。当我们想要产生签名时,指令系统随机化对我们的目的就没有太大作用。Dome提供的系统调用保护可能很有趣,但是他的局限性(系统调用)和不方便(系统调用地址的合法性需要对每一个应用进行静态分析)还是让他被淘汰了。

一个不同的方法是通过硬件实现防御溢出和攻击。例如:StackGhost在Sparc架构中保护栈。同样的,可以使用动态信息流分析来防御溢出和一些格式化字符串的攻击。对于最常使用的处理器或者操作系统来说,这些机理都不是普遍可用的,在我们看来并不如模拟。Dunlap和Garfinkel建议使用虚拟机。相同的工作在[42]中提出,它使用了Dynamo动态优化器的修改版本。虽然Argos和这些项目在很多方面都不同,但我们使用了相同的方法,我们利用率基于x86架构的模拟器。

大多数与我们的工作相关的比如Minos和Vigilante,都像Argos一样,利用了污点分析来发现外来数据的不合法使用。然而,和Argos的区别是多方面的。简单来说,Minos是一个硬件项目,在现在,虚拟计算机的软件实现会造成巨大的性能损耗(多达几个数量级的变慢)。一旦发现异常,Minos也不会产生签名。因为致力于硬件解决方案,Minos不得不牺牲在性能上的灵活性,同样在硬件层面能够获得的信息也是非常有限的。例如:硬件只能获得物理地址,然而复杂的攻击往往都是虚拟地址,例如寄存器爆炸攻击。除此之外,Minos几乎不可能生成类似于Vigilante的那种的自我警报(SCAs)。相反,虽然Argos也是处理物理地址,但我们通过软件模拟为我们提供访问物理地址到虚拟地址的映射和寄存器等。

Vigilante和Argos至少有三个方面的不同:(1)它保护个人的进程(需要对每个进程的管理,并且把内核和没有监视的服务放入了危险的地位)(2)它特定于操作系统(3)它只处理虚拟地址。虽然方便,但是虚拟地址的缺点也是明显的,比如内存映射的数据很难去核对。毕竟,那个地址空间应该被污染是一个复杂的问题。正是因为这个原因,Vigilante和大多数的其他项目不能够处理内存映射区域。像Vigilante这类定位为应用级的方法也不能监视DMA活动。相反,Argos使用物理地址并且处理内存映射和DMA一样。

3.设计

Argos架构概括在图1.完整的执行路径由六个主要步骤组成,由图中的数字表示,这些数字对应于本节中圈起来的数字。传入的流量既记录在跟踪数据库中,又提供给运行在模拟器1上的未修改的应用程序/操作系统。在模拟器中,我们利用动态污点分析来检测是否有利用漏洞来改变应用的控制流。这是通过识别是否使用了可能不安全的数据比如网络数据。这里有三步来实现:
RFID数据来源于被污染的数据源
再执行过程中追踪被污染的数据
识别并阻止污染数据的非法使用

换句话说,来自网络的数据将被标记为污染数据,无论什么时候他被复制到内存或寄存器中,那么相应的寄存器和内存也是被污染了的,当这些污染数据被使用时,比如说作为跳转的目标,我们就会产生警报。到目前为止,这类似于[28]和[31]。像之前说的,Argos和据大部分现有的项目不同的是我们追踪的的是物理地址而不是虚拟地址。结果,内存映射问题解决了,因为某个页面的所有虚拟地址空间映射都指向相同的物理地址。

当一个违规操作被检测到,会触发警报,导致签名的生成如阶段3-6.为了帮助签名的生成,Argos首先将所有的污染块和一些额外的信息转储到文件中,标记出那些出发警报的特殊的地址,他们指向的内存区域等。因为我们有着计算机的全部权限、它的寄存器和它所有的映射所以我们能够根据我们的需要将虚拟地址和物理地址转换。转储的不仅仅是寄存器、物理内存块和特殊的虚拟地址,事实上这些充足的信息并不只是用于签名的生成,也是为了后面的手动分析。

此外,我们利用了一个新的技术来对于被攻击的代码进行自动取证。回想一下,Argos是与操作系统和应用程序无关的,也就是我们可以在IA32指令集架构上开箱即用任何操作系统和应用程序(要求是没有修改或者是重编译)。当检测到攻击时,我们甚至都不知道是哪个进程触发了警报。为了发现关于应用的额外信息(例如:进程识别、可执行文件的名字、打开文件和套接字等),我们注入我们自己的shellcode来执行取证。换句话说,我们利用的是被攻击的代码和我们自己的shellcode。

我们强调的是即使没有shellcode,Argos通过它成熟的特定于操作系统的特点仍然可以工作,尽管降低了准确度。在我们看来,一个包含了特定于操作系统扩展的与操作系统无关的框架能够极大的提升性能,因为它是一个通用性的解决方案,而不需要降低性能或者准确度。据我们所知,我们是第一个使用攻击手段(shellcode)来实现防御目的。

内存块的转储(污染数据,寄存器等)加上通过shellcode获取的额外信息被用于与追踪数据库中的网络数据产生相关性。对于TCP连接,我们在相关之前先重构流。相关阶段的结果是一个真正的签名,可以用于过滤。然而,我们不认为签名是最优的,所以我们尝试提炼它。为了实现这个目的,Argos把提交给像SweetBait这样的子系统,子系统收集不同网站的签名,并基于相似度来优化签名。例如:一个由exploit和被感染主机的IP地址组成的签名在不同的网站会看起来有略微的不同。SweetBait发现两个这样的签名之间的相似性,它会生成一个更短更加针对的签名用于后面的筛选。

最后一步是自动化的使用签名。连接SweetBait的是入侵检测和防御系统,SweetBait提供流量的签名用于阻止或者追踪。对于IDS我们使用的检测器是基于著名的开源网络IDS:snort,并且为了达到目的,SweetBait生成的是snort格式的规则。IPS是使用Aho-Corasick模式匹配算法来匹配网络签名的相对简单的国产解决方案。尽管并不是非常复杂,我们还是把他作为Linux的内核组件以便于SweetBait的直接使用。在努力下,一个作者研究出了基于Intel IXP1200网络处理器的高速IPS版本,能够被用作一个选择。从某种程度来说,SweetBait是智能的,它能够区分恶意攻击和稀有的事件并相应的传播签名。这类似于警方为危险罪犯而不是扒手(比方说)发放apb的方式。

本文的重点主要是步骤1-4,并且我们会限制我们总结SweetBait的实现。感兴趣的读者可以阅读[32]中的细节。

4. 实现

在检测到攻击时,Argos通过给qemu提供污染和追踪内存并产生内存足迹的方法来对qemu进行扩展。QEMU是一个快速且编写的动态翻译器,能够模拟多种架构,比如:x86、x86-64、POWER-PC64等。不像其他的模拟器(比如Bochs),QEMU不是个解释器。而是说,指令块翻译并缓存,因此如果相同的指令再次被执行时,不用重复翻译。此外,Qemu并没有提供与硬件系统相当的软件,而是采用各种优化来提高性能。因此,QEMU比大多数的模拟器都要快。

我们的实现通过扩展QEMU的奔腾架构。在本文的其他部分,它将被简单的用作x86架构。为了清晰区分,我们以客户机和主机来区分模拟出的系统和本地的系统。

我们把Argos的应用分为两部分。第一部分包括我们扩展动态污点分析,可以用来保护QEMU,同时也可以在发现攻击时发出警报。第二部分是提取模拟器和操作系统的关键信息来生成签名。

4.1 扩展动态污点分析

Argos中的动态污点分析类似于其他项目中的。然而也有一些重要的不同。在这一节中,我们将会讨论应用的细节。

4.1.1 标记

污点分析中的一个重点的实施决议就是标记的颗粒度。一般来说,一个标签数据块小的就1bit那么大,大的有4KB或者更大。我们选择可变的颗粒度;物理内存中的每一个byte都标记,同时每一个CPU的寄存器都有一个标记。内存中的每一个字节标记不会产生任何额外的机算成本,也就是说:超过两字的标记会产生更高的准确度。从另一个方面,寄存器中的每一个标记字节都会导致寄存器操作的复杂度提升,这是不能接受的。值得注意的是,修改Argos来使用不同的颗粒度是很容易的。因为性能的原因,为了方便后期的取证过程,内存和寄存器标记的本质也是不同的。

寄存器标记。这里有八个普通的x86架构的目的寄存器,给他们每个寄存器4B的标记。这个标记用于存储产生寄存器内容的物理内存地址。部分寄存器和指令指针寄存器没有被标记,它们通常被认为是不能被污染的。因为他们只能被暗中更改,因为他们的规则:他们是属于系统保护的元素。标志寄存器也没有被标记,认为它是不能被污染的,因为它经常受到操作的影响,包括不被信任的数据,标记它会让它不能区分恶意的资源和正常的资源。默认的,MMX和FPU寄存器也是被同样处理的,尽管需要的话Argos也能够标记它们。我们把标记这些寄存器仅仅作为一个选择,因为它们涉及到很具体的操作,而这些操作通常于攻击无关。考虑到性能,我们默认忽略它们。

内存标记。由于我们不为物理内存标记存储任何额外的数据,一个用于标记的二进制标记就足够了。不过,也可以使用字节标志来增加内存消耗,以换取性能增强。这可能看似代价很大,但是注意的是我们标记的是物理内存而不是虚拟内存。尽管虚拟内存空间可能会很大(例如64位计算机上的2的64次方),但是物理内存却不会那么大,通常只有512MB-1GB.此外,客户的“物理”RAM不需要与主机上的物理内存对应,因此硬件资源的成本可以保持相当低。可以在编译时配置要使用的方案。接下来我们将会探讨这两个标记方案的更多计划。

位图是一个大数组,每个字节对应内存中的8个字节。在位图中,任何物理内存地址paddr的索引idx能够通过首先移动地址右移3 (idx = paddr ≫ 3) 来定位包含标记位 (map[idx])的字节。单个的标记位能够通过paddr (b = map[idx]L(0x01 ≪ (paddrL0x07)))的低三位找回。位图的大小是客户机可寻址物理内存RAMSZ (size = RAMSZ/ 8 ), 的八分之一,也就是说512MB的客户系统的位图会是64MB.

同样的,一个字节图也是一个大数组,每一个字节对应内存中的一个字节。每一个字节的物理地址paddr也是字节图中的索引idx。它的实际大小等于客户机实际可寻址物理内存RAMSZ (size = RAMSZ).

最后,传入的网络数据被标记为污点。因为这整个过程并不需要操作系统的参加,标记通过QEMU模拟的虚拟NE2000 NIC来执行。操作系统通过两个方法与外部设备交流:I/O端口和内存映射I/O。Qemu的虚拟网卡只支持I/O端口,而在x86架构中,这是通过输入和输出指令来执行的。通过检测并标记从NE2000中寄存器加载的指令和数据为污点,因为所有其他I/O端口的操作都会导致清除目的寄存器的标记。

追踪

Qemu通过动态链接实现相应操作的函数块,将所有来宾指令转换为本机指令污点数据追踪包括检测这些操作标记的函数,比如移动或者改变数据。除了寄存器和内存地址以外,我们认为可获得的指令操作数包括直接的数值是没有被污染的。我们将插装函数分为以下几类:

2或3个操作数操作;这是大多数常用的操作包括:ADD,SUB,AND,XOR等。如果目标操作数没有被污染,则会导致将源操作数标记复制到目标操作数标记。

数据移动操作;这些操作将数据从一个寄存器移动到另一个寄存器,将源操作数标记复制到目标操作数标记。

单个寄存器操作;包括所有的LOAD,STRE,PUSH和POP操作。这些操作分别从内存中存取标记。

FPU,MMX或者SSE操作;由上所述,在这些通常被默认忽略,除非他们的结果被存储在我们追踪的寄存器或者内存中。在这些情况下,这些目的地会被清除。更多更加高级的指令比如SSE2和3DNow!不被QEMU支持。

没有直接改变寄存器和内存的操作;这些操作包括NOP,JMP等。在追踪数据时,他们大多数我们都不需要添加任何检测代码,但是为了识别他们的非法使用就需要,正如我们在接下来部分所讲的。

清洁操作;某些相当复杂的指令常会清理他们目的操作数的标记。这是为了降低误报的可能性。这样的指令是旋转左/右(ROR, ROL), BCD和SSE指令,以及双精度移位。

幸运的是我们并不需要担心特殊指令的使用,比如:xor eax、eax、sub eax 。这些在X86中被大量用于将寄存器设置为0,因为不像RISC,并没有可获得的零寄存器。QEMU确保将这些翻译成一个能够把零给目标寄存器的一个单独的函数。当编译这个函数时,它遵循本地架构归零寄存器的习惯做法。

现在的系统提供了一个外设直接写入内存而不需要消耗CPU循环的方法,也就是直接内存操作(DMA)。当操作系统使用的是DMA而不是从外设上获取小块的数据时,它将分配一大块内存区域并把它的地址发给外设,外设可以直接写入数据而不需要占据CPU。QEMU为像硬盘这类的组件模拟DMA。只要在Argos中执行DMA内存写入,就会被截获,并清除相应的内存标记。

4.1.3 防止污染数据的无效使用

今天所观察到的大多数攻击都是通过将控制重定向到攻击者提供的指令(例如,shellcode),或者通过小心地操作参数(返回到libc)来获得对主机的控制。要使这些攻击成功,必须用攻击者提供的值加载主机的指令指针。在X86架构中,指令指针寄存器EIP通过下面的寄存器来加载:call,ret和jmp。通过检测这些指令来确保被污染的数据是否加载到EIP中,我们利用这些方式来区分所有的攻击。另外,我们还可以检查是否在特定于模型的寄存器(MSR)或段寄存器上加载了受污染的值,但是到目前为止,我们还没有遇到这种攻击,我们也不知道它们的存在。

虽然这些方法捕获了一个广泛的漏洞类别,但仅凭它们是不够的。例如,他们不能处理格式化字符串漏洞,这会允许攻击者用任意的数据来重写内存中的任意位置。这些攻击不会直接用网络数据重写关键的值,并且可能不会被检测到。因此,我们扩展了动态污染分析,以扫描代码注入攻击,否则无法捕获这些攻击。这可以简单的通过检查加载在EIP中的内存位置是否被污染来完成。

最后,为了解决仅仅基于更改关键函数参数的攻击比如:系统调用,我们检查了QEMU来检查提供给系统调用比如execve()的参数是何时被污染。为了可靠地实现这个功能,我们需要一个关于操作系统在Argos上运行的提示,因为操作系统使用不同的系统调用。当前版本的Argos只支持Linux操作系统的这个特性,但我们计划将其扩展到支持FreeBSD和MS Windows操作系统。

生成签名

在本节中,我们将解释如何在检测到攻击后提取有用的信息,如何生成签名,以及如何通过关联内存和网络跟踪来专门化签名。此外,我们还展示了如何细化签名,以获得包含漏洞核心的小签名。另外,与[28]等相关项目不同的是,我们有意研究了不需要重播攻击的签名生成方法。重播攻击是困难的,例如,因为质询/响应身份验证可能会在交互中插入nonces。虽然我们知道有一个实例是在面对cookie和nonces[14]时实现重放,但是我们不相信当前的方法能够处理最复杂的协议。

我们强调,本节描述的签名生成方法只是第一个尝试,主要用于演示如何使用合适的后端来利用Argos生成的丰富信息。我们目前正在探索更先进的方法。在我们看来,能够插入不同的后端(签名生成器)是非常有用的。

4.2.1 提取数据

一个确定的攻击可以成为整个网络安全社区资产,如果我们生成一个签名成功在网络层阻止它。为了达到这个目标,Argos导出有趣的客户内存区域的内容进行离线处理。为了减少导出的数据量我们动态地判断这次袭击是发生在用户空间还是内核空间。这是通过从Qemu的隐藏标志寄存器检索处理器特权环位。内核总是运行在特权环0,所以我们可以通过观察我们运行的环区分内核中的进程。

此外,每个进程都与内核共享其虚拟地址空间。操作系统通过分割地址空间来实现这一点。在Linux中使用3:1的分割,这意味着虚拟地址空间的四分之三被分配给进程,而四分之一被分配给内核。另一方面,Windows使用2:2分割。用户/内核空间分割在大多数操作系统配置中都是预定义的,所以只要我们知道哪个操作系统正在运行,就可以使用静态值。我们利用这些信息只转储相关数据。

为了确定哪些物理内存页是需要记录的,我们遍历安装在处理器上的页目录。在x86架构中,活动页目录的物理内存地址存储在控制寄存器3 (CR3)中。注意,因为我们遍历进程的虚拟地址空间,所以映射到多个虚拟地址的物理页面将被记录多次(每个映射一次)。

通过定位进程/内核可以访问的所有物理页面,并确保不会跨越用户/内核空间分割,我们可以转储所有受污染的内存区域以及EIP指向的物理页面,而不管其标记状态如何。转储数据的结构如图2所示。对于每个检测到攻击导出以下信息:日志格式(格式),客户机架构(ARCH i386或x86 64),攻击的类型(类型),时间戳(TS),登记内容和标签(包括EIP及其起源),EFLAGS寄存器,最后记忆内容块。每个内存块前面都有以下标头:块的格式(format)、受污染的标记、块的大小(以字节为单位)以及块的物理(PADDR)和虚拟(VADDR)地址。接下来将写入内存块的实际内容。当所有的块都被写完时,转储的结束由一个只包含0的内存块头来表示。

所有这些都记录在一个名为“ark .csi.RID”的文件中。其中RID是一个随机ID,也将用于下面讨论的高级取证。

从Argos提取的数据不仅仅用于签名生成。通过记录所有可能“有趣”的数据,可以对攻击进行彻底的分析。例如,考虑寄存器spring之类的技术,它们不会直接将控制流更改为注入代码。通过记录用于spring的合法代码,并利用日志中存在的物理和虚拟地址,安全专家可以有效地对大多数(如果不是全部)攻击进行逆向工程。

4.2.2 先进的取证

Argos的一个本质特征是它是过程不可知的。这给我们带来了确定攻击目标的问题。发现受害过程,提供有价值的信息,可以用来定位脆弱的主机,并协助签名生成。为了克服这个障碍,我们提出了一个新颖的想法,使我们能够在进程的地址空间中执行代码,从而允许我们收集有关它的信息。

目前,大多数攻击通过注入汇编代码(shell代码)并将控制流转移到进程的开头来劫持进程。受上述启发,我们将自己的shell代码注入到进程的虚拟地址空间中。在检测到攻击和日志记录状态后,我们将shell代码直接放到进程的虚拟地址空间中。注入代码的位置非常重要,经过各种实验之后,我们选择了地址空间开头的最后一个文本段页面。将代码放在文本段中对于确保它不会被进程覆盖很重要,因为它是只读的。它还增加了我们不会覆盖任何关键流程数据的可能性。有了适当的shell代码,然后我们将EIP指向它的开始执行。

作为一个示例,我们实现了shellcode,它提取了受害进程的PID,并通过TCP连接将它与前面生成的RID一起传输。信息被传输到在客户端运行的进程,然后代码进入一个循环,迫使它永远休眠,以确保它不会终止,但仍然处于休眠状态。在另一端,客户端的信息收集进程接收PID并使用它来提取操作系统给出的进程的信息。最后,将此信息传输到主机,并将其存储在主机上。

取证过程通过运行显示当前网络连接状态来检索关于被攻击进程的信息,或者如果显示当前网络连接状态不可用,则打开端口[1]。上面的工具提供了进程的名称,以及所有相关的端口。端口集可以用来限制我们在网络跟踪中的搜索(如4.2.3节所讨论的),方法是丢弃发送到其他端口的流量。目前,取证可用于Linux和Win32系统。在未来,我们设想提取相同或更多的信息,而不需要在客户端使用第三个过程。

4.2.3 信息关联

从客户端收集的内存指纹,以及使用高级取证技术提取的信息,随后与客户端和攻击者之间交换的数据的网络跟踪相关联。我们使用tcpdump捕获流量,并将其直接存储在定期垃圾收集的跟踪数据库中,以清除旧的流量流。在Argos的下一个版本中,我们使用自产的FFPF框架来捕获流量,它允许我们在不同的跟踪[6]中转储不同的流量。

收集到的网络跟踪首先通过重新组装TCP流进行预处理,以形成发送给客户机的数据的连续图像。对于流重新组装,我们构建在开源的ethereal library5上。这使我们能够检测被有意地拆分为多个包或作为TCP碎片的一部分的攻击。

当前版本的Argos使用取证提供的攻击端口号过滤掉无趣的网络流。此外,转储的内存内容也减少了。EIP的标记值用于在网络跟踪中定位主要负责攻击的受污染内存块。此块以及其余的网络流将被处理,以识别可以用作签名的模式。Argos使用两种不同的方法来定位这些模式:(i)最长公共子串(LCS)和(ii)关键利用串检测(CREST)。

(i) LCS是一种流行的快速算法,用于检测多个字符串之间的模式,其他自动签名生成项目[27]也使用LCS。该算法的名字不言自明:它查找内存和流量跟踪中常见的最长的子字符串。然后,连同受攻击的端口号和协议一起生成Snort签名。虽然这个方法看起来很有前途,但是它在我们的设置中并没有很好地工作,因为跟踪和内存之间的公共子字符串(显然)很大。虽然我们仍在改进LCS签名生成,但我们已经取得了迄今为止最好的结果

(ii) CREST是一种新的算法。其开发背后的动机是Argos的输出提供了关于攻击内部工作的重要见解。转储信息允许我们生成针对触发攻击的字符串的签名,因此这可能是非常准确的,并且不受多态性等技术的影响。利用物理内存源(OEIP)和虚拟内存值(VEIP),我们可以锁定充当攻击者立足点来控制宾操作系统的内存位置。CREST的优势在于它能够捕捉到攻击的第一部分,而这一部分是不易改变的。当前版本的CREST基于此攻击字符串生成签名。然而,我们现在正在开发CREST的一个更高级的实现,在这个实现中,我们试图准确地隔离导致该漏洞的网络跟踪的(最小)部分。

当前CREST的实现相当简单。本质上,我们将VEIP定位在与应用程序s端口对应的网络跟踪中,然后将跟踪扩展到左边和右边。换句话说,我们将内存转储中OEIP上下的各个字节与VEIP在网络跟踪中的位置之前和之后的字节进行匹配。当我们遇到不同的字节时,我们会停下来。Argos使用产生的字节序列,并将其与端口号和协议组合起来,以snort规则格式生成签名。以这种方式生成的签名通常大小合理,只有几百字节,因此可以立即使用。此外,正如我们在第4.2.4节中所示,稍后将改进签名,使其更小。

请注意,尽管我们目前只使用了少量的操作,但是对于签名生成,我们能够处理大量的信息。实际上,Argos产生的信息比其他项目多得多[12,28],因为我们可以完全访问物理和虚拟内存地址、寄存器、EIP等。因此,即使它被证明是非常有效的,即使在其目前的形式,CREST应该被认为是一个正在进行的工作,当前的实现是一个概念验证。例如,CREST将无法为格式字符串攻击或任何成功的攻击生成签名

在我们的系统的下一个版本中,我们计划跟踪每个受污染的内存单词在网络跟踪中的确切起源。因此,我们将不再需要扫描特定字节模式的跟踪。相反,我们将能够直接查明网络跟踪中有问题的字节,从而大大提高签名生成方法的速度和准确性。

Argos签名生成的最后一个特性是它能够同时生成流签名和包签名。如前所述,流签名完全由字节序列组成。另一方面,对于包签名,Argos将字节序列映射回各个包。换句话说,如果一个签名包含一个以上的数据包,Argos将把它分成几个组成部分。当我们跟踪组成完整流的各个包的贡献时,我们甚至能够处理相当复杂的情况,例如重叠的TCP段。包签名对于不执行流重新组装的IDS和IPS实现非常有用。

4.2.4 SweetBait

SweetBait是一个自动签名生成和部署系统[32]。它从多个来源(如蜜罐)收集类似于snort的签名,并对其进行处理以检测相似性。虽然Argos是这个项目的主要投入,我们也将SweetBait连接到基于honeyd[33]和蜂巢[27]的低交互的蜜罐。应该提到的是,为了处理不同性质的签名,SweetBait会键入它们以避免混淆。诱饵子系统如图3所示。

诱饵子系统的大脑由控制中心(CC)组成。CC维护一个不断更新的攻击签名数据库,并根据其签名预算将最严重攻击的签名推送到一组IDS和IPS传感器,本节稍后将对此进行解释。除了IDS/IPS传感器,我们还将一组Argos蜜罐与每个CC联系起来。蜜罐通过ssl保护的通道将它们的签名发送到它们的CC。签名由CC收集并与已知签名进行比较。本质上,它使用LCS来查找签名之间的重叠量。如果两个签名足够相似,它就得出结论:LCS代表了针对攻击的更专门的签名,并安装了一个新的签名版本,该版本不支持旧的签名。通过这种方式,我们试图定位签名的不可变部分,并删除可变部分,如目标ip、主机名、攻击有效载荷等。这样做可以减少收集到的签名的数量到一个可管理的规模。例如,我们使用了低交互(蜂蜜/蜂窝)蜜罐的SweetBait(因为这些蜜罐的签名比Argos的签名大得多),并且能够将三天内生成的数千个签名减少到少于30个(图4)。

专业化过程主要由三个参数控制。最小匹配参数m表示两个签名在CC确定它们是相同签名的变体之前的最小重叠量。值m表示为已知签名大小的百分比。例如,m = 90%意味着新签名应该至少匹配数据库中已经存在的签名的90%,以便将其归类为此签名的变体。最小和最大长度参数L和M分别表示可接受签名的最小和最大长度。例如,L = 10和M = 1500意味着要接受签名并将其存储在数据库中,签名的长度应该大于10字节,小于1500。

这些参数的最优值随签名的性质而变化。例如,如果签名可能是不相关的,例如虚拟蜜罐/蜂巢生成的签名,m应该很大,以确保签名确实是相关的。虽然在这种情况下,参数的最佳选择是一个仔细调优的问题,但是我们在处理Argos签名时处于一个更好的位置。毕竟,在这里我们可以强制子系统只比较已知相关的签名。例如,通过在专门化期间只比较签名与相同的VEIP,我们知道只考虑类似的利用。本质上,我们可以将m和M分别设置为任意低和任意高的值,并让L完全控制这个过程。L的值是通过查看snort框架使用的实际签名的大小来确定的。在snort中,大多数规则的内容字段都非常小,通常小于10个字节。通过选择稍微大于这个值的值,签名可能既准确又小。在实践中,我们对Argos生成的签名使用L = 12,并确保Argos在一个单独的桶中生成相关的签名(例如,具有相同的VEIP),然后由SweetBait作为一个单独的组进行处理。

SweetBait将签名的最终版本部署到网络IDS和IPS。为了保证所连接的IDSs和IPSs的性能水平提高,并处理IDSs和IPSs的异构能力,可以指定字节数的签名预算,以便推送到传感器的签名数不超过某个级别。

为了确定将被推送到传感器的签名,SweetBait使用网络IDS传感器来估计相应攻击的毒性。由IDS生成的警报的密度被用作攻击的一个指示器,这反过来又决定了一个签名是应该推送到防御系统,还是仍然处于监视状态。换句话说,由许多站点频繁报告的签名比由较少数量的蜜罐报告的签名具有更高的毒力估计,因此更有可能被推送到IDS/IPS传感器。此外,可以手动将签名标记为有效或无效,以增加确定性。IPS传感器是否根据未手动标记为有效的签名自动阻塞流量是一个可配置的参数。关于IPS传感器的详细信息超出了本文的范围,可以在[32]和[22]中找到。

SweetBait子系统的一个重要特性是它能够在全球范围内交换签名。全球范围的协作对于识别和防止“零日”攻击是必要的,而SweetBait通过全球控制中心(GCC)使这在一定程度上成为可能。GCC收集签名和统计数据的方式与CC类似,主要的区别是在将签名推给CCs时缺少签名预算。

CC定期与GCC交换信息。这包括新生成的签名,以及已知签名的活动统计信息。GCC接收到的统计数据与本地生成的统计数据一起累积,以确定蠕虫的攻击性。这种积累确保了即使CC本身尚未受到攻击,它也能够对全球暴发作出反应,从而实现受保护网络的免疫。同样,我们使用SSL保护了CC和GCC之间的所有通信。

5 评估

我们从两个方面来评估Argos:性能和有效性。虽然性能对于蜜罐来说并不重要,但它需要足够快才能及时生成签名。

5.1 性能

对于实际的性能度量,我们将在Argos上运行的代码的速度与在没有仿真的情况下运行的代码的速度进行比较。我们这样做是为了各种现实的基准,即在现实生活中,基准也用于比较PC性能。请注意,虽然这是一种显示Argos引起的减速的诚实的方法,但它不一定是最相关的度量方法。毕竟,我们不使用Argos作为桌面,而且在实践中几乎不关心结果是否比没有模拟时显示得快得多。只有当攻击者决定避开运行缓慢的主机时,才会出现减速问题,因为主机可能是一个蜜罐。据我们所知,这种蠕虫在实践中并不存在。

通过对比观察到在Argos和未修改的Qemu的各种配置以及原始主机上运行的客户机的减速,进行了性能评价在这些实验中使用的主机是一台AMD AthlonTM XP 2800在2 GHz, 512 KB的L2缓存,1 GB的RAM和2个IDE UDMA-5硬盘,运行Gentoo Linux内核2.6.12.5。来宾操作系统在Qemu 0.7.2和Argos之上运行SlackWare Linux 10.1和内核2.4.29。为了改善客户的磁盘I/O性能,我们没有将文件用作硬盘映像,而是专用于其中一个硬盘。

量化观测放缓我们使用bunzip2和apache。bunzip2是一个CPU密集型UNIX减压效用。我们用它来把Linux内核v2.6.13解压源代码(约。38 MB),测量其执行时间使用另一个UNIX实用程序。Apache,另一方面,是一个流行的web服务器,我们选择,因为它使我们能够测试网络服务的性能。我们测量它的吞吐量最大的每秒处理请求使用httperf HTTP性能工具。httperf是能够产生高的单一文件要求确定web服务器的最大容量。

除此之外,我们还使用了BYTE magazine的UNIX基准测试。这个基准测试(简写为nbench)执行各种CPU密集型测试以生成三个索引。每个索引对应CPU的整数、浮点数和内存操作,并表示它与233mhz的AMD K6TM的比较情况。

图5显示了评估的结果。我们在主机上测试了基准测试应用程序,在运行原始Qemu的客户机上测试了基准测试应用程序,并在不同的Argos配置下测试了基准测试应用程序:使用bytemap,使用启用了codeinjection检测的bytemap。如图所示,分别为Vanilla QEMU、argoso - b和argoso - b - ci。y轴表示与没有仿真的相同测试相比,测试慢了多少倍。xaxis显示了测试的2个应用程序以及nbench报告的3个索引。图中的每种颜色都是经过测试的配置,从上到下依次是:未修改的Qemu、使用bytemap进行内存标记的Argos,以及启用了代码注入检测的Argos。表1还显示了Apache的吞吐量(以每秒处理的请求数计算)。

即使在最快的配置中,Argos至少比主机慢16倍。然而,大部分开销是由Qemu本身引起的。带有所有附加仪器的Argos速度最多比vanilla Qemu慢2倍。特别是在apache和float操作的情况下,只有18%的开销。这是由于缺乏一个真实的网络接口和仿真器中的硬件FPU,这导致了大部分的开销。此外,我们强调,我们没有使用任何Qemu可用的优化模块。这些模块将仿真器的性能提高到本机系统的一半左右。尽管我们很可能无法实现同样大的提速,但我们有信心实现这么大的优化

此外,尽管性能损失很大,但个人使用Argos的经验告诉我们,这是可以忍受的。即使在执行需要大量图形的任务时,这台机器也为把它当作桌面机器使用的操作人员提供了良好的可用性。此外,我们应该记住,Argos不是作为一个桌面系统设计的,而是作为一个托管宣传的蜜罐的平台。性能不是我们主要关心的问题。尽管如此,我们仍计划推出一些新功能,以进一步提高Argos未来版本的性能。[4]中描述了一个相关的项目,它采用了类似的方法,但主要关注性能,同时考虑保护桌面。

5.2 效果

为了确定Argos在捕获攻击方面有多有效,我们针对运行在其上的Windows和Linux操作系统发起了多次攻击。对于Windows 2000操作系统,我们使用Metasploit framework7,它提供了随时可用的漏洞,以及一种方便的方式来启动它们。我们测试了我们能够获得软件的所有漏洞。特别地,所有的攻击都是针对操作系统的专业版本所提供的软件中的漏洞进行的,除了第三方软件War-FTPD ftp服务器。虽然我们也成功地在Argos上运行了其他操作系统(如Windows XP),但我们只是刚刚开始对它进行评估。对于Linux操作系统,我们分别创建了两个包含堆栈和堆缓冲区溢出的应用程序,还使用了nbSMTP,这是一个SMTP客户端,它包含一个远程格式字符串漏洞,我们使用一个公开可用的漏洞对其进行了攻击。

表2列出了测试的漏洞以及底层操作系统及其相关蠕虫。对于Windows,我们只列出了相当著名的漏洞。所有的攻击都被Argos成功捕获,因此被攻击的进程被停止以防止从执行中利用有效载荷。此外,我们的取证shell代码执行成功,在攻击时为我们提供了进程名、id和开放端口号。

最后,在性能评估和攻击准备过程中,Argos并没有产生任何关于攻击的错误警报。少量的误报对自动响应系统至关重要。尽管这些结果并不能不可否认地证明Argos永远不会产生假阳性结果,但是考虑到已经测试了大量的漏洞,这可能表明Argos是相当可靠的。出于这个原因,我们暂时决定按原样使用签名,而不是生成自认证警报(SCAs[28])。但是,如果将来出现误报,Argos非常适合生成SCAs。

5.3 签名

评估的最后一部分涉及签名生成。为了说明这个过程,我们详细解释了Argos为表2中列出的Windows RPC DCOM漏洞生成的签名。

我们使用Metasploit框架,针对3个不同的Argos实例,使用不同的ip,使用上面提到的相同漏洞,用不同的有效负载发起3次攻击。这样做的动机是为了迫使Argos为相同的漏洞生成不同的签名。在本实验中,我们使用CREST算法(第4.2.3节)来生成签名,并将其提交给SweetBait子系统。

在关联过程中,CREST通过网络跟踪进行搜索,并重构相关TCP流的字节流。注意,签名生成器考虑的日志通常相当短,因为我们可以使用自建的FFPF框架[6]将不同的流存储在不同的文件中。因此,CREST可能会忽略很久以前完成的流,以及流向其他端口的流,而不是流向取证报告中报告的端口。签名生成时间包括各种大小日志的TCP重新组装如图6所示。

如4.2.4节所述,SweetBait被配置为执行积极的签名专门化。在接收到所有签名后,我们检查了它的数据库,发现它成功地将这些签名归类为同一攻击的一部分,并根据它们的相似之处生成了一个专门的签名。签名的大小有效地从大约180字节减少到只有16字节,如图7所示。该图显示了原始签名的有效载荷部分,由没有诱饵子系统的Argos生成,以及诱饵的专业化。签名以snort规则中表示内容字段的方式表示,即,可打印字符序列显示为字符串,而不可打印字节序列由字符|在左右包围,并由其十六进制值表示。注意,在每个原始签名中都可以找到SweetBait生成的专用签名,如图7中的框所示。

此外,我们使用专门的签名来扫描善意的网络跟踪,以确定是否可能产生误报。除了自产的痕迹,我们使用了RootFu DEFCON8竞争网络痕迹,这是公开的研究目的。我们首先通过使用开放源码社区snort规则(使用从snort9获取的规则)扫描跟踪,从而验证该漏洞不存在于跟踪中。接下来,我们用Argos生成的签名扫描它。同样,没有(错误的)警报。

尽管我们的签名生成算法相当简单,但是通过SweetBait子系统和在多个Argos网站的部署,我们能够以非常小的误报概率自动生成签名。

6 结论

在本文中,我们讨论了自动化入侵检测和响应系统设计领域的一个极端:一个基于x86仿真器的纯软件全系统解决方案,它使用动态污染分析来检测漏洞并保护未修改的操作系统、进程等。通过选择一个有利的位置,结合来自硬件级别(例如,物理地址的感知、内存映射和DMA)和更高级别(虚拟地址、每进程取证)的有吸引力的属性,我们相信我们的方法能够满足自动响应系统的需求

一旦检测到攻击,系统就会立即导出受污染的内存块和附加信息,然后将取证外壳代码注入到受攻击的代码中,以提取附加信息(例如,可执行名称和进程标识符)。接下来,它将内存块与网络跟踪关联起来以生成签名。来自多个站点的类似签名随后被细化以生成更小、更专业的签名,这些签名随后被传输到入侵防御系统。不使用任何仿真器优化模块的性能比不使用仿真器运行的代码要慢得多。即使如此,由于我们的预期应用领域是(广告)蜜罐,我们相信开销是可以接受的。更重要的是,该系统被证明是有效的,并被用于捕获和指纹一系列真正的漏洞。

未来的工作

我们整个项目的重点是检测真正的攻击和生成可用的网络签名。由于我们还没有遇到误报,所以这些签名应该直接使用,例如在我们自己的[22]这样的IPSs和snort[35]这样的IDSs中。在误报的情况下,我们计划生成自认证警报[28]的签名。未来的研究还涉及更先进的签名生成和攻击的自动分析。

指纹识别零日攻击的仿真器相关推荐

  1. 收藏!防范零日攻击的基础措施与高级防御

    什么是零日攻击? 零日攻击(zero-day attack)是一种利用计算机系统或软件应用程序中未知漏洞的网络攻击.由于漏洞未知,因此有问题的系统或应用程序无法及时得到修补或修复,因此称为" ...

  2. 瑞数动态安全 - 零补丁、零规则 主动抵御未知零日攻击

    越来越泛滥的零日攻击 在大多数网络安全从业者意识中,"零日攻击"往往是让人非常头痛的安全威胁.其高威胁性.突发性.高破坏性.大规模性的主要特点,让零日攻击能在网络安全地下黑市历时十 ...

  3. 零日攻击的原理与防范方法

    一.什么是零日攻击 要理解零日攻击,就得先来了解零日漏洞.据权威机构统计,现在我们使用的操作系统和应用程序,每一千行代码中就有可能存在四至五个编码漏洞.由于系统和应用程序的开发商不可能对所有的代码进行 ...

  4. IE发现新的零日攻击漏洞 用户可采取缓解措施

    11月4日消息,微软发布警告称,黑客正在对IE一个新的零日攻击漏洞进行新一轮的有针对性恶意软件攻击.这个安全漏洞能够让黑客实施远程执行任意代码攻击和路过式下载攻击. 微软在安全公告中称,这个安全漏洞是 ...

  5. 独家 | 2021年打破了零日黑客攻击的记录

    作者:Patrick Howell O'Neill翻译:欧阳锦校对:王可汗本文约2000字,建议阅读6分钟 本文为大家介绍了2021年发现的零日漏洞以及零日攻击,对零日漏洞的现状进行了简单分析,并给出 ...

  6. 零日漏洞指什么?如何有效应对?

    零日漏洞是网络安全中非常普遍且危害性极大的漏洞之一,是指被发现后立即被恶意利用的安全漏洞.简单的来讲,就是安全补丁与瑕疵曝光在同一天内,相关的恶意程序就出现.那么什么是零日漏洞?如何应对?具体请看下文 ...

  7. 新领域、新探索、新规划,以色列老牌安全厂商 Check Point 新变化:AI、零日安全

    2022 年,安全受到了技术界更广泛的重视.其中,云上的安全.物联网安全,都成为安全和云厂商的重点研究和发展的方向.2022年底,国际权威的研究机构 Gartner 发布了年度网络防火墙魔力象限,来自 ...

  8. 零日漏洞是什么意思?有什么危害?

    零日漏洞又称零时差漏洞,该漏洞是网络安全领域中比较常见的安全漏洞之一,且具有较大的危害性.那么零日漏洞到底是什么?该如何防范零日漏洞呢?我们通过这篇文章了解一下. 零日漏洞又被叫做零时差攻击,是指被发 ...

  9. 欧洲最大汽车经销商遭遇勒索攻击、谷歌紧急修复零日漏洞|2月15日全球网络安全热点

    安全资讯报告 谷歌在2021年向安全研究人员支付了创纪录的870万美元 谷歌表示,它向安全研究人员支付了创纪录的870万美元,其中30万美元捐给了慈善机构,用于在2021年通过其漏洞奖励计划披露数千个 ...

最新文章

  1. Spring Cloud Config 配置中心
  2. Python爬虫(十)_XPath与lxml类库
  3. Android之多线程工作-AsyncTask与handler
  4. gradle 构建过程
  5. python学习-综合练习二(整数和浮点数判断奇偶、质数判断)
  6. ie9支持string.trim()
  7. 苹果CMSV10橙色自适应25影视网主题模板
  8. ❤️20行Python代码❤️一键整理桌面、文件夹❤️世界都清净了❤️
  9. 前端日期计算年数_excel-常见日期 、时间函数
  10. 【DS】About Stack
  11. 文件存储,块存储,对象存储的区别
  12. Java 实现JSON字符串、JSON对象和Java对象的相互转换(fastjson)
  13. 一个简单的时间片轮转多道程序内核代码
  14. echarts柱形图根据数据排序顺序要求更改颜色
  15. 苹果发布 AI 生成模型 GAUDI,文字生成 3D 场景
  16. 爬虫第二弹:千图网电商淘宝模板图片下载
  17. iOS控件设置虚线框
  18. PHP+Mysql—留言管理系统网站(前端+后端、整套源码)
  19. Premiere导出视频音画不同步的解决方案
  20. 3D打印机远程挤出与近程挤出的优缺点

热门文章

  1. 从阿里云dms导出mysql无法导入_MySQL数据库怎么导入数据?怎么用DMS导入数据?...
  2. 从三大方面,分析 to B和 to C产品的区别与联系
  3. JNI:ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
  4. Qt--ipad滑屏效果
  5. 仿照余额宝余额动态变动
  6. 计算机视觉在农业领域中的应用
  7. VsCode镜像下载(国内镜像源,高速秒下)
  8. 工程流体力学笔记暂记43 (收缩喷管中的流动)
  9. 为你的树莓派WI-FI配置加密密码
  10. 【python基础】猜数字游戏