
1. 基于签名的静态扫描技术(YARA匹配防病毒软件)
2. 虚拟机技术
3. 主动防御
基于签名的静态扫描技术
当刚从Internet下载包含病毒的文件时,将对其进行静态扫描以查看其是否与病毒签名匹配.
传统的防病毒软件引擎使用基于签名的静态扫描技术,即在文件中搜索特定的十六进制字符串. 如果找到该文件,则可以确定该文件已感染某种病毒.
需要了解的几个概念:
1. 引擎前端: 捕获不是自己的程序行为的程序行为. 包括从内存运行的程序,对给定文件的行为的虚拟判断,来自网络的动态信息,等等.
2. 基于引擎机制的规则判断. 此链接表示防病毒引擎的质量级别. 一个好的反病毒引擎应该能够在此链接中发现许多或相当的病毒行为,并避免进入下一个判断链接. 为了更好地发现病毒,相继开发了所谓的虚拟机,实时监控和其他相关技术. 此链接称为防病毒软件引擎工作的核心层.
3. 引擎与病毒之间的交互. 此过程通常被视为最后阶段. 与前两个链接相比,此阶段很慢. 防病毒引擎需要将非自程序行为行为过程转换为防病毒软件本身可识别的行为标识符(包括静态代码等),然后与存储在病毒中的行为信息相对应,并进行处理相应地. 当然,必须承认,当前的防病毒软件在此阶段可以识别大量病毒. 因此,足够大的病毒通常可以弥补防病毒软件引擎的缺点. 但是必须认识到,如果可以在核心层终止并删除病毒程序,则防病毒软件的速度将大大提高. “很遗憾,我们目前没有足够聪明的防病毒引擎来完成此过程. ”这就是为什么有病毒的原因.
Norton微软最先进的安全核心合作伙伴供应商. 诺顿基于系统的最低级别使用系统核心驱动程序. 此实现是最安全或最先进的实现. 当然,这需要Microsoft的系统源代码级别支持(这需要很多钱). 是最稳定的实现方法.
大多数制造商使用中间件技术,该中间件技术作为系统底层与非自已应用程序之间的中间件存在并实现其功能;
其他一些供应商使用相对不安全的应用程序或嵌入式技术.
YARA Match防病毒软件
YARA是一种模式匹配工具,它使用规则来识别和分类恶意样本.
1. 在静态文件中,C2地址被加密,运行后可以通过C2地址识别样本.

2. 在静态文件中,互斥量名称已加密,运行后可以由互斥量标识样本.
3. 执行示例时将调用API. 该API的行为很少见,可以用作识别样品的核心规则,但会显式调用该API.
寂静银行规则
{
字符串:
$ a = {6A 40 68 00 30 00 00 6A 14 8D 91}
$ b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9}
$ c =“ UVODFRYSIHLNWPEJXQZAKCBGMT”
条件:
$ a或$ b或$ c
}
定义了一个名为silent_banker的规则.
当yara发现样本包含$ a或$ b或$ c的三个字符串中的任何一个时,该规则将命中.
注意:
使用rule关键字开始定义.
规则标识符(名称)是必不可少的,并且标识符词法与C变量一致.

