计算机病毒入侵与检测

更新时间:2023-03-29 12:16:01 阅读量: 建筑文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机病毒入侵与检测

大连理工大学

本科实验报告

课程名称:计算机病毒与入侵检测 学院(系): 专 业: 网络安全 班 级: 学 号: 学生姓名: 郭鹏飞

2011年 9 月 19 日

计算机病毒入侵与检测

本练习由单人为一组进行。

首先使用“快照X”恢复Windows系统环境。 一.网页恶意代码 1.恶意网页1

新建记事本HostilityCode1.txt,在文本中编写如下代码,保存代码并退出,更改扩展名.txt为.html,双击HostilityCode1.html页面,观察页面效果。 <HTML> <BODY> <SCRIPT>

var color = new Array color[1]=”black” color[2]=”white” for(x=0;x<3;x++) {

document.bgColor = color[x] if(x==2) { x=0 } }

</SCRIPT> </BODY> </HTML>

页面效果:____________________。

并说明其实现原理:___利用死循环切换页面颜色_________________。 2.恶意网页2

新建记事本HostilityCode2.txt,在文本中编写如下代码,保存代码并退出,更改扩展名.txt为.html,双击HostilityCode2.html页面,观察页面效果。 <html> <head> <title>no</title>

<script language=”JavaScript”> function openwindow() {

for(i=0;i<1000;i++)

window.open(“http://10.0.0.50”) } </script> </head>

<body onload=”openwindow()”> </body> </html>

页面效果:_____。

计算机病毒入侵与检测

并说明其实现原理:_______。 二.svir.vbs病毒专杀工具设计 1.观察svir.vbs病毒感染现象

(1)查看病毒要感染和修改的目标项。

进入实验平台,点击工具栏中的“实验目录”按钮,进入脚本病毒实验目录,使用UltraEdit或记事本打开svir.vbs病毒文件查看其源码。

由病毒源码可知,病毒首先要复制自己的副本到指定目录,然后在注册表中添加启动项,再感染指定目录下的文件,最后显示发作信息。因此我们要查看这些相关项在病毒发作前的状态。根据病毒源码,查看如下项:

系统目录下的病毒副本

在“C:\WINDOWS”目录及其子文件夹中搜索是否有文件“MSKernel32.vbs”。

注册表中的开机启动项

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\MSKernel32

指定感染目录下的文件

查看C:\JLCSS\TOOLS\Virus\ScriptVir\中的子目录及不同类型的文件是否都变成以“.vbs”结尾的脚本文件。

(2)双击“svir.vbs”运行病毒文件。

(3)重复查看病毒要感染和修改的目标项是否有被病毒感染的现象。 (4)重启计算机观察是否有病毒发作现象。 2.手工查杀病毒 (1)结束病毒进程。

打开“任务管理器”结束Windows脚本宿主进程。

“svir.vbs”是用VBS脚本语言编写的,它是通过Windows脚本宿主“wscript.exe”程序解释执行的,所以结束病毒进程就是结束“wscript.exe”进程。 (2)删除系统目录中的病毒副本。

在C:\WINDOWS目录及其子文件夹中搜索文件MSKernel32.vbs,并删除。 (3)修改注册表。

打开“注册表编辑器”找到注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\Run\MSKernel32,将其删除。 (4)恢复被感染的文件。

在病毒发作后,指定感染目录下病毒要感染项都生成以原文件名命名,以“vbs”为扩展名的病毒副本,原来的文件被修改了文件属性,成为了隐藏文件。

删除病毒文件

在病毒指定感染目录及其子目录中,删除所有被病毒感染后生成的以“.vbs”为扩展名的文件。

恢复文件属性

打开“资源管理器”,单击“工具”| “文件夹选项”| “查看” , 选中“显示所有文件和文件夹”,单击“确定”后显示被隐藏起来的文件。

右键单击隐藏文件选择“属性”,在“常规”选项卡 中 取消对“隐藏”的选择 , 单击“确定”恢复文件属性。

3.设计脚本病毒专杀工具查杀病毒

(1)根据实验原理介绍的相关知识编程实现针对“svir.vbs”的专杀工具。要求专杀工具能够实现如下功能:

删除病毒在系统目录中创建的副本。 删除病毒在注册表中创建的开机启动项。

计算机病毒入侵与检测

删除病毒在指定目录中感染的文件,并恢复被隐藏的原文件的属性。 结束病毒发作时弹出的消息框进程。

(2)运行病毒文件“svir.vbs”。

(3)运行专杀工具对病毒“svir.vbs”进行查杀。

思考问题:

1.脚本病毒有什么弱点?

需要wscript.exe才能执行

计算机病毒入侵与检测

大连理工大学

本科实验报告

课程名称:计算机病毒与入侵检测 学院(系): 软件学院 专 业: 班 级: 网络0901 学 号: 学生姓名:

2011年 9月 19 日

计算机病毒入侵与检测

主机安全审计

本练习由单人为一组进行。

首先使用“快照X”恢复Linux系统环境。 一.查看连接时间日志

连接时间日志是保持用户登录进入和退出时间的文件。 1. 查看系统已登录用户(使用工具查看/var/run/utmp日志)

(1)进入实验平台,单击工具栏“控制台”按钮进入工作目录。输入命令:w,查看系统已登录用户。显示信息如图4-4-1所示。

图4-4-1 当前已登录用户

显示信息第一行是汇总信息,包括系统当前时间、系统启动到现在的时间、登录用户数目、系统在最近1秒、5秒和15秒的平均负载。

其后每行显示的是每个用户的各项数据,其中包括:登录帐号、登录终端名称,远程主机名称,登录时间、空闲时间,JCPU、PCPU、当前正在运行的命令行。其中JCPU时间指的是和该终端(tty)连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间。而PCPU时间则是指当前进程所占用的时间。

(2)同组主机telnet登录本机(用户名:guest;口令:guestpass),本机再次通过w命令查看系统已登录用户。

(3)与“w”命令功能相似的命令还有“who”、“users”命令,请在控制台中运行这两个命令并查看运行结果与“w”命令的异同。

2. 查看登录用户历史(使用工具查看/var/log/wtmp日志)

(1)在控制台中输入命令:last,查看近期用户或终端的登录情况。显示信息如图4-4-2所示。

图4-4-2 登录用户历史

显示信息中包括用户登录时间。如果关心某一个用户的登录历史,可以在“last”命令后面加上用户名参数,上例中使用“last root”命令就会得到关于用户root的登录信息。

计算机病毒入侵与检测

(2)在实验中我们会发现,last命令会列出好多用户登录历史,这样不利于我们查找,有时候我们只希望打印出最近的用户登录历史,选项n用来打印出最近的n个用户的登录历史,在控制台输入命令:last -n 5,能够得到最近5个用户的登录历史。 3. 查看用户的上一次登录历史(使用工具查看/var/log/lastlog日志)

在控制台输入命令:lastlog,查看所有用户的最近登录情况,如图4-4-3所示。

图4-4-3 用户登录历史

显示信息表明用户guest上一次登录时间是2008年1月17日18:43:30,而用户gdm从来没有登录过。

4.查看当前用户使用过的命令(查看bash_history)

(1)在控制台中输入命令:touch new-file.txt,新建文件new-file.txt。

(2)关闭当前控制台,重新打开一新控制台,进入当前用户主目录,而后继续输入命令:cat .bash_history,查看当前用户使用过的命令。 二.查看系统服务日志

1. http日志查看(查看/var/log/httpd/目录下日志)

(1)首先进入http服务日志所在目录/var/log/httpd/,若日志文件access_log存在,将其内容清空,可通过命令:echo "" >/var/log/httpd/access_log实现。 (2)请同组主机访问本机Web服务。 (3)本机再次查看access_log日志内容。 2. ftp日志查看(查看/var/log/xferlog日志)

按照1中的实验步骤,同组主机访问本机FTP服务,查看xferlog日志内容。 三.文件完整性检查

对Linux文件系统中的任何文件进行完整性检查,以此确定文件是否被更改过。这里我们以用户口令文件/etc/passwd为例,通过系统工具md5sum来实现对该文件的完整性检查。 (1)使用md5sum对/etc/passwd文件生成摘要,具体命令如下: md5sum /etc/passwd > md5result,其中md5result为自定义的文件名。

(2)在passwd未做任何变动的情况下,对该文件进行完整性检查,具体命令如下: md5sum -c md5result,其中参数-c md5result表示从md5result文件中读取源文件摘要,并进行文件完整性检查。

若passwd文件无变动(生成摘要到当前时间段内),则会出现“passwd: OK”的信息提示。

(3)使用vim编辑器编辑/etc/passwd,对文件进行任意改动,存盘退出(先按esc键,接着键入“:wq”回车)。

「注」 关于passwd文件的更多解释见实验五|练习一|任务二。

对passwd文件进行完整性检查,由于passwd已被修改过,所以检查后的信息提示为:“passwd: FAILED”。

四.利用安全审计工具对Linux系统进行安全审计

在该实验步骤中我们利用第三方安全审计工具LSAT对Linux系统进行本地安全检查。

计算机病毒入侵与检测

LSAT—Linux Security Auditing Tool,是一个较新的本地安全检查程序,它能够找出那些经常被忽略的常见系统配置错误。另外,它是模块化的,很容易创建额外的检查,由其生成的本地安全审计报告具有很好的可读性,默认的报告文件为lsat.out。

(1)单击工具栏“控制台”按钮,进入lsat所在工作目录。该目录中有两个原始文件:lsat执行文件和exclude1.txt文本文件。由exclude1.txt文件指定了lsat运行时所要检查的系统安全块。

(2)文件exclude1.txt枚举出了lsat扫描检查所涉及的范围,包括文件权限、rpm安装包、用户帐号、系统通用配置、host文件检查等诸多方面。该文件默认只要求lsat对inetd、passwd、ftpusers和ipv4进行安全检查。你可以对要检查的安全块进行扩充,只需在相应行前加“#”号即可对该模块进行安全检查。

(3)对系统进行安全检查,在控制台中输入命令:./lsat -x exclude1.txt -o result.txt。其中,-x表示根据exclude1.txt进行安全检查,-o则指定了输出的审计报告名为result.txt(若不指定输出文件,默认为lsat.out),审计报告可以自定义其它文件名。执行过程提示信息如图4-4-4所示。

图4-4-4 lsat提示信息

(4)阅读审计报告,在控制台中输入命令:cat result.txt | more,命令“more”用于分页显示文件。图4-4-5是审计报告中的一个片断:

图4-4-5 审计报告片断

在图4-4-5所示片断中,lsat建议将系统用户lp、sync、news及uucp删除掉,因为这些账户可能存在不安全因素。该片断显示的只是lsat报告的部分审计结果,同学们可对lsat得出的审计报告进行仔细的阅读,按其建议(或警告)信息对系统进行相应的修订操作。

计算机病毒入侵与检测

大连理工大学

本科实验报告

课程名称:计算机病毒与入侵检测 学院(系): 专 业: 网络安全 班 级: 学 号: 学生姓名: 郭鹏飞

2011年 9 月 25 日

计算机病毒入侵与检测

本练习由单人为一组进行。

首先使用“快照X”恢复Windows系统环境。 一.验证利用OllyDBG修改病毒感染程序

(1)进入实验平台,单击工具栏“实验目录”按钮,进入文件型病毒实验目录。新建文件夹“text”,将文件夹“hei”下的hei0.exe(未感染病毒的可执行程序)复制到text目录中。点击工具栏“LaborDayVirus”按钮,将目录中的LaborDayVirus.exe也复制到text目录中。将系统时间调整为5月1日,双击text目录下LaborDayVirus.exe感染hei0.exe文件,观察hei0.exe感染病毒前后的大小变化。

(2)单击工具栏“OllyDBG”按钮启动ollyDbg1.10,单击文件菜单中的“打开”项,选择要修复的hei0.exe。由于病毒修改了原程序的入口点,因此会有程序入口点超出代码范围的提示,如图10-2-1所示。

图10-2-1 入口点警告提示

单击“确定”按钮继续,程序会停在病毒修改后的程序入口点(hei0.exe的入口点为0x00403200)上,在代码中找到最后一个jmp指令处(病毒感染完成后将跳转回原程序),按F2设置断点,按F9运行,程序会在刚设置的jmp断点上中断,查看EAX寄存器的值(EAX=0x401000注意上面提到的断点,下面还会用到),按F7单步执行到下一条指令地址,点选鼠标右键或选择“插件”菜单项,选择菜单中的用ollyDump脱壳调试进程,选中重建输入表方式1,方式2各脱壳一次,分别保存为1.exe、2.exe。测试两个程序是否还具有病毒的传染特性

计算机病毒入侵与检测

_________1.exe不具有,2.exe具有__________________?

「注」 由于重建输入表的方式不同,可能造成某一种导出方式导出的文件无法正常运行,在实验中可以两种方式都导出执行文件,选择可以执行的一种方式来清除病毒。 二.病毒感染机制分析

(1)准备一个没有感染病毒的可执行程序和一个感染病毒的可执行程序,将其分别重命名为hei0.ex_,hei.ex_,并复制到一个新的目录下用于调试、对比。

(2)进入实验平台,点击工具栏中的“PE”按钮,使用PE Explorer分别打开hei.ex_和hei0.ex_文件,对比两个文件入口点(OEP--Address of Entry Point)和Image Base并分别记录。

Hei:

Hei0:

点击“View”菜单中的“Section Headers”进入Section Headers页面,比对Section Header的数据信息并记录到下面表格。

计算机病毒入侵与检测

Hei0:

Hei:

由于一般文件型病毒只有代码段,数据和代码都存在一起。所以可以断定hei.ex_的.data段多出的数据即为病毒代码和数据。

(3)进入实验平台,单击工具栏中“UE”按钮,打开Ultra Editor,选择“文件”菜单中的“比较文件”功能对hei0.ex_和hei.ex_进行二进制比对,可以发现在hei.ex_文件的0xa00处开始的数据块为存储于.data节的病毒代码。

「注」 该段数据在.data节是因为 hei0.ex_和hei.ex_的.data节都开始于各自文件偏移的Point to Raw Data处。这段数据是病毒代码是因为0xa00 - 0x800 + 0x43000 = 0x43200(感染病毒文件hei.ex_ OEP的虚地址(VA))。

(4)使用Ultra Editor打开hei.ex_定位光标到hei.ex_的.data块的Point to Raw Data

计算机病毒入侵与检测

位置,并以16进制形式查找hei0.ex_的入口点(注意字节顺序),将查找到的数据的文件偏移记录_____201C _____。计算该偏移的保护模式内存虚拟地址:_____40481C ____________。 (5)定位上面例子中hei.exe的jmp断点,在jmp指令上面会发现如下的汇编代码。

答:RVA 1000

0x40481c在病毒代码之后为被加载到内存的病毒数据的存储区,0x1000为hei0.exe OEP的RVA 0x1000在反汇编代码中的表示是0010。

(6)进入实验平台,单击工具栏中的“实验目录”按钮,利用上面的方法分别对实验目录下的1、2、3子目录下的文件进行调试,注意比对感染病毒文件和原文件特征,将各个病毒文件的最后一个跳转指令的目的地址记录到如下表。

计算机病毒入侵与检测

(7)通过以上的分析,就可以初步断定,该病毒的感染方式是:________计算宿主文件的原入口地址,进入宿主文件,执行宿主文件的同时发作,修改原宿主文件的入口地址_____________。 三.设计专杀工具

参考例程vk.exe源码(位于目录C:\JLCSS\TOOLS\VirusExperiment\Filevirus\下),编写病毒专杀程序,清除laborDayVirus.exe病毒。

通过任务二,了解到LaborDayVirus.exe病毒的感染机制,这里通过所学的知识对病毒进行清除。

(1)查找病毒寄存特征。

入口点在代码节(.text)之外,病毒代码存储于最后一节、且在病毒代码段后的一个双字为原程序代码入口RVA(在.text节范围内)。 文件病毒代码以0xE58BE0FF结尾。

(以上特征是对简化后的病毒特征的总结、实际中的病毒要复杂的多); (2)查找原程序入口点。

(3)修改程序入口点为原程序入口点。

(4)修改病毒感染的最后一个节表的SizeOfRawData,使之大小变为去掉病毒代码时的大小。

(5)修改PE文件选项头中的SizeOfImage为去掉病毒代码后的大小。 (6)清除病毒代码数据。 (7)保存清除病毒代码后的文件。

思考问题:

1. PE文件中RVA到VA的转换方法?

计算机病毒入侵与检测

答:内存虚拟地址是当PE文件被映射到内存中去时PE文件中的数据的内存地址,这个地

址就是PE文件被映射到内存的起始地址加上这个数据的文件地址;RVA就是当PE文件作为 一个可执行映像被加载器加载到内存后,文件中的数据相对于文件的加载点的相对偏移字节数。

转换方法:假设这个RVA所属的section的section header为curSectionHeader.要得到的VA =待转换的RVA+(curSectionHeader.PointorToRawData -

curSectionHeader.VirtualAddress)+该可执行文件映射到内存的起始地址。

2.PE文件中RVA到文件偏移的转换方法?

答:数据相对偏移h=数据RVA - 节RVA

数据相对偏移h=数据的文件偏移 – 节的文件偏移

根据上面两个等式可以得到数据在文件中的偏移量的算法为: 数据的文件偏移=(数据RVA - 节RVA) + 节的文件偏移

3. 文件偏移到RVA的转换方法?

答:数据RVA=数据的文件偏移-节的文件偏移+节RVA

4.PE文件中的标志字段又那些?

答:Name1字段 ,Name1字段定义了节的名称,字段的长度为8个字节。

VirtualSize字段,代表节的大小,这是节的数据在没有进行对齐处理前的实际大小。 VirtualAddress字段,指出节被装载到内存中后的偏移地址。

PointerToRawData字段,指出节在磁盘文件中的所处的位置。这个数值是从文件头 开始算起的偏移量。

SizeOfRawData字段,指出节在磁盘文件中所占的空间大小。 Characteristics字段,这是节的属性标志字段。

5.PE文件中的几个核心结构?

答:DOS MZ header,MS—DOS实模式残余程序,PE文件标志,PE文件头,PE文件可

选头,各段头部。

6.PE文件中的几个核心结构的功能?了解个结构成员的功能?

计算机病毒入侵与检测

答: DOS MZ header:所有PE文件(甚至32位的DLLs) 必须以一个简单的DOS MZ header

开始。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随MZ header 之后的DOS程序。以此达到对Dos系统的兼容。(DOS MZ header总共占用64byte)

MS-DOS 实模式残余程序:实际上是个有效的EXE,在不支持PE文件格式的操作系统中,它将简单显示一个错误提示,大多数情况下它是由汇编器/编译器自动生成。通常,它简单调用中断21h服务9来显示字符串"This program cannot run in DOS mode"。(在我们写的程序中,他不是必须的,可以不于以实现,但是要保留其大小,大小为112byte,为了简洁,我们就用00来填充。) PE文件标志:是PE文件结构的起始标志。(长度4byte, Windows程序此值必须为0x50450000)

PE文件头:是PE相关结构 IMAGE_NT_HEADERS 的简称,其中包含了许多PE装载器用到的重要域。执行体在支持PE文件结构的操作系统中执行时,PE装载器将从DOS MZ header中找到PE header的起始偏移量,跳过了MS-DOS 实模式残余程序 ,直接定位到真正的文件头PE header, 长度20byte)。

PE文件可选头:虽然它的名字是“可选头部”,但是请确信:这个头部并非“可选”,而是“必需”的。(长度 224byte )

各段头部:一个Windows NT的应用程序典型地拥有9个预定义段,它们是.text、.bss、.rdata、.data、.rsrc、.edata、.idata、.pdata和.debug。一些应用程序不需要所有的这些段,同样还有一些应用程序为了自己特殊的需要而定义了更多的段。(每段占40byte,我们这里也不需要所有的段,仅需3个段。)

7.文件型病毒的主要特点?

答:文件型病毒是主要感染可执行文件的病毒,它通常隐藏在宿主程序中,执行宿主程序时,将会先执行病毒程序。

传播方式:当宿主程序运行时,病毒程序首先运行,然后驻留在内存中,再伺机感染其它的可执行程序。

感染对象:扩展名是COM或者EXE的文件是主要对象。

8.简述病毒查杀的基本原理?

答:目前的大多数杀病毒软件采用的方法主要是特征码查毒方案与人工解毒并行,亦即在

查病毒时采用特征码查毒,在杀病毒时采用人工编制解毒代码。

特征码查毒方案实际上是人工查毒经验的简单表述,它再现了人工辨识病毒的一般方法,采用了“同一病毒或同类病毒的某一部分代码相同”的原理,也就是说,如果病毒及其变种、变形病毒具有同一性,则可以对这种同一性进行描述,并通过对程序体与描述结果(亦即“特征码”)进行比较来查找病毒。而并非所有病毒都可以描述其特征码,很多病毒都是难以描述甚至无法用特征码进行描述。使用特征码技术需要实现一些补充功能,例如近来的压缩包、压缩可执行文件自动查杀技术。

特征码的描述取决于人的主观因素,从长达数千字节的病毒体中撷取十余字节的病毒特征码,需要对病毒进行跟踪、反汇编以及其它分析。

计算机病毒入侵与检测

虚拟机技术:启发式探测未知病毒的反病毒技术

虚拟机技术的主要作用是能够运行一定规则的描述语言。由于病毒的最终判定准则是其复制传染性,而这个标准是不易被使用和实现的,如果病毒已经传染了才判定是它是病毒,定会给病毒的清除带来麻烦。

那么检查病毒用什么方法呢?客观地说,在各类病毒检查方法中,特征值方法是适用范围最宽、速度最快、最简单、最有效的方法。但由于其本身的缺陷问题,它只适用于已知病毒,对于未知病毒,如果能够让病毒在控制下先运行一段时间,让其自己还原,那么,问题就会相对明了。可以说,虚拟机是这种情况下的最佳选择。

虚拟机在反病毒软件中应用范围广,并成为目前反病毒软件的一个趋势。一个比较完整的虚拟机,不仅能够识别新的未知病毒,而且能够清除未知病毒,我们会发现这个反病毒工具不再是一个程序,而成为可以和卡斯帕罗夫抗衡的ibm深蓝超级计算机。

目前虚拟机的处理对象主要是文件型病毒。对于引导型病毒、word/excel宏病毒、木马程序在理论上都是可以通过虚拟机来处理的。

本文来源:https://www.bwwdw.com/article/jqyl.html

Top