第三讲 PE文件结构与计算机病毒
2024版计算机病毒完整版课件

3 物联网与工业控制系统的安全威胁
探讨了物联网和工业控制系统面临的计算机病毒威胁,以 及相应的安全策略和防护措施。
4 国际合作与法律规制在病毒防范中的作用
讨论了国际合作和法律规制在计算机病毒防范中的重要性, 以及未来可能的发展趋势。
感谢您的观看
THANKS
3 定期备份重要数据
为防止病毒破坏数据,应定期备份重要数据,确保数据安 全。
4 及时更新操作系统和应用程序
更新操作系统和应用程序可以修复已知的漏洞,降低病毒 利用漏洞进行攻击的风险。
企业级安全防护措施
建立完善的安全管理制度
部署网络安全设备
企业应建立完善的安全管理制度,规范员工 行为,提高整体安全防护水平。
数据恢复策略及实践案例分享
案例一
某公司服务器感染勒索病毒,导致重 要文件被加密。通过及时备份数据和 寻求专业解密服务,成功恢复了大部 分文件,避免了重大损失。
案例二
个人计算机感染恶意软件,导致部分 文件被删除。通过使用数据恢复软件, 成功恢复了被删除的文件,并加强了 计算机安全防护措施,避免了类似事 件的再次发生。
个人和企业都应遵守国家相关 法律法规,不得制作、传播计 算机病毒等恶意程序。
02
遵循伦理道德规范
计算机从业人员应遵循伦理道 德规范,不得利用技术手段危 害他人利益或社会公共利益。
03
加强行业自律
计算机行业应加强自律,建立 行业规范,共同维护网络安全 和稳定。
04
严厉打击病毒犯罪行为
对于制作、传播计算机病毒等 犯罪行为,应依法严厉打击, 维护网络安全和社会秩序。
感染模块
负责寻找并感染目标文件,将病 毒代码嵌入其中。
传播模块
通过各种途径将病毒传播到其他 计算机或网络中。
实验三+PE文件型病毒分析

实验三+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,会出现如下提⽰:本实验为了能够⽐较直观演⽰病毒程序,让⽤户知道病毒正在做什么,故⽽有若⼲提⽰界⾯,但实际的病毒在感染其他程序前不会让⽤户感觉到病毒程序正在运⾏,往往都是隐藏运⾏,或者是寄⽣在宿主程序中。
病毒在pe文件中的寄生和感染

数据目录列表的含义 索引 0 1 2 3 4 5 6 7 对应的数据块 导出表 导入表 资源 异常 安全 重定位表 调试信息 版本信息 索引 8 9 10 11 12 13 14 15 对应的数据块 不详 Thread local Storage 不详 不详 导入函数地址表 不详 不详 未使用
信息安全技术
信息安全技术
文件属性
不同的定义将影响系统对文件的装入方式 对于普通的PE文件,一般是010fh 对于DLL文件,一般是210eh
计算机科学与技术学院 计算机科学与技术学院
IMAGE_OPTIONAL_HEADER Struct Magic WORD ? ;0018h 107h=ROM IMAGE,10bh=exe Image BYTE ? ;001ah 连接器版本号 BYTE ? ;001bh DWORD? ;001ch 所有含代码的节的总大小 DWORD? ;0020h 所有含已初始化数据的节的总大小 DWORD? ;0024h 所有含未初始化数据的节的大小 DWORD? ;0028h 程序执行入口RVA DWORD ; 002ch 代码的节的起始RVA DWORD ;0030h 数据的节的起始RVA DWORD ;0034h 程序的建议的装载地址 DWORD ;0038h 内存中的节的对齐粒度 DWORD ;003ch 文件中的节的对齐粒度 MajorLinkerVersion MinorLinkerVersion SizeOfCode SizeOfInitializedData SizeOfUninitializedData AddressOfEntryPoint BaseOfCode BaseOfData ImageBase SectionAlignment FileAlignment
计算机病毒分析与防治简明教程ch04 PE文件病毒

