第三讲 PE文件结构与计算机病毒
- 格式:pdf
- 大小:1.19 MB
- 文档页数:74
实验三+PE⽂件型病毒分析实验三 PE⽂件型病毒分析⼀、实验⽬的1.了解PE⽂件型病毒的基本原理;2.了解病毒的感染、破坏机制,认识病毒程序;3.掌握⽂件型病毒的特征和内在机制。
【注意事项】1.本病毒程序⽤于实验⽬的,⾯向实验演⽰,侧重于演⽰和说明病毒的内在原理,破坏功能有限。
在测试病毒程序前,需先关闭杀毒软件的⾃动防护功能或直接关闭杀毒软件。
2.若在个⼈电脑上实验,最好在虚拟机中运⾏。
3.测试完毕后,请注意病毒程序的清除,以免误操作破坏计算机上的其他程序。
4.请勿传播该病毒。
传播该病毒造成有⽤数据丢失、电脑故障甚⾄触犯法律等后果,由传播者负责。
⼆、实验内容压缩包中包括编译的病毒程序“PE_Virus.exe”和⼀个⽤于测试病毒的正常⽂件“test.exe”,通过运⾏病毒程序观看各步提⽰以了解PE⽂件型病毒的内在机制。
【PE_Virus病毒说明】(1)传染范围:PE_Virus.exe所在⽬录;(2)传染⽬标:可执⾏⽂件(.exe);(3)传染过程:搜索⽬录内的可执⾏⽂件,逐个感染;(4)触发条件:运⾏PE_Virus.exe程序或被PE_Virus.exe感染的程序;(5)破坏能⼒:⽆害型,传染时减少磁盘的可⽤空间,在可执⾏⽂件上附加⼀个4K⼤⼩的节;(6)破坏⽅式:攻击⽂件,在可执⾏⽂件上附加⼀个节(4K),修改可执⾏⽂件的⼊⼝地址;(7)特征类型:Virus.Win32.Huhk.B(360提⽰)【PE⽂件型病毒主要技术原理】(1)病毒重定位(2)获取API函数(3)搜索可感染的⽂件(4)内存映射⽂件(5)病毒感染其他⽂件(6)返回到宿主程序任务1 观察PE_Virus病毒感染test.exe⽂件的过程【提⽰】(1)⽤360等杀毒软件检测PE_Virus.exe,杀毒软件检测到该⽂件有病毒。
(2)关闭防病毒软件的⾃动防护功能,运⾏PE_Virus.exe,会出现如下提⽰:本实验为了能够⽐较直观演⽰病毒程序,让⽤户知道病毒正在做什么,故⽽有若⼲提⽰界⾯,但实际的病毒在感染其他程序前不会让⽤户感觉到病毒程序正在运⾏,往往都是隐藏运⾏,或者是寄⽣在宿主程序中。
《计算机病毒技术及其防御》课程教学大纲一、课程基本信息二、课程简介《计算机病毒技术及其防御》(或《恶意代码原理与防范》)是网络空间安全专业中专业性与实践性较强的课程,是网络空间安全学科中的重要组成部分,与后续学习的多门课程皆有关联。
本课程主要研究恶意代码(计算机病毒)的分类、恶意代码的原理、恶意代码的行为、恶意代码静态与动态的分析方法以及恶意代码的防御技术,对构建学生网络安全类知识体系进而进行恶意代码攻防实践有重要作用。
课程的任务是通过课堂教学与实验教学方式,使学生能够从生命周期的角度掌握恶意代码技术的基本原理与实现方法,掌握常见恶意代码的防御方法,培养学生具备良好的恶意代码分析能力与常见恶意代码的防范能力,提高自身对相关领域的安全意识与职业素养,从而为今后从事网络信息安全领域相关工作奠定坚实的基础。
通过本课程学习,使学生能够通过对相关实操案例的分析,对恶意代码的种类、危害、应急、防御处理都有较为深入的认识,具备一定的分析研究能力,能够将本课程的相关知识与防御技术的思路和技巧用于解决恶意代码所带来的问题。
三、课程目标及其对毕业要求的支撑(一)课程目标课程目标1:理解恶意代码的基本概念和理论知识,能够描述恶意代码的基本特性以及恶意代码的发展趋势。
课程目标2:掌握恶意代码的基本技术,能够自觉运用基本知识认识恶意代码,并对常见的恶意代码的进行逆向分析,培养学生分析问题的能力。
课程目标3:掌握恶意代码防御技术,能够自觉运用所学知识进行恶意代码防御处理,并对其中常见问题进行分析并加以解决,培养学生研究和分析问题、工程部署与设计解决方案的能力。
(二)课程目标对毕业要求的支撑四、教学方法本课程课堂教学和上机实验并重,结合作业、练习及实验报告等教学手段和形式完成课程教学任务。
在课堂教学中,通过讲授、提问、实验、练习、演示等教学方法和手段让学生了解恶意代码,掌握恶意代码攻防的基本应用。
在实验、练习教学环节中,通过任务布置教学、培养学生动手能力,同时培养学生发现问题、分析问题和解决问题的能力。
PE病毒的入侵途径和防治措施[摘要]由于windows操作系统的广泛使用,pe病毒已经成为当前危害计算机安全的主要病毒之一。
针对传播最广泛、危害最大、使用了多态变化技术的windows pe文件病毒的pe病毒,本论文详细的分析了windows pe文件结构及pe病毒的入侵原理,针对windows pe病毒的特点,提出了windows pe文件病毒的防御思想,即在病毒传播时期就把其拒之于系统之外,使其失去寄宿生存的空间,再配合一般的杀毒技术,可以有效的防杀windows pe病毒,使系统的安全性和稳定性大大提高,最后有针对性地提出对pe病毒预防的多种有效策略,从而为防毒、杀毒提供必要的理论依据。
[关键词]pe病毒入侵途径防治措施计算机病毒一直是计算机用户和安全专家的心腹大患,虽然计算机反病毒技术不断更新和发展,但是仍然不能改变被动滞后的局面。
计算机病毒一般都具有潜伏传染激发破坏等多种机制,但其传染机制反映了病毒程序最本质的特征,离开传染机制,就不能称其为病毒。
因此,监控和及时发现计算机病毒的传染行为,是病毒制造者和安全专家的争夺焦点。
目前主流的操作系统是windows操作系统,利用windows操作系统中存在的漏洞和系统程序接口,病毒可轻易获取控制权,感染硬盘上的文件,并进行破坏。
因此计算机病毒入侵途径和防治研究显得尤为重要。
病毒要在windows操作系统上实现其感染目的是要获得系统的控制权,而感染可执行文件时取得控制权的最好途径。
在windows nt/xp/2000/98/95等系统下,可执行文件和动态链接库均采用的是pe文件格式。
只有透彻研究了pe的文件格式,才能了解病毒如何寄生在文件中,才能有的放矢的采取对策以检测和制止病毒的入侵。
在各种病毒中,又以pe病毒数目最大,传播最广,破坏力最强,分析pe病毒有非常重要的意义。
因此本文将重点介绍pe病毒的入侵途径和防治措施。
一、pe病毒1.pe病毒的定义一个正常的程序感染后,当你启动这个程序的时候,它通常会先执行一段病毒代码,然后自身运行,这样病毒就悄无声息的运行起来,然后再去感染其他pe文件,这就是pe病毒的行为。
三年前,我曾经写了一个手工打造可执行程序的文章,可是因为时间关系,我的那篇文章还是有很多模糊的地方,我一直惦记着什么时候再写一篇完美的,没想到一等就等了三年。
因为各种原因直到三年后的今天我终于完成了它。
现在把它分享给大家,希望大家批评指正。
我们这里将不依赖任何编译器,仅仅使用一个十六进制编辑器逐个字节的手工编写一个可执行程序。
以这种方式讲解PE结构,通过这个过程读者可以学习PE结构中的PE头、节表以及导入表相关方面的知识。
为了简单而又令所有学习程序开发的人感到亲切,我们将完成一个Hello World! 程序。
功能仅仅是运行后弹出一个消息框,消息框的内容是Hello World!。
首先了解一下Win32可执行程序的大体结构,就是通常所说的PE结构。
如图1所示PE结构示意图:图1 标准PE结构图由图中可以看出PE结构分为几个部分:MS-DOS MZ 头部:所有PE文件必须以一个简单的DOS MZ 头开始。
有了它,一旦程序在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装载器用到的重要域。
《计算机病毒》复习思考题第一章计算机病毒概述1. 简述计算机病毒的定义和特征。
计算机病毒(Computer Virus),是一种人为制造的、能够进行自我复制的、具有对计算机资源进行破坏作用的一组程序或指令集合。
计算机病毒的可执行性(程序性)、传染性、非授权性、隐蔽性、潜伏性、可触发性、破坏性、攻击的主动性、针对性、衍生性、寄生性(依附性)、不可预见性、诱惑欺骗性、持久性。
2. 计算机病毒有哪些分类方法?根据每种分类方法,试举出一到两个病毒。
3. 为什么同一个病毒会有多个不同的名称?如何通过病毒的名称识别病毒的类型?国际上对病毒命名的一般惯例为“前缀+病毒名+后缀”,即三元组命名规则。
1、系统病毒系统病毒的前缀为:Win32、PE、Win95、W32、W95等。
2、蠕虫病毒蠕虫病毒的前缀是:Worm。
3、木马病毒、黑客病毒木马病毒其前缀是:Trojan,黑客病毒前缀名一般为Hack 。
4、脚本病毒脚本病毒的前缀是:Script。
5、宏病毒其实宏病毒是也是脚本病毒的一种,由于它的特殊性,因此在这里单独算成一类。
宏病毒的前缀是:Macro。
6、后门病毒后门病毒的前缀是:Backdoor。
7、病毒种植程序病毒后门病毒的前缀是:Dropper。
这类病毒的公有特性是运行时会从体内释放出一个或几个新的病毒到系统目录下,由释放出来的新病毒产生破坏。
8.破坏性程序病毒破坏性程序病毒的前缀是:Harm。
这类病毒的公有特性是本身具有好看的图标来诱惑用户点击,当用户点击这类病毒时,病毒便会直接对用户计算机产生破坏。
9.玩笑病毒玩笑病毒的前缀是:Joke。
10.捆绑机病毒捆绑机病毒的前缀是:Binder。
4. 简述计算机病毒产生的背景。
5. 计算机病毒有哪些传播途径?传播途径有两种,一种是通过网络传播,一种是通过硬件设备传播(软盘、U盘、光盘、硬盘、存储卡等)。
网络传播,又分为因特网传播和局域网传播两种。
硬件设备传播:通过不可移动的计算机硬件设备传播、通过移动存储设备传播、通过无线设备传播。
第一章计算机病毒概述1.※计算机病毒定义计算机病毒是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。
2.※计算机病毒的特性破坏性传染性寄生性隐蔽性触发(潜伏)性3.※计算机病毒的发展趋势是什么?哪些病毒代表了这些趋势?病毒发展趋势:网络化专业化简单化多样化自动化犯罪化代表病毒:蠕虫、木马4. ※计算机病毒的主要危害直接危害:(1)病毒激发对计算机数据信息的直接破坏作用(2)占用磁盘空间和对信息的破坏(3)抢占系统资源(4)影响计算机运行速度(5)计算机病毒错误与不可预见的危害(6)计算机病毒的兼容性对系统运行的影响间接危害:(1)计算机病毒给用户造成严重的心理压力(2)造成业务上的损失(3)法律上的问题5. ※计算机病毒和医学上的病毒相似之处是什么?区别又是什么?相似之处:与生物医学上的病毒同样有寄生、传染和破坏的特性,因此这一名词是由生物医学上的“病毒”概念引申而来区别:不是天然存在,是某些人利用计算机软、硬件所固有的脆弱性,编制的具有特殊功能的程序。
6.(了解)木马病毒(闪盘窃密者、证券大盗、外挂陷阱、我的照片我正向外闪)7.※计算机病毒的命名规则1991年计算机反病毒组织(CARO)提出了一套命名规则,病毒的命名包括五个部分:•家族名•组名•大变种•小变种•修改者CARO规则的一些附加规则包括:•不用地点命名•不用公司或商标命名•如果已经有了名字就不再另起别名•变种病毒是原病毒的子类举例说明:精灵(Cunning)是瀑布(Cascade)的变种,它在发作时能奏乐,因此被命名为Cascade.1701.A。
Cascade是家族名,1701是组名。
因为Cascade病毒的变种的大小不一(1701, 1704, 1621等),所以用大小来表示组名。
A 表示该病毒是某个组中的第一个变种。
业界补充:反病毒软件商们通常在CARO命名的前面加一个前缀来标明病毒类型。
计算机病毒实验报告实验2.2 PE病毒2.2 PE病毒2.2.1 实验目的通过实验,了解PE病毒的感染对象和学习文件感染PE病毒前后的特征变化以重点学习PE 病毒的感染机制和恢复感染染毒文件的方法,提高汇编语言的使用能力。
2.2.2 实验原理本实验采用的PE病毒样本是一个教学版的样本,执行病毒样本或者执行染毒文件都将触发此病毒。
一旦触发,病毒感染其所在文件夹内的所有pe文件。
该样本不具有破坏模块,染毒文件可恢复。
2.2.3 实验预备知识点本实验需要如下的预备知识:PE病毒的基础知识,包括PE病毒的概念,PE文件的概念和文件格式。
相关的操作系统知识,包括内存分页机制,变量的重定位机制,动态连接库的概念和调用方法和用于文件操作的API函数。
汇编语言基础,能独立阅读和分析汇编代码,掌握常用的汇编指令。
2.2.4 实验内容本实验需要完成的内容如下:PE病毒感染实验。
通过触发病毒,观察病毒发作的现象和步骤学习病毒的感染机制;阅读和分析病毒的代码,并完成系统附带的习题。
PE病毒的杀毒实验。
使用实验系统提供的杀毒工具学习恢复染毒文件的方法;阅读和分析杀毒程序代码,并完成习题。
2.2.4 实验环境实验小组机器要求有WEB浏览器IE。
操作系统为windows2000。
2.2.5 实验步骤打开“信息安全综合实验系统” 在右上角选择“实验导航”双击“病毒教学实验系统”进入病毒教学实验系统登录面界,输入用户名和密码。
(注意:实验前先关闭所有杀毒软件。
)1.病毒感染实验进入病毒防护教学实验后,点击左侧的“PE病毒”,然后在点击下面的“病毒感染实验”,其右侧为“病毒感染实验”的界面,如图2-2-1,及2-2-2所示。
认真阅读IE页面列出的知识要点,包括PE病毒概念,著名的病毒介绍,PE文件格式和PE病毒感染机制。
2-2-1根据页面首行提示下载实验软件包到本地主机任意路径,解压软件包。
进入“bin”目录点击“PE病毒实验.exe”,选择“PE病毒感染实验”,打开感染实验的界面。
第三章计算机病毒结构分析本章学习目标•掌握计算机病毒的结构•掌握计算机病毒的工作机制•了解引导型病毒原理•了解COM、EXE、NE、PE可执行文件格式•掌握COM文件病毒原理及实验•掌握PE文件型病毒及实验总体概念•DOS是VXer的乐园(Aver) •9x病毒ring3, ring0•2K病毒主要是ring3•Windows文件格式变迁:•COM•EXE:MZ->NE->PE•Vxd: LE(16Bit, 32Bit)一、计算机病毒的结构和工作机制•四大模块:•感染模块•触发模块•破坏模块(表现模块)•引导模块(主控模块)•两个状态:•静态•动态工作机制引导模块•引导前——寄生•寄生位置:•引导区•可执行文件•寄生手段:•替代法(寄生在引导区中的病毒常用该法)•链接法(寄生在文件中的病毒常用该法)1PE文件结构及其运行原理(1)PE文件格式总体结构•PE(Portable Executable:可移植的执行体)•是Win32环境自身所带的可执行文件格式。
•它的一些特性继承自Unix的Coff(Common Object )文件格式。
•可移植的执行体意味着此文件格式是跨win32平台的,即使Windows运行在非Intel的CPU上,任何win32平台的PE装载器都能识别和使用该文件格式。
•当然,移植到不同的CPU上PE执行体必然得有一些改变。
•除VxD和16位的Dll外,所有win32执行文件都使用PE文件格式。
因此,研究PE文件格式是我们洞悉Windows结构的良机。
PE文件结构总体层次分布DOSMZheader ‘MZ’格式DOSstub Dos程序PEheader PE文件Section表•所有PE文件必须以一个简单的DOS MZ header开始。
有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体。
•DOS stub实际上是个有效的EXE,在不支持PE文件格式的操作系统中,它将简单显示一个错误提示,类似于字符串 “该程序不能在DOS模式下运行”或者程序员可根据自己的意图实现完整的DOS代码。
PE⽂件结构详解1、PE⽂件的结构1、什么是可执⾏⽂件?可执⾏⽂件 (executable file) 指的是可以由操作系统进⾏加载执⾏的⽂件。
可执⾏⽂件的格式:- Windows平台:PE(Portable Executable)⽂件结构- Linux平台:ELF(Executable and Linking Format)⽂件结构PE和ELF⾮常相似,它们都是源于同⼀种可执⾏⽂件格式 COFF- COFF 是由Unix System V Release 3⾸先提出并且使⽤的格式规范,- 微软基于COFF格式,制定了PE格式标准,并将其⽤于当时的Windows NT系统- System V Release 4在COFF的基础上引⼊了ELF格式。
事实上,在Windows平台,VISUAL C++编译器产⽣的⽬标⽂件仍然使⽤COFF格式,⽽可执⾏⽂件为PE格式微软对64位Windows平台上的PE⽂件结构叫做PE32+,就是把那些原来32位的字段变成了64位。
2、PE⽂件的特征识别⼀个⽂件是不是PE⽂件不应该只看⽂件后缀名,还应该通过PE指纹使⽤UE打开⼀个exe⽂件,发现⽂件的头两个字节都是MZ,0x3C位置保存着⼀个地址,查该地址处发现保存着“PE”,这样基本可以认定改⽂件是⼀个PE⽂件通过这些重要的信息(“MZ”和“PE”)验证⽂件是否为PE⽂件,这些信息即PE指纹。
3、PE⽂件的整体结构这⾥将⼀个PE⽂件的主要部分列为4部分,这⾥可以先有模糊概念,后⾯会详细解释“节”或“块”或”区块“都是⼀个意思,后⽂会穿插使⽤下⾯从⼆进制层⾯整体把握其结构,看看⼀个PE⽂件的组成PE⽂件存储在磁盘时的结构和加载到内存后的结构有所不同。
当PE⽂件通过Windows加载器载⼊内存后,内存中的版本称为模块(Module)。
映射⽂件的起始地址称为模块句柄(hModule),也称为基地址(ImageBase)。
(模块句柄是不是和其他句柄不太⼀样呢?)⽂件数据⼀般512字节(1扇区)对齐(现也多4k),32位内存⼀般4k(1页)对齐,512D = 200H,4096D = 1000H⽂件中块的⼤⼩为200H的整数倍,内存中块的⼤⼩为1000H的整数倍,映射后实际数据的⼤⼩不变,多余部分可⽤0填充PE⽂件头部(DOS头+PE头)到块表之间没有间隙,然⽽他们却和块之间有间隙,⼤⼩取决于对齐参数VC编译器默认编译时,exe⽂件基地址是0x400000,DLL⽂件基地址是0x10000000VA:虚拟内存地址RVA:相对虚拟地址即相对于基地址的偏移地址FOA: ⽂件偏移地址5、DOS部分DOS MZ⽂件头实际是⼀个结构体(IMAGE_DOS_HEADER),占64字节typedef struct _IMAGE_DOS_HEADER { // DOS .EXE headerWORD e_magic; // Magic numberWORD e_cblp; // Bytes on last page of fileWORD e_cp; // Pages in fileWORD e_crlc; // RelocationsWORD e_cparhdr; // Size of header in paragraphsWORD e_minalloc; // Minimum extra paragraphs neededWORD e_maxalloc; // Maximum extra paragraphs neededWORD e_ss; // Initial (relative) SS valueWORD e_sp; // Initial SP valueWORD e_csum; // ChecksumWORD e_ip; // Initial IP valueWORD e_cs; // Initial (relative) CS valueWORD e_lfarlc; // File address of relocation tableWORD e_ovno; // Overlay numberWORD e_res[4]; // Reserved wordsWORD e_oemid; // OEM identifier (for e_oeminfo)WORD e_oeminfo; // OEM information; e_oemid specificWORD e_res2[10]; // Reserved wordsLONG e_lfanew; // File address of new exe header} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;DOS头⽤于16位系统中,在32位系统中DOS头成为冗余数据,但还存在两个重要成员e_magic字段(偏移 0x0)和 e_lfanew字段(偏移 0x3C)e_magic保存“MZ”字符,e_lfanew保存PE⽂件头地址,通过这个地址找到PE⽂件头,得到PE⽂件标识“PE”。