Cata1yst's blog

祇今尚有清流月,曾照高王万马过

0%

病毒学笔记一——计算机病毒理论

计算机病毒学

[TOC]

计算机病毒概论

计算机病毒

计算机病毒的基本概念

定义

计算机病毒是一种可以感染其它程序的程序,感染的方式为在被感染程序中加入计算机病毒的一个副本,这个副本可能是在原病毒基础上演变过来的;计算机病毒不能独立运行,它依赖其宿主程序的运行而运作。

国标定义

计算机病毒,是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。

与生物病毒的区别与联系

计算机病毒不是天然存在的,它是人为地利用计算机系统漏洞而产生的。

计算机病毒与生物学病毒都具有传染性和破坏性

计算机病毒产生的原因
  1. 计算机系统的脆弱性
  2. 出于军事或政治目的
  3. 出于科学研究需要
  4. 出于个人好奇心理或报复心理
  5. 加密软件
蠕虫

计算机蠕虫可以独立运行,并能把自身的一个包含所有功能的版本传播到另外的计算机上。

蠕虫的基本特性是自我移动自我复制

与病毒的区别

病毒不能独立运行。

计算机病毒的特性
  1. 寄生性

    计算机病毒都不是独立存在的,而是寄生于其他的程序中,当执行该程序时,病毒代码就会被执行。

  2. 传染性

    病毒可以从一个程序传染到另一个程序,从一个计算机或一个网络传染到另一个计算机或网络。

  3. 隐蔽性

    1. 病毒潜入系统后,不一定立即发作,可以长时间的潜伏,不易被用户发现,也不影响系统的正常运行。
    2. 在一定条件下,传染机制被激活,则进入传染期,破坏机制被激活时,则进行破坏。
    • 一方面指计算机病毒进入系统时没有明显现象,不易被发现
    • 另一方面指计算机病毒隐藏在正常程序或某种介质中
  4. 触发(潜伏)性

    1. 触发感染

      在一定条件下激活感染机制进行感染。

    2. 触发破坏

      在一定条件下触发破坏机制进行破坏。

  5. 破坏性

    • 直接破坏
      • 占用资源
      • 影响正常使用
      • 修改磁盘文件(删除、覆盖等)
      • 破坏硬盘(引导区、注册表、格式化等)
      • 破坏硬件
      • 盗取隐私
      • 破坏网络(网络病毒)
    • 间接破坏
      • 给用户造成心理压力
      • 造成业务损失
      • 法律问题
病毒的结构
  1. 引导模块
  2. 传染模块
    1. 传染条件判断
    2. 实施传染功能
  3. 破坏模块
    1. 破坏条件判断
    2. 实施破坏功能

计算机病毒分类

按照宿主媒介分类

  1. 网络病毒
  2. 文件病毒
  3. 引导区病毒
  4. 混合病毒

按照传染方法分类

  1. 引导扇区传染病毒
  2. 可执行文件传染病毒
  3. 网络传染病毒

按照破坏能力分类

  1. 无害

    仅占用空间

  2. 无危险

    显示图片、发出噪声等

  3. 危险

    对操作系统产生影响

  4. 重度危险

    破坏数据、清除内存和重要文件

按照算法分类

  1. 伴随型

    不改变文件内容,仅产生一个可执行文件的伴随文件。

  2. 蠕虫型

    通过网络传播,仅占用资源。

  3. 寄生型

    依附在引导扇区或者文件中,通过系统功能传播。

  4. 练习型

    未成形病毒,处于测试阶段。

  5. 变形病毒

    在传播过程中会改变自身内容和大小,一般包含一个加密结构。

按照链接方式分类

  1. 源码型

    添加到编译前的编程语言文本中,经过编译而称为程序的一部分。

  2. 嵌入型

    插入到现有程序中,并改变宿主程序使当其执行时优先执行病毒程序

    最难编写、最难清除。

  3. 外壳型

    不改变宿主程序,仅将自身包围在宿主程序周围,可以通过检查文件大小清除。

  4. 操作系统型

    进入操作系统并获取较高权限,危害极大。

计算机病毒的症状