第25页
计算机病毒分析与防治教程
清华大学出版社
清除病毒原理
如何确定特征码 获取原来入口地址 如何清除病毒
2018年8月12日
第26页
计算机病毒分析与防治教程
清华大学出版社
寻找特征码
2018年8月12日
第27页
计算机病毒分析与防治教程
清华大学出版社
程序设计实现 扫描磁盘文件 扫描进程
清华大学出版社
感染前后执行
2018年8月12日
第22页
计算机病毒分析与防治教程
清华大学出版社
感染前结构
2018年8月12日
第23页
计算机病毒分析与防治教程
清华大学出版社
感染后结构
2018年8月12日
第24页
计算机病毒分析与防治教程
清华大学出版社
4.5 设计自己的病毒专杀工具
2018年8月12日
清华大学出版社
测试修改程序
2018年8月12日
第36页
计算机病毒分析与防治教程
清华大学出版社
运行后恢复原来状态
2018年8月12日
第37页
计算机病毒分析与防治教程
清华大学出版社
API的调用
2018年8月12日
第8页
计算机病毒分析与防治教程
清华大学出版社
病毒使用API
预先设定API地址 搜索API地址
2018年8月12日
第9页
计算机病毒分析与防治教程
清华大学出版社
病毒使用变量
2018年8月12日
第10页
计算机病毒分析与防治教程
2018年8月12日
第4页
计算机病毒分析与防治教程
第3章 计算机病毒结构及技术分析

计算机病毒结构及技术分析
下午3时35分
计算机病毒及其防范技术 · 计算机病毒结构及技术分析
复习
1、计算机病毒定义? 计算机病毒,是指编制或者在计算机程序中插入的破坏 计算机功能或者毁坏数据,影响计算机使用,并能自我 复制的一组计算机指令或者程序代码。 2、计算机病毒的特点?
传染性、破坏性、寄生性
→
跳转到病毒引导模块
使用常驻技术
→
病毒引导模块
加载传染、破坏和触发模块到内存
转向程序的正常执行指令
→
执行程序
下午3时36分
计算机病毒及其防范技术 ·计算机病毒结构及技术分析
感染模块
什么是病毒感染? 指计算机病毒程序由一个信 息载体传播到另一个信息载体, 或由一个系统传播到另一个系统 的过程。
• PATCH IAT的函数。
下午3时36分
计算机病毒及其防范技术 ·计算机病毒结构及技术分析
抗分析技术
加密技术:
这是一种防止静态分析的技术,使得分析者无法在不执行病毒的 情况下,阅读加密过的病毒程序。
反跟踪技术:
使得分析者无法动态跟踪病毒程序的运行。 例如:Win95.Flagger病毒
下午3时36分
下午3时36分
计算机病毒及其防范技术计算机病毒结构及技术分析
计算机病毒的传染过程
被动传染过程: 随着复制或网络传输工作的进行而进行的。 主动传染过程: 系统运行是,病毒通过病毒载体即系统的外存储器进入系统的 内存储器,然后,常驻内存并在系统内存中监视系统的运行,从而 可以在一定条件先采用多种手段进行传染。
引导区病毒引导过程:
搬迁系统引导程序 → 替代为病毒引导程序
《计算机病毒技术及其防御》课程教学大纲

