DDOS防御专家-提供超强DDoS高防/CC防护/大流量清洗服务!
当前位置:主页 > WEB安全 > 正文

ddos盾_国外高防vps_零误杀

01-13 WEB安全

ddos盾_国外高防vps_零误杀

VMRay Analyzer目前仍处于热测试阶段,但我们计划很快完成我们的第一个产品发布。在过去的几周里,我们不仅修复了错误,还通过添加一些附加功能来改进我们的软件。正如您可能已经知道的,我们的新分析器不仅能够剖析不同类型的用户模式恶意软件,而且还能够提供对64位内核模式rootkit(如TDL4、Gapz和Uroburos)的全面分析。由于动态rootkit分析是一个全新的课题,而且内核土地监控与处理用户模式组件完全不同,我们需要一些新的概念来处理和显示结果。在下一章中,我们将描述代码块、执行路径和延续如何帮助我们理解内核rootkit的语义和控制流。代码块和执行路径代码块(CB)是从某个内存地址开始,然后按顺序执行的一系列指令。与基本块不同,代码块可以包含多个分支操作,因此可以以不同的执行路径(EP)的形式执行。通常代码块只是一个函数,它首先由操作系统或驱动程序调用,然后自己执行一些子函数调用,然后返回。在某些情况下,它可以是APC、DPC,或者只是一个线程例程。在其他情况下,它要么是中断处理程序,要么是回调函数。虽然代码块的指令通常是连续存储的,但这不是必需的。实际上,指令可以放在任意位置。唯一重要的是它们通过直接的控制流指令相互调用,例如call或RET操作。在分析过程中,我们识别所有执行的代码块,记录所有不同的可观察执行路径,并适当地显示它们。下图显示了此输出的示例: 在本例中,代码块CB#6以三个不同的执行路径EP#10(2190次)、EP#12(一次)和EP#17(31次)的形式执行2222次。请注意,可能有比所示更多的可能执行路径,但在我们的分析中,只有三个执行了。如果我们研究一下不同的执行路径,显然在这三种情况下,我们总是得到相同的起始地址和起始指令。让我们从EP#10开始: 如图所示,此代码块的触发器是PsCallImageNotifyRoutine,这是一个内核函数,每次将新模块映射到内存中时,它都会调用预先注册的回调例程。在回调中,rtlisnameUnexpression用于比较新映射模块的名称与静态表达式"*kernel32.dll"。这个检查显然是用来检测新进程的,因为首先加载的模块之一总是这个Windows库。实际上,每个进程的第一个映射模块是映像可执行文件本身,之后是本机API(ntdll.dll)已加载,并映射kernel32.dll。注意,kernel32.dll只有在使用Win32子系统时才被映射。这适用于几乎所有运行在Windows操作系统上的进程。EP#10在36个不同的进程中执行,这是分析运行期间存在的所有进程的总数。因此,这个执行路径在每个进程中不仅执行一次,而且多次执行。这是合理的,因为Windows进程通常会将几十个甚至数百个模块映射到它们的地址空间中。正如我们从示例中看到的,rtlisnameexpression的name参数是不同的。事实上,新映射模块的值总是作为它自己的参数之一传递给回调例程的。对于这种变化的参数值,我们显示通配符*字母,为了便于说明,我们将第一个看到的具体值打印在括号中(SystemRootSystem32驱动器crashdmp.sys在这种情况下)。如果我们查看相关联的函数日志,我们可以看到这个函数是用系统中每个正在运行的进程的每个映射模块的文件名来调用的:...如果加载了kernel32.dll以外的模块,则每个检查的返回值为0。在我们的示例中,ddos高防ip防御原理,这是已加载的2190个其他模块的情况。但是,这个代码块还有两个执行路径,在这些路径中可以看到不同的行为。我们先看一下EP#17,它在31个进程中执行31次: 在这个执行路径中,*kernel32.dll的检查是成功的,因此结果序列与EP#10不同。这一次,恶意软件设置一个异步过程调用(APC),然后也返回。此代码块的第三个执行路径EP#12只执行一次。这发生在过程中短信服务.exerootkit的行为略有不同,但最终它也会设置APC,然后返回:代码块链接和延续代码块和执行路径的概念已经帮助我们理解未知内核代码的语义。但是,低价法国高防cdn,我们将它与一个称为Continuations的附加概念结合在一起。内核rootkit通常不是一段完整的代码。相反,它们在不同的地方与系统交互,并在需要时使用不同的机制来获得控制权。为了理解rootkit不同部分之间的关联和交互,阿里的服务器能防御CC吗,我们识别相关的代码块,并将它们链接在一起。这一次,与代码块不同,wayosddos防御设置,我们将重点放在通过间接控制流连接的指令上。例如,ddos攻击防御事件,如果一个代码块创建了一个新线程,而另一个代码块构成了已执行的线程例程,那么线程的创建者和它的目标函数之间就会建立一个延续关系。以下示例以代码块延续的形式显示了TDL4 rootkit的不同初始阶段之间的交互: 如果单击上面的图片并放大,可以看到链接在一起的不同步骤:当系统启动并且内核调试器初始化例程在kdcom.dll被称为。TDL4在引导加载器期间重写此例程,以便在系统引导期间获得控制权;因此,当调用此函数时,会触发代码块CB#1。CB#1只有一个执行路径,因此,它在图中用EP#1折叠,并且不存在不同的分支。在CB#1中创建了一个工作项,稍后由内核内部调用,尽管CB#1和CB#2之间没有直接的控制流,但是我们检测通过调用ExQueueWorkItem建立的间接关系。CB#2创建两个不同的continuation:它首先注册一个每次调用的回调例程,一个新的模块通过调用PsSetLoadImageNotifyRoutine映射到内存中,然后创建另一个工作项。相应地,图中有两条来自CB#2/EP#2的边。"加载图像通知"-回调例程由CB#6构成,正如我们在本文第一部分已经解释过的,请注意,上面描述的示例是在不同的目标操作系统上生成的,因此使用了不同的数字。如前所述,EP#12和EP#15都在返回前创建一个APC。由于在这两种情况下都使用相同的函数地址,两个不同的执行路径在CB#7中再次合并。以下所有阶段都使用与之前相同的概念。结论内核模式代码的动态分析是一项复杂且要求很高的任务。在这个场景中,被观察的代码拥有最高的系统特权,可以做任何它想做的事情。例如,它可以直接访问和重新配置硬件,修改加载的系统驱动程序,甚至替换操作系统的某些部分。因此,人们不能信任或依赖传统的控制流机制和转换,因为它们是有效的,因此在常规操作模式下是预期的。除此之外,在大多数情况下,恶意代码是非常分散的,并且分布在整个系统中。简单地在一行中列出所有被监视的恶意操作,或者将每个进程和线程的观察结果分组是没有意义的,因为我们习惯于用户模式恶意软件。取而代之的是,我们需要新的概念和想法,如何以一种对恶意软件分析员真正有益的方式聚合和呈现收集到的数据。我们相信我们已经成功地完成了这项任务!关于Ralf HundRalf博士于2013年在波鸿鲁尔大学获得计算机科学/信息技术安全博士学位。在他的研究期间,他专注于软件二进制文件的新分析方法,特别是恶意软件。他的研究结果发表在许多人的会议上

版权保护: 本文由 DDOS防御专家 原创,转载请保留链接: /web/61289.html

DDoS防御专家简介孤之剑
国内资深白帽子二十人组成员,前BAT资深网络安全工程师,知名网络安全站点板块大神,每年提交Google及微软漏洞,原sina微博负载插件开发者,现在整体防御复合攻击长期接受1-4.7T攻击,CC防护自主开发指纹识别系统,可以做到99.9999%的无敌防御。
  • 文章总数
  • 8170589访问次数
  • 建站天数

    QQ客服

    400-0797-119

    X