感染症状

  1. 突然死机
  2. 操作系统无法启动
  3. 运行速度变慢
  4. 内存不足
  5. 通信异常
  6. 无故请求对软盘的写操作
  7. 启动正常应用程序时报错
  8. 系统文件日期、大小发生改变
  9. 磁盘空间迅速减小
  10. 陌生邮件

发作时症状

  1. 自动运行程序(弹出对话、播放音频、显示图片、发送邮件等)
  2. 桌面图标改变
  3. 硬盘指示灯闪烁
  4. 鼠标不受控制(木马)

发作后症状

  1. 硬盘无法启动
  2. 系统文件丢失
  3. 文件目录改变
  4. 文件损坏
  5. 文件被加密
  6. 主板被破坏
  7. 网络瘫痪

病毒命名规则

前缀名—家族名—组名—大变种—小变种—修改者

一般来说前两个是家族名和组名,但是如果最前面由全大写、下划线和数字组成,则可能是前缀名,剩余名字依次后延。

病毒模型

病毒伪代码的共性

  • 对于每个程序,都存在相应的感染方式。即病毒是一个从程序到程序的映射

  • 病毒在每个被感染程序的每个输入上有三种选择

    • 破坏

      不执行原先的功能,而去完成其它功能

    • 传染

      执行原先的功能,同时如果程序能终止,则传染程序

    • 模仿

      既不破坏也不传染,不加修改地执行原先的功能

病毒传播模型

病毒检测的一般问题

不可能制造出一个图灵机,并利用该计算机判断RASPM_ABS中的可执行文件是否含有病毒。

蠕虫传播模型

SIS模型

适用于只有易感程序和已感染程序两类,但会反复感染的病毒

模型假设

易感程序被计算机病毒传染后,变为已感染程序,可被杀毒再次变为易感程序,无潜伏期、无免疫力。

SI模型

适用于只有易感程序和已感染程序两类,且不会反复感染的病毒。

模型假设

易感程序被计算机病毒传染后,变为已感染程序,无潜伏期、无杀毒恢复的情况、无免疫力。

SIR模型

模型假设
  • 已被病毒感染的文件具有免疫力
  • 病毒的潜伏期很短,近似地认为等于零。

该模型下病毒强度和感染主机数符合logistic曲线,具有慢启动、快传染、缓消失三个阶段。

Fred Cohen “四模型”理论

基本隔离模型

取消消息共享,将计算机与外界通信隔离。

分隔模型

将用户群分为若干封闭子群,病毒只能在子群内部传播。

流模型

对信息流作出阈值限制,使之只能在一定距离内传播。

限制解释模型

采用固定的解释模式,从而杜绝病毒感染。

计算机病毒模型理论启示

  • Cohen模型本质是在安全性与共享性之间的权衡,通过限制权限和系统隔离将病毒传播限制在一定范围内。
  • 写操作是病毒所必须含有的,也是最薄弱的环节,在病毒执行写操作时检测出其中的病毒代码进行防范
  • 设计动态监控措施,使之适应各种变化
  • 全面防护。分级防护只会使得计算机病毒种类越来越多
  • 遏制计算机病毒的核心是人的管理

计算机病毒结构与工作原理

病毒的工作流程

1703162674988

四个模块:引导、感染、触发、破坏。

两个状态:静态、动态。

引导模块

寄生
寄生位置

引导区、文件

寄生手段

替代法:将原有内容搬迁至其他位置后植入病毒代码,常见于引导区病毒。

链接法:将代码加入文件头尾处并修改文件入口至病毒模块,常见于文件型病毒。

引导过程

驻留内存 $\rightarrow$ 获取控制权 $\rightarrow$ 恢复系统功能

引导区病毒

启动 $\rightarrow$ 执行病毒引导模块 $\rightarrow$ 加载感染、破坏、触发模块至内存 $\rightarrow$ 驻留内存 $\rightarrow$ 跳转到系统引导程序 $\rightarrow$ 正常启动。

文件型病毒

执行文件 $\rightarrow$ 跳转到病毒引导模块 $\rightarrow$ 加载感染、破坏、触发模块至内存 $\rightarrow$ 驻留内存 $\rightarrow$ 转回原始入口处 $\rightarrow$ 正常执行文件。

感染模块

