ELF文件自免疫研究

来源 :光盘技术 | 被引量 : 0次 | 上传用户:yuggmacc
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:着重设计一种增强linux系统中的ELF文件自免疫能力的方法,通过改进ELF存储结构来实现对常见病毒类型的天然免疫。
  关键词:ELF;自免疫
  中图分类号:TP309.5文献标识码:A
  
  Research of the ELF's Self-immunity
  SHI Wei-hang,WANG Rui-juan
  (Software Technology School, Zheng Zhou University, Henan Zhengzhou 450002)
  Key words: ELF;Self-immunity
  
  随着网络技术的发展,终端的种类和数量均不断增加,且终端间的数据交换也越趋频繁,这为计算机病毒的广泛和快速传播提供了契机。作为当前最流行的类UNIX服务器平台,针对Linux操作系统所设计的木马和病毒也逐年增多。而这些木马和病毒又多通过分析和感染Linux下的开源ELF格式文件来危害宿主。ELF文件是Linux系统中最常用的可执行文件格式,它能够显著提高Linux下程序文件的可移植性,但其定义格式也导致其易被病毒感染。
  当前常用的对抗计算机病毒的一般过程为:预防、检测和杀毒。但是这种“先感染再查杀”的被动防御方法依赖于频繁的对病毒特征码的分析,而对病毒已造成的数据、信息损失无法挽回,且需要经常升级病毒特征库。
  
  1 病毒感染方式
  
  针对ELF格式文件的病毒通常有三种寄生方式:直接覆盖宿主、向宿主文件插入病毒体、将病毒代码植入ELF本身的填充字段。第一种方式会破坏可执行文件的原始数据,导致染毒文件不可用。这种方式很容易被发现,达不到病毒设计的初衷,因此很少使用。第二种方式不破坏宿主文件,仅将病毒代码加入程序执行流程,通常存在于宿主的代码段和数据段前后的空闲区。第三种方法是在ELF本身的填充字段中将病毒植入。针对上述几种常见的病毒寄生方式,本文设计了一种能够使得ELF文件具有一定天然免疫能力的改进方法。
  
  2 ELF文件自免疫设置
  
  ELF文件由文件头(ELF Header)、程序头表(Program Header Table)、节头表(Section Header Table)以及段(Segment)或节(Section)组成,如图1所示。其中,文件头位于程序的开始部位,包含描述本文件结构的路线图(road map),程序头表保存了如何将程序加载到内存的信息,而节头表描述的是程序节的具体信息。这三个结构共同决定了目标文件间的连接方式、载入内存的方法以及执行方法。因此病毒体寄生宿主,驻留内存时必须修改寄主的文件头、程序头表和节头表信息,然后才能将自身代码插入寄主文件体中。因此本文所探讨的这种自免疫方法也将从这三个结构入手。
  


  ELF二进制静态文件节中的填充区可以位于区首或区尾。而病毒则选择合适大小的填充区插入其自身代码。为预防发生这种情况,我们可以在ELF文件的填充区中写入随机数据,并将文件的相关信息记录在新节中,以便在文件运行前进行病毒检验。具体方法如下:
  2.1修改程序头表
  ELF文件的每个节都有填充区的存在,而该填充区的大小可以从程序头表中获取。程序头表中的字段p_filesz表示该段在静态文件中所占据的空间,而字段p_memsz则表示其在内存中占用的空间大小,其差值即内存映像中填充区域的大小。且ELF文件规定p_memsz不会比p_filesz大。若将前者修改成与后者相同大小,即使p_filesz-p_memsz=0,则病毒将认为填充区大小不适合其插入,并最终放弃感染。
  以上工作需要通过对程序头表的分析和修改来完成,具体步骤如下:
  ①在Linux系统中,若想修改程序头表,需要首先使用系统调用mprotect将其所在文件的操作属性改为可读可写可执行(rwx);
  ⑵读程序头表。程序头表中的各个可载入段入口按其各自的p_vaddr升序排列。将其分别读取,并计算填充区大小,该区域的起始位置在p_vaddr+p_memsz处;
  ③生成随机数据写入填充区;
  ④修改程序头结构。将程序头中的p_memsz大小设为与p_filesz相同。
  2.2禁止插入新节(段)
  与上述的插入型病毒不同,附加型病毒的实现方式是在文件尾部追加病毒体,该方法无需担心破坏执行宿主所需的信息。它会修改程序的入口点,使其自身能先于宿主执行,对系统造成破坏。对于这类型的病毒,可以通过设置使其无法插入新节来预防。ELF文件节的构成属性导致目标文件中可以存在"非活动空间",即节之间可以有空闲区域。这个属性既为ELF文件带来更高的灵活性,也为病毒提供了容身之处。为解决这个问题,我们可以将各节之间的空闲区域取消,使得各节顺序相连。
  设i,j为两个相邻的节,且i为j的前趋,j为i的后继,则取消空闲区的步骤为:①根据ELF文件头中所获得的节头表地址e_shoff定位节头表,从中获取需要移动的节j的大小及其当前起始位置;②计算空闲区域大小。
  两节之间的空闲区大小S可由下式得到:
  S=sh_addrj-(sh_addri+sh_sizei-1)
  上式中,ELF32_Addr类型的sh_addri字段在节头表中出现,它表明了当前节i在内存中的位置,而ELF32_Word类型的字段sh_sizei则指出了当前节i的大小,因此节i的结束位置为(sh_addri+sh_sizei-1)。再由ELF文件头中的e_shoff字段得到节头表在目标文件中的偏移量,从节头表中获取后继节j的起始地址sh_addrj,即可算出空闲区大小。③将节j当前位置处的sh_sizej大小的数据复制到紧邻节i处;④将节j的新起始位置记入节头表的相应记录中;⑤判断节j是否文件的最后一个节,若是,则将节头表复制到节j的后面;若不是,返回①继续。这种方法虽然麻烦,但从根本上消除了节间的空闲区域,使病毒无法找到可插入的空间,对小型且关键性文件尤为适用。
  2.3自免疫防毒
  上述办法针对直接在文件或内存映像中插入代码的病毒起到较好的免疫作用,接下来我们又在ELF文件中增加一些自免疫防毒的代码,以增强对插入病毒代码后又修改节头表等关键数据的病毒的自免疫能力。在添加自免疫代码前,需要在文件中增加一个新节,该节中记录程序的关键数据:文件入口e_entry、程序头表地址、节头表地址、各节或各段的实际长度等。且该节中还应设置一个校验字段,当直接覆盖型病毒修改文件后,在程序开始运行时,首先与该校验字段相比较,若产生变化,则说明文件已经中毒。
  对于已发现染毒的ELF文件,需要进行修复工作。具体步骤如下:①关闭染毒文件:使用kill指令终止染毒文件工作,避免其对系统造成更大破坏。②由文件头中的e_entry找到文件的绝对路径,使用该路径寻找预存的备份文件覆盖被染毒文件。该步骤的正常运行取决于备份文件的正确性,因此需要在源文件与备份文件间建立一个可靠连接。最简单的办法之一就是将备份文件命名为源文件名的MD5加密后的密文,密钥则使用文件拥有者的密码。③恢复完成后,在恢复后的文件中添加一个新节,其中放置被保护程序的关键数据以及免疫代码等重要信息;④修改文件头,记录恢复后文件的各节和各段的相应信息:根据备份文件头中的相应字段值对恢复后文件进行修复;⑤终止恢复程序的运行:当恢复程序完成上述任务后,对本次修复的完成情况、发生时间等信息进行记录后,自行结束工作退出内存。
  
  3 结束语
  
  尽管现代病毒已不仅仅使用一种感染方式,但本质仍具有各种典型感染方式的相应特性。本文根据Linux系统中ELF文件病毒的感染机制的特点,设计了一种对关键ELF文件进行自免疫设置与检测、恢复的方法。经验证该方法能较有效的阻止常见ELF病毒的侵袭,达到了设计的初衷。
  
  参考文献:
  [1]谢瑶,潘剑峰,朱明.Linux/Unix环境中ELF格式病毒的分析[J].计算机工程,2005(2).
  [2]向文杰,李毅.Linux环境下ELF文件型病毒的分析[J].科技信息,2006(9).