《计算机病毒技术及其防御》课程教学大纲一、课程基本信息二、课程简介《计算机病毒技术及其防御》(或《恶意代码原理与防范》)是网络空间安全专业中专业性与实践性较强的课程,是网络空间安全学科中的重要组成部分,与后续学习的多门课程皆有关联。
本课程主要研究恶意代码(计算机病毒)的分类、恶意代码的原理、恶意代码的行为、恶意代码静态与动态的分析方法以及恶意代码的防御技术,对构建学生网络安全类知识体系进而进行恶意代码攻防实践有重要作用。
课程的任务是通过课堂教学与实验教学方式,使学生能够从生命周期的角度掌握恶意代码技术的基本原理与实现方法,掌握常见恶意代码的防御方法,培养学生具备良好的恶意代码分析能力与常见恶意代码的防范能力,提高自身对相关领域的安全意识与职业素养,从而为今后从事网络信息安全领域相关工作奠定坚实的基础。
通过本课程学习,使学生能够通过对相关实操案例的分析,对恶意代码的种类、危害、应急、防御处理都有较为深入的认识,具备一定的分析研究能力,能够将本课程的相关知识与防御技术的思路和技巧用于解决恶意代码所带来的问题。
三、课程目标及其对毕业要求的支撑(一)课程目标课程目标1:理解恶意代码的基本概念和理论知识,能够描述恶意代码的基本特性以及恶意代码的发展趋势。
课程目标2:掌握恶意代码的基本技术,能够自觉运用基本知识认识恶意代码,并对常见的恶意代码的进行逆向分析,培养学生分析问题的能力。
课程目标3:掌握恶意代码防御技术,能够自觉运用所学知识进行恶意代码防御处理,并对其中常见问题进行分析并加以解决,培养学生研究和分析问题、工程部署与设计解决方案的能力。
(二)课程目标对毕业要求的支撑四、教学方法本课程课堂教学和上机实验并重,结合作业、练习及实验报告等教学手段和形式完成课程教学任务。
在课堂教学中,通过讲授、提问、实验、练习、演示等教学方法和手段让学生了解恶意代码,掌握恶意代码攻防的基本应用。
在实验、练习教学环节中,通过任务布置教学、培养学生动手能力,同时培养学生发现问题、分析问题和解决问题的能力。
PE病毒的入侵途径和防治措施

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结构中的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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Characteristics-节属性
0x00000020? 这个块包含代码。置位 0x00000040? 这个块包含已初始化的数据。 0x00000080? 这个块包含未初始化的数据(如 .bss 块) 0x00000200? 这个块包含注释或其它的信息。 0x00000800? 这个块的内容不应放进最终的EXE文件中。 0x02000000? 这个块可以被丢弃,因为一旦它被载入,其进程就 不需要它。最通常的可丢弃块是基本重定位块( .reloc )。 0x10000000? 这个块是可共享的。 0x20000000? 这个块是可执行的。 0x40000000? 这个块是可读的。 0x80000000? 这个块是可写的。
IMAGE_DATA_DIRECTORY VitualAddress DD? Size DD? IMAGE_DATA_DIRECTORY ENDS
3.4hello-2.5.exe的IAT与引入表
3.4节表
节表其实就是紧挨着 PE header 的一结 构数组。
该数组成员的数目由 File header (IMAGE_FILE_HEADER) 结构中 NumberOfSections 域的域值来决定。
节表结构又命名为 IMAGE_SECTION_HEADER。
结构中放的是一个节的信息,如名字、地 址、长度、属性等。
hello-2.5.exe的节表
IMAGE_SECTION_HEADER
typedef struct _IMAGE_SECTION_HEADER { UCHAR Name[8]; union { ULONG PhysicalAddress//OBJ中表示物理地址 ULONG VirtualSize; //在EXE中,它保存的实际尺寸 } Misc; ULONG VirtualAddress; //本节的相对虚拟地址 ULONG SizeOfRawData; //本节的经过文件对齐后的尺寸 ULONG PointerToRawData; ULONG PointerToRelocations; ULONG PointerToLinenumbers; USHORT NumberOfRelocations; USHORT NumberOfLinenumbers; ULONG Characteristics; //节属性 } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;
IMAGE_SECTION_HEADER
顺序 1 2 3 4 5 Name * PhysicalAddress或 VirtualSize Virtual Address * SizeOfRawData * PointerToRawData * 名字 大小 (字节) 8 4 4 4 4 节名 OBJ文件用作表示本节物理地址 EXE文件中表示节的真实尺寸 这个值+映像基地址=本节在内 存中的真正地址。OBJ中无意义。 本节的经过文件对齐后的尺寸 本节原始数据在文件中的位置 描述
Subsystem DataDirectory
DataDirectory数据目录
一个IMAGE_DATA_DIRECTORY数组,里面放 的是这个可执行文件的一些重要部分的RVA和尺 寸,目的是使可执行文件的装入更快,数组的项 数由上一个域给出。 IMAGE_DATA_DIRECTORY包含有两个域,如 下:
3.5.2 已初始化的数据节
这个节一般取名为.data或DATA 已初始化的数据节中放的是在编译时刻就已 确定的数据。如Hello World 中的字符串 “Hello World!”。
.data节
3.5.3 未初始化的数据节
3.5 节
“节(Section)”跟在节表 3.5.2已初始化的数据节 3.5.3未初始化的数据节 3.5.4引入函数节 3.5.5引出函数节 3.5.6资源节
3.5.1 代码节
代码节
代码节一般名为.text或CODE,该节含 有程序的可执行代码。 每个PE文件都有代码节
IMAGE_SECTION_HEADER
顺序 6 7 8 9 10 名字 PointerToRelocations PointerToLinenumbers NumberOfRelocations NumberOfLinenumbers Characteristics * 大小 (字节) 4 4 2 2 4 描述 OBJ中表示该节重定位信息的偏 移EXE文件中无意义 行号偏移 本节要重定位的数目 本节在行号表中的行号数目 节属性
LONG e_lfanew; //e_lfanew成员用于定位PE头。
该字段位于3CH处,该位置给出了PE文件头部的开始位置。 在本例中,PE文件头部开始位置为0B0H。
3.2.1MS-DOS MZ header
typedef struct _IMAGE_DOS_HEADER { // DOS的.EXE头部 USHORT e_magic; // 魔数 USHORT e_cblp; // 文件最后页的字节数 USHORT e_cp; // 文件页数 USHORT e_crlc; // 重定义元素个数 USHORT e_cparhdr; // 头部尺寸,以段落为单位 USHORT e_minalloc; // 所需的最小附加段 USHORT e_maxalloc; // 所需的最大附加段 USHORT e_ss; // 初始的SS值(相对偏移量) USHORT e_sp; // 初始的SP值 USHORT e_csum; // 校验和 USHORT e_ip; // 初始的IP值 USHORT e_cs; // 初始的CS值(相对偏移量) USHORT e_lfarlc; // 重分配表文件地址 USHORT e_ovno; // 覆盖号 USHORT e_res[4]; // 保留字 USHORT e_oemid; // OEM标识符(相对e_oeminfo) USHORT e_oeminfo; // OEM信息 USHORT e_res2[10]; // 保留字 LONG e_lfanew; // 新exe头部的文件地址 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
3.3 PE header(P78)
Pe header 由三部分组成
字串 “PE\0\0”(Signature) 映像文件头(FileHeader) 可选映像头(OptionalHeader)
3.3.1 字串 “PE\0\0”
Signature 一dword类型,值为50h, 45h, 00h, 00h(PE\0\0)。 本域为PE标 记,我们可以此识别给定文件是否为有效PE 文件。
顺序 1 2 3 4 5 6 7 Machine *
名字
大小 (字节) 2 2 4 4 4 2 2
描述 机器类型,x86为14CH 文件中节的个数 生成该文件的时间 COFF符号表的偏移 符号数目 可选头的大小 关于文件信息的标记,比如文件是 exe还是dll
NumberOfSection ** TimeDataStamp PointerToSymbleTable NumberOfSymbols SizeOfOptionalHeader* Characteristics *
可选映像头中的一些关键字段1
名字 AddressOfEntryPoint * 描述 PE装载器准备运行的PE文件的第一个指令的 RVA。若要改变整个执行的流程,可以将该 值指定到新的RVA,这样新RVA处的指令首 先被执行。(病毒感染中通用关键字段) PE文件的优先装载地址。比如,如果该值是 400000h,PE装载器将尝试把文件装到虚拟 地址空间的400000h处。若该地址区域已被 其他模块占用,那PE装载器会选用其他空闲 地址。 内存中节对齐的粒度。 文件中节对齐的粒度。
ImageBase
SectionAlignment FileAlignment
可选映像头中的一些关键字段2
名字 描述 MajorSubsystemVersion win32子系统版本。若PE文件是专门为 Win32设计的,该子系统版本必定是4.0否则 MinorSubsystemVersion 对话框不会有3维立体感。 SizeOfImage SizeOfHeaders 内存中整个PE映像体的尺寸。 所有头+节表的大小,也就等于文件尺寸减去 文件中所有节的尺寸。可以以此值作为PE文 件第一节的文件偏移量。 NT用来识别PE文件属于哪个子系统。 一个IMAGE_DATA_DIRECTORY 结构数组。 每个结构给出一个重要数据结构的RVA,比 如引入地址表等。
《计算机病毒分析与对抗》第三讲
PE文件结构与计算机病毒
武汉大学计算机学院 彭国军 guojpeng@
引言
什么是PE文件? 了解PE文件结构和了解PE病毒原理有什么 联系?
课前我们应该思考的问题
计算机病毒如何将自身代码写到PE可执行文 件中并使得感染文件依然能够执行其功能? PE程序如何从其他DLL引入API函数? DLL文件如何使其他可执行文件知道自己实现 的各API函数的代码位置? 传统PE病毒是否可以直接调用API函数?为 什么?如何获取API函数?
几个常用术语
对齐
内存中节对齐的粒度 文件中节对齐的粒度
问题1:桶的容量为100升,现有367升水,请问 需要使用多少个桶? 问题2:代码节的代码实际长度为0x46字节,文件 中节对齐粒度为0x200,内存中节对齐粒度为 0x1000字节,请问代码节在文件和内存中分别占 用多少字节?