感染条件
  1. 被动传染

    用户拷贝文件、磁盘或者进行网络通信时将病毒文件转发至另一台计算机上。

  2. 主动传染

    病毒程序运行时,若满足病毒程序内部的感染条件,则可以主动感染其他设备。

传染方式
  1. 立即传染

    运行宿主程序时,病毒程序先一步运行,完成对其他文件或磁盘的感染,再执行宿主程序。

  2. 伺机传染

    驻留在内存的病毒先对系统进行检查,当系统满足一定条件时才进行感染。

传染过程

宿主文件被执行 $\rightarrow$ 加载各种模块到内存 $\rightarrow$ 启动感染

文件型病毒传染机理
  1. 重入检测

    病毒对文件进行检查,根据其是否含有自身独特标识判断是否被感染过。

  2. 链接

    当满足条件时,病毒会链接到文件中,本体则保存到磁盘。

  3. 监视

    完成一次传染后,病毒会继续监控其他文件,等待下一次传染。

破坏模块

破坏模块是病毒的表现模块,但是并不是破坏能力越强越好。

触发模块

触发模块的目的是调节病毒的攻击性和潜伏性之间的平衡。

16位操作系统病毒编制技术

引导型病毒

计算机系统引导程序流程

使用含有病毒的软盘启动

1703162745567

启动带病毒的系统

1703162762848

文件型病毒

16位系统可执行文件:COM、MZ、EXE、NE等

其中COM文件没有重定位机制,MZ格式具有重定位功能。

NE是Windows中为兼容MZ格式而出现的,它包含MZ文件头以及一个自身的文件头,之后才是可执行文件的开始;NE的一个重要特性是它将数据、代码隔离储存,在运行时进行动态链接

MZ文件头

病毒通过文件头中的文件类型标记项确定文件类型,根据扇区数最后一个扇区字节数计算文件大小,根据文件头大小项确定代码开始位置,最终修改初始代码段指针(IP)和初始代码段段地址(CS)使自身代码优先执行。

32位操作系统病毒编制技术

PE文件格式

PE是Win32的可执行文件格式。

PE文件包含MZ文件头和PE文件头;接下来是节表,用于各小节的索引;之后是每一个节点内容,每一节都是一块具有共同属性的数据。

重定位计算

正常程序执行的变量和函数的相对地址都是预先计算的,而病毒是植入原有程序的部分,其相对地址较难计算。

通过动态参照点解决链接后病毒变量及病毒代码的寻址问题。

例如 lea eax,[ebp+(offset var1-offset delta)] 就是一种重定位代码。

API函数

正常程序可以通过引用表获得,而病毒只是插入程序的代码段,没有自己的引入表。

通过寻找相关链接库在执行过程中的基地址解决病毒植入后没有自身引入表问题。

内存映射文件

内存映射提供了一组函数,这组函数将文件内容全部或部分搬入进程的虚拟空间,使得程序对文件的访问可以直接在虚存访问;对文件数据的操作也相当于在内存去操作。可以极大提高运行效率。

病毒通过该技术减少资源占有,提高隐蔽性。

病毒技术特征

驻留内存

Dos系统

驻留方法
  • 在CONFIG.SYS中作为设备驱动驻留
  • 调用INT 21H中断
驻留位置
  • Dos系统区空闲区域
  • 高端内存区空闲区域
  • 视频内存块空闲区域
  • 中断向量表空闲区域
  • 系统分配的内存块
驻留大小
  • 病毒驻留内存大小一般在1K到几K之间
  • 一般会等待系统自动为自己分配内存,以减少被用户发现的风险
  • 引导区病毒可以不含有重入检测,减少代码量

Windows系统

驻留方法
  1. 作为一个独立的应用程序运行(可以隐藏窗口)
  2. 向系统申请空间
  3. 作为设备驱动程序

防止重载

  • 静态加载时,在SYSTEM.INI文件中包含一条加载设备驱动的消息
  • 动态加载时,利用CPU特殊位来标记

病毒的防止重载机制也衍生出一种防病毒方法,即预先修改CPU/内存状态使得病毒以为自身已经驻留在内存中。

病毒变种

概念

变形

通过修改病毒代码,使其躲过现有病毒检测程序,新出现的病毒称为变形。

变种

