0%

软件安全——第9章

Chapter 9 恶意软件防护技术

9.1 检测对象与策略

何为恶意软件/代码检测?

  • 将检测对象与恶意代码特征进行对比分析,定位病毒程序或代码,或检测其恶意行为。

检测对象:

  • 引导扇区(引导区病毒、MBR木马等)
  • 文件系统中可能带毒的文件(主要检测对象,几乎所有形式的文件都有可能带毒)
  • 内存空间(有的恶意代码只存在于内存或只在内存中被还原)
  • 主板BIOS(早期的病毒如CIH会破坏BIOS)
  • 网络流量、系统行为等(通过行为间接检测可能的恶意代码)

检测策略:

  • 专用检测技术:针对特定的已知的恶意代码。必须实时更新病毒库版本(如文件特征值检测技术)
  • 通用检测技术:针对已知和未知的恶意代码,以广义行为特征或一般的行为特征作为判定依据(如启发式扫描技术、主动防御技术等)

9.2 特征值检测技术

病毒特征值:鉴别特定计算机病毒的一种标志,通常为一段或多段二进制串或字符串。

检测思路:获取样本 --> 提取样本特征 --> 更新病毒库 --> 查杀病毒

特征值提取选择

  • 特定子串:具有特殊意义的字符串等。
  • 感染标记:用于防止恶意代码重复感染的标记,虽然广泛存在但各不相同。
  • 从病毒代码的特定地方开始取出的连续的、不大于64且不 含空格(ASCII值为32)的字节串。

提取方法

  • 人工提取
  • 自动提取(容易造成误杀)

优点
检测速度快,误报率低,技术成熟
缺点
只能检测已知恶意代码且容易被绕过

恶意软件对抗技术

  • 手工修改自身特征,利用反病毒软件检测的结果进行针对性修改
  • 自动修改自身特征,如加密、多态、变形等

9.3 校验和检测技术

校验和:文件校验,与密码学中的Hash函数相关。常见的有CRC校验、MD5校验、SHA1校验等。

检测思路:在文件使用/系统启动过程中,检查检测对象的实际校验和与预期是否一致,因而可以发现文件/引导区是否感染。
预期:正常文件内容和正常引导扇区数据

检测方式

  • 系统自动检测:校验和检查程序常驻内存,每次运行应用程序都进行检查,需要预先保存校验和。
  • 专用检测工具:计算正常状态文件的校验和,将校验和值写入文件或检测工具后比较。
  • 自检:带有校验和检测功能的程序,将正常状态校验和写入自身,应用程序启动时比较现行校验和与原校验和值完成自检。

检测内容

  • 文件头部:在文件很大的情况下为节省时间只对头部进行校验
  • 文件属性:检查文件长度、创建时间、读写属性、首簇号等
  • 文件内容:检查整个文件
  • 系统数据:检查引导扇区、中断向量表、驱动程序处理例程等

优点
方法简单,能够发现未知病毒,能够发现文件的微小变化
缺点
必须先保存正确的校验码,容易误报,效率低,不能识别病毒类别

9.4 启发式扫描技术

恶意代码检测经验和知识的软件实现。

检测可疑的程序代码指令序列

  • 格式化磁盘类操作(破坏)
  • 搜索和定位各种可执行程序的操作(可能要感染)
  • 实现驻留内存的操作(隐藏)
  • 发现非常用的或未公开的系统功能调用的操作、子程序调用中只执行入栈操作(正常的函数不会这样)、远距离跳转指令(超过文件长度的三分之二) 等
  • 敏感系统行为
  • 敏感API函数(序列)调用功能

关键API函数

  • GetModuleHandleA:返回可执行文件句柄
  • LoadLibraryA:加载动态库
  • GetProcAddress:获取API函数内存地址
  • ExitProcess:退出进程
  • VirtualAlloc:分配堆内存空间
  • VirtualFree:释放堆内存空间

启发式扫描步骤

  • 定义通用可疑特征(指令序列或行为)
  • 对上述功能操作将被按照安全和可疑的等级进行排序,授以不同的权值
  • 鉴别特征,如果程序的权值总和超过一个事先定义的阈值,则认为“发现病毒”
  • (可见启发式扫描与机器学习有一定的关联)

优点
能够发现未知病毒
缺点
误报率高

通常使用传统扫描+启发式扫描方式检测病毒,可降低误报率

恶意软件对抗技术

  • 直接关闭防病毒软件
  • 关闭启发式机制

9.5 虚拟机检测技术

随着加密、加壳、病毒变形的出现,需要通过虚拟机技术进行检测。

虚拟机检测技术:在反病毒系统中设置的一种程序机制,它能在内存中模拟一个小的封闭程序执行环境(类似于沙箱机制),所有待查文件都以解释方式在其中被虚拟执行。(一般只需要虚拟执行一小部分代码)

优点:能够有效处理加密类病毒,与传统检测方式结合能够有效准确率,与启发式扫描方式结合能够有效检测未知病毒。

9.6 主动防御技术

动态监视所运行程序调用各种API的动作,自动分析程序动作之间的逻辑关系,自动判定程序行为的合法性。(即无论是否有恶意代码存在,都主动监控系统)

优点:可发现未知恶意软件、可准确地发现未知恶意软件的恶意行为。
缺点:可能误报警、不能识别恶意软件名称,以及在实现时有一定难度


练习题
1. 蜜罐技术是近年来较为热门的一种安全技术。安全运营商为了获取最新的恶意代码,会向外开放一个有某些特定漏洞的网络端口以供连接。这些网络端口不提供任何服务,因此正常的访问者不会进入此端口,而某些恶意代码会将其误认为是脆弱的可攻击对象而进入攻击。此时安全运营者就能够获取到该恶意代码的一些具体信息,如监控其攻击方式与流程、获取关键文件等,以此来扩充自己的病毒库并研究防御措施。据此回答下列问题:
(1) 获取病毒样本后,研究人员发现这个病毒采用了某种加壳方式。那么最好应该使用__________方式进行恶意代码的检测,不使用特征值检测的原因是__________________________。
(2) 一天,研究员在几个“蜜罐”中都发现了一种恶意代码。分析发现,代码中对字符串的一些字节进行了替换,但替换位置不同。这种恶意代码能否使用特征值检测方式进行检测?_______ (能或不能),原因是_________________________。