在规则主体中,可以省略字符串部分,但条件是必不可少的.
元数据: 元数据提供了有关人们阅读规则的更多信息. 元数据不参与匹配判断.
$ a =“ ws2_32.dll” nocase不区分大小写,默认区分大小写
$ a =“域”全字匹配整个字
$ a = {E2 34 6B(C8 | AA C3)FB} |替换
$ a = / state: (on | off)/ match state: on或state: off
字符串:
$ a =“ md5”
$ b =“发送”
条件:
#a> 5和#b == 3字符串出现的次数
$ a at 100如果对象是文件,则为文件偏移量. 如果对象是进程,则它是虚拟地址(RVA)
$ a在100和bat(100..filesize)uint16(0)== 0x5A4Danduint32(uint32(0x3C))== 0x00004550确定当前文件是否合法PE2of(b在(100..filesize)uint16( 0)== 0x5A4D和uint32(uint32(0x3C))== 0x00004550确定当前文件是否为(bat(100..filesize)uint16(0)== 0x5A4Danduint32(uint32(0x3C))= 0x00004550的合法PE2当前文件合法吗PE2of(a,$ b,$ c)等于其中两个有多个字符串匹配
$ hex_string = {F4 23 [-] 62 B4}
此规则可以匹配以下两个字符串
F4 23 AAFF 62 B4

F4 23 AAAA AA AA AA ... FF FF 62 B4
模块介绍
导入“ pe”
IsPE规则
{
条件:
pe.characteristics&pe.EXECUTABLE_IMAGE
}
病毒签名需要满足以下要求:
1. 由于数据区域的内容易于更改,因此无法从数据区域中提取它. 一旦病毒程序更改了版本并且更改了数据内容,功能代码将变得无效. 其他街区相对更安全.
2. 在保持签名唯一性的前提下,应使签名尽可能短,以减少检测过程中的时间和空间复杂度,提高检测效率.
3. 经过详细反向分析后选择的特征足以将病毒与其他病毒或正常程序区分开.
4. 病毒程序的签名代码不能与普通程序匹配. 例如,如果选择了病毒入口点的二进制代码,则不可避免地会发生错误警报.
5. 功能代码的长度应控制在64个字节之内.
虚拟机技术
病毒检查引擎中的虚拟机不会像VMWare的工作原理那样为要检查的可执行程序创建虚拟执行环境,而是提供其可能使用的所有元素,包括硬盘,端口等. 它可以在上面自由播放,最后根据其行为确定它是否是病毒. (当然,这是一个好主意,但考虑到其设计太困难,需要模拟太多元素并且行为分析需要依赖人工智能理论,因此只能用作未来的发展方向. )现在,卡巴斯基就进入了.

设计虚拟机来检查病毒的目的是处理加密的变形病毒. 虚拟机首先确定并从文件中读取病毒入口代码,然后使用上述工作步骤来解释并执行病毒头的解密器. 最后,在执行结果中查找病毒签名(解密的病毒主体纯文本). 这里所谓的“虚拟”不是指创建的任何虚拟环境,而是指感染的文件并未实际执行,而是虚拟机模拟了其实际执行的效果. 这是虚拟机病毒检测的基本原理.
虚拟机技术主要表现在其较强的外壳穿透能力. 但是,许多防病毒软件仍可以向用户发出警报,以弥补缺乏脱壳的情况.
主动防御
主动防御技术是通过动态模拟防病毒专家系统,自动分析程序动作之间的逻辑关系,全面应用病毒识别规则知识,自动进行病毒识别以及自动识别病毒的目的来自动监视各种程序动作. 主动防御.
当我们在程序中调用API函数并运行程序时,该程序会将API函数所在的DLL文件隐式加载到进程中,以便该程序将像其自己的函数一样调用API函数.
例如,当我们编写的exe文件需要调用CreateProcess()函数时,它将把kernel32.dll加载到内存中(实际上,无论运行什么程序,kernel32.dll通常都会自动加载内存) ),然后调用动态链接库中的CreateProcess()函数(实际上是实际调用的是CreateProcessA或CreateProcessW).
真正的CreateProcess()函数现在位于kernel32.dll模块中. 实际上,这里提到的调用可以理解为直接跳转到要运行的函数的地址.
基于此知识,我们可以完全更改内存中API函数的映像,从而实现API函数的挂钩.
1.InlineHook
详细来说,它是直接使用汇编指令jmp来更改代码的运行过程. 首先,不要让它跳到0x7C80236B的位置,而是跳到我们编写的要运行的代码. 运行我们自己的代码后,然后决定是否让其跳至0x7C80236B继续运行.
详细地说,我们要编写的主动防御程序实际上是通过DLL程序实现的,函数挂钩(即Hook CreateProcess()函数),而我们的主要功能是将DLL注入到在此过程中,当停止监视时,请卸载DLL.
在Ring3地板上. 我们通常用来全局监视系统的方法是使用Windows全局挂钩.
2.DLL注入
可以看出,此类挂钩需要使用DLL注入实现. 如果使用此方法,则需要使用SetWindowsHookEx()函数来设置挂钩. 并将此函数的第一个参数设置为WH_GETMESSAGE,即监视传递到消息队列的消息.
实际上,大多数进程是由explorer.exe进程创建的. 例如,我们打开ProcessExplorer.
首先,感谢所有阅读,关注或喜欢我的博客的朋友! !当然,欢迎随时在博客中指出任何问题!欢迎有意者将您的留在私信中,我们可以一起交流,一起学习!我的学习交流QQ群366469549. 再次感谢您的支持! ! !我会继续努力! ! !
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shouji/article-290639-1.html
但伊拉克必须要只效忠美国且永远不许对他国抛媚眼示好