变形了的病毒继承父本病毒的主要特征时,称为变种。

新品种

变形病毒已具备足以区别于父本病毒的特征时,称为新品种。

变形强度

一维变形病毒
  1. 保留基本特性
  2. 与其他形态基本没有连续多个字节相同
  3. 代码及其相对空间的排列保持不变
二维变形病毒
  1. 具有一维变形的特征
  2. 变化代码之间的相对位置也发生变化
  3. 文件长度可能不同
三维变形病毒
  1. 具有二维变形的特征
  2. 能够将自身分块保存在不同位置
  3. 任何一子块被激活都可以独立拼凑出完整代码
四维变形病毒
  1. 具有三维变形的特征
  2. 特性随时间变化

EPO(Entry Point Obscuring)技术

基于杀毒软件不会扫描文件的所有字段,可以将病毒插入到文件中间的某处以逃过查杀。

抗分析技术

  1. 加密技术

    加密技术是一种静态抗分析技术,分析者在没有解密密钥的情况下不能查看病毒代码明文,因而也无法识别病毒特征。

  2. 反跟踪技术

    反跟踪技术是动态抗分析技术。

    1. 键盘封锁

      使分析者无法输入指令跟踪病毒运行。

    2. 关闭屏幕

      使病毒运行过程不可见。

    3. 修改堆栈指令

      可以使反汇编程序失效。

    4. 运行计时

      基于正常运行和debug跟踪执行时间的差别,判断自身是否被跟踪。

    5. 动态生成指令

      修改病毒代码使其不可阅读,但在执行过程中逐步恢复,并在执行结束后销毁。分析者即使用了反汇编技术也无法获得病毒全貌。

隐蔽性病毒技术

引导型病毒隐藏

  1. 方法一

    修改中断指令INT 13H的入口地址,使其指向病毒代码。当该指令入读取受感染扇区时,病毒会抢先将其截获,并将不受感染的内容返回给调用函数,以造成扇区未被感染的假象。

  2. 方法二

    启动其他程序时,病毒先恢复受感染区域,此时其他程序只能看到正常的扇区。当其他程序执行完毕后再重新感染。

文件型病毒隐藏

病毒会拦截来自其他程序的访问指令,之后恢复受感染文件,将正常文件返回给接口,文件被关闭后再次感染。

宏病毒隐藏技术

首先通过宏病毒代码删除相关的菜单项,同时使用宏病毒自己的FileTemplates 和ToolsMacro宏(Springer例)替代系统缺省的宏。

多态性病毒技术

多态病毒就是没有特殊特征码的病毒,这种病毒无法(或极难)用特征码扫描法检测到。

实现多态的方法

  1. 随机数加密
  2. 在执行过程中改变病毒代码
  3. 添加额外指令序列

多态的分级

  1. 半多态

    具有一组有限的解密模式,实践过程中随机选取一个。

  2. 具有不动点的多态

    存在一句或几句不变的语句,其他语句可变。

  3. 带有填充物的多态

    包含有无实际功能的代码混淆视听。

  4. 算法不变多态

    病毒解密使用的算法固定,但指令的顺序可变。

  5. 算法可变多态

    包含上述特性但解密代码的指令可变或部分可变。

  6. 完全多态

    病毒可以分块并随机分布在文件各个位置,必要时可以重新组装。

对于前三种,代码仍保留了部分不变语句,可以使用改进的特征码检测。

对于第四种,可以对特征码进行扩增。

对于最后两种,传统的查杀方法无效,可以使用虚拟执行技术。

插入型病毒技术

将病毒各个部分插入到宿主的不同位置处的一种技术。

超级病毒技术

超级病毒技术就是在计算机病毒进行感染、破坏时,使得病毒预防工具无法获得运行机会的病毒技术。

难度较大且具有时效性

破坏性感染技术

破坏性感染病毒是针对计算机病毒消除技术的一项病毒技术,它使得收攻击的文件或磁盘无法完全恢复。

传播性差,但可以延长潜伏时期来改善。

病毒自动生产技术

病毒自动生产技术(批量生产各种变形的病毒),不是从质,而是从量上,压垮病毒分析者。

网络病毒技术

网络病毒是指以网络为平台,对计算机产生安全威胁的所有程序的总和。