其他文献
摘 要:针对目前高职WEB开发技术及实训课程在教学内容和实验实践环节中存在的问题以及社会对IT人才的WEB技术需求方向,探讨WEB开发技术及实训课程教学改革新模式。  关键词:WEB;开发技术及实训;新模式  中图分类号:G434 文献标识码:A    New Model of Teaching Reform About WEB Developing Technology and Training
期刊
摘要:提出Photoshop教学应结合学生知识背景,在“实用、够用”前提下,合理安排授课内容,以达到培养学生“自主学习”能力的教学目标。  关键词:Photoshop;学习需求;想象力;创造力;教学方法  中图分类号:G42 文献标识码:A    Photoshop因其强大的图形、图像处理功能,在平面设计、网页设计及数码照片处理等各个领域的广泛应用,许多院校都开设了这门课程。笔者在Photosho
期刊
摘要:分析Photoshop课程在教学中存在的问题,并提出如何改革Photoshop教学,从而培养学生生存技能。  关键词:职业学校;Phososhop;教学方法  中图分类号:TP317.4 文献标识码:A
期刊
摘 要:作者在对计算机网络课程教学实践基础上,尝试通过网络仿真工具OPNET来对现有的课程实验进行重新设计,提出了一种简化OPNET建模方案,并结合TCP拥塞控制算法验证实验分析了引入OPNET以后网络实验的组织和实施的情况。  关键词:网络;实验;OPNET;建模;TCP  中图分类号:TP301.6 文献标识码:A    Congestion Prevent and Control on Ne
期刊
摘 要:介绍电力系统中,基于法拉第效应的光学电流互感器测试电流的基本原理,采用TI的最新数字处理芯片TMS320F28335的片内A/D转换器对被测电流进行数据采集,以LabVIEW作为开发平台,使用串口将DSP的数据传送给PC端,同时给出DSP与RS232的硬件连接图,以及DSP和LabVIEW的软件编写程序,对实验室小电流模拟的高强电流信号进行测试研究,测试结果表明该数据采集及分析系统能正常通
期刊
摘 要:针对ERP沙盘模拟实验教学的必要性进行了细致地分析,给出了ERP沙盘模拟实验教学具体教学模式的整体思路和详细的模式设计和实战对抗的应用指导。  关键词:ERP沙盘模拟实验;教学模式;实战对抗  中图分类号:G40 文献标识码:A    Research and Operation ERP Sangbox Simulation Experiment's Teaching Pattern  W
期刊
摘 要:结合项目中对中文显示乱码处理的经验,论述java语言在linux操作系统下中文乱码产生的原因和解决方法。  关键词:字符集;本地化;URL encode;URL decoder  中图分类号:TP312JA文献标识码:A    Study on the Chinese Error Coding in the Java Programs on Linux  JIA Jin-ying1, JI
期刊
摘 要:针对ASP.NET 2.0实现WEB打印的几种方法进行初步探讨,对每种方法的实现、各自特点进行阐述。  关键词:ASP.NET 2.0 ;B/S模式 ;WEB 打印  中图分类号:TP393.092 文献标识码:A    Study on Implementation of WEB Print Method Based on ASP.NET 2.0   ZU Xiao-dong  (Tia
期刊
摘 要:WinHex是一款通用的16进制编辑器,利用它可以手动恢复被删除或误覆盖的文档。介绍一种使用WinHex软件找回误覆盖的Word文档的方法。  关键词:WinHex;误覆盖Word文档;手动恢复  中图分类号:TP309.3 文献标识码:A    Handwork Restore of the Miscovered Word Files by WinHex Software  XU Fu-
期刊
摘 要:介绍了全球卫星定位系统GPS的基本组成及技术原理,阐述GPS在车辆智能管理系统中的具体应用,介绍GPS在车辆监控系统的主要功能,最后对GPS在车辆智能管理系统中的发展前景进行了总结和展望。  关键词:GPS车辆智能管理;定位;监控  中图分类号:TP872 文献标识码:A    Brief Introduction of GPS Application on Vehicle Intelle
期刊