复习作为软件安全基础的PE文件格式值《软件安全》这门课时,PE文件格式是最重要的。 在此,将教材和PPT结合起来,稍微整理一下相关知识。 如果有不妥当的地方,希望能被指出来!

什么是PE文件格式? PE是可移植可执行文件的标准格式。

PE文件格式与恶意软件的关系文件感染的定义

病毒代码与目标PE文件融为一体的途径:代码嵌入、获得控制权、更改图标。

注:这里的代码嵌入可以分为两种,主动嵌入和被动嵌入。 主动嵌入是指程序自身利用系统正常的功能或缺陷将攻击代码嵌入目标中,不需要人的干预; 被动嵌入是指恶意软件将攻击代码嵌入目标主机时,需要借助用户的操作——通常与社会工程攻击方法相结合,诱发用户漏洞。

提高权限:

首先,访问控制:防止资源的非法使用。 这包括防止非法使用资源。

访问权限:访问控制访问规则,用于区分每个访问者对资源的访问权限。

权限提升是指攻击者通过攻击有缺陷的系统程序,将当前较低的帐户权限提升到更高级别的用户权限。

由于管理员权限很大,获得管理员权限通常被视为特别权限的提高。

病毒被运行的流程

用户单击HOST程序(或系统自动执行)将HOST程序加载到内存中,在PE文件的AddressOfEntryPoint和ImageBase之和中定位第一条语句,然后从第一条语句开始执行HOST代码的执行中有时也会获得控制权) ) ) ) ) )将控制权交换给主机程序的主机程序主体将继续执行这里所述的AddressOfEntryPoint,ImageBase这一概念这是可选映像头的两个字段。 可选的图像标头是PE文件结构的一部分,包含PE文件的逻辑分布信息。

AddressOfEntryPoint是指程序开始运行的地方。 这是RVA,该地址通常指向代码部分中的位置。 在计算机病毒中,这个域非常重要。 一般来说,计算机病毒可以通过更改此值指向自己病毒的起始代码来获得控制权。 在修改此域之前,病毒会保存原始阈值,并在病毒体执行完成后,通过jmp语句返回到主机源程序入口继续执行。

ImageBase是可执行文件的默认基址。

PE文件格式的整体结构DOS小程序

PE结构中的MZ文件头和DOS存根程序实际上是在DOS环境下显示提示信息的小程序。 在MZ文件格式中,前2个字节是4D5A。 (这两个字节在后面的病毒感染中非常重要,在病毒添加新子句导致的感染模式中,首先分两个阶段判断对象文件的前两个字节是否为MZ和PE文件标记是否为PE ) )。

DOS小程序之后是PE文件的NT图像标头,它由三个部分组成:字符串、图像标头和可选的图像标头

NT映像的开头是部分表。 节表实际上是一个结构数组,每个结构都包含特定于节的信息。 数组成员的数量取决于图像头文件结构中NumberOfSections域的域值

紧跟在节表之后的PE文件通常包含代码节、函数节、函数导入节、初始化的数据节、未初始化的数据节、资源节、重新定位节等

代码部分通常名为. txt或. code,其中包含程序的可执行代码。 每个PE文件都有一个代码部分。 代码部分还包含用于调用函数的特殊数据。 引出函数子句. edata。 已知如果病毒感染了其他文件,则无法直接调用API函数,因为计算机病毒会到达写入其他主机程序的知识病毒代码部分。 不能保证HOST程序一定会有病毒调用的API函数,所以需要自己获取API函数的地址。 一个暴力的方法是检索Kernal32模块,利用提取了函数的数据获得API函数的地址。

作为具体方法,首先在AddressOfNames中找到相应的字符串并进行比较,如果一致则记住该序号为x,该序号从AddressOfNamesOrdinals所指的序号表的第x个成员开始引入函数节. idata。 包含从其他DLL引入的函数。 部署函数部分也可以被病毒用来直接获取API函数地址。 例如,直接修改或添加所需函数的IMAGE_IMPORT_DESCRIPTOR结构,然后将程序读入内存时,所需函数的地址会写入IAT表中以获取公共病毒,而对病毒来说则是loot 初始化的数据部分包含尚未初始化的全局变量和静态变量,这些变量在编译时确定的数据尚未初始化。 节的名称通常为. bbs资源节。此节一般用于存储图表,其中包含用于程序(如对话框)的资源重定位节的重定位表。 这个技术很重要。 这是因为当病毒感染不同的主机程序时,病毒代码依赖于主机程序的位置不同,因此当不同的主机加载到内存中时,病毒中每个变量在内存中的位置会根据主机的大小而变化。 简单的方法是通过(Base-offset V_start ) offset Var_Lable。 此整体表示Var变量位于HOST时的实际内存地址。