04-病毒剖析

上传人:今*** 文档编号:107037228 上传时间:2019-10-17 格式:PPT 页数:85 大小:237KB
返回 下载 相关 举报
04-病毒剖析_第1页
第1页 / 共85页
04-病毒剖析_第2页
第2页 / 共85页
04-病毒剖析_第3页
第3页 / 共85页
04-病毒剖析_第4页
第4页 / 共85页
04-病毒剖析_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《04-病毒剖析》由会员分享,可在线阅读,更多相关《04-病毒剖析(85页珍藏版)》请在金锄头文库上搜索。

1、信息对抗技术,韩 宏,病毒攻防,什么是病毒,病毒是什么?病毒就是一个具有一定生物病毒特性,可以进行传播、感染的程序。,依赖的环境,1 计算机体系结构依赖 感染apple II的elk cloner就不能感染ibm的pc 采用pseuodformat的方式产生了intel体系上,跨越windows和linux的病毒mental driller。,2 Cpu依赖 不同的cpu的操作码不一样。对于intel nop指令是0x90; vax上是0x1.因此,大部分被翻译成2进制形式的病毒无法跨越cpu感染。 cpu不是100%的向后兼容。Finnploy病毒就不能在386上运行,因为该处理器错误地执行

2、了call sp指令。,3 操作系统依赖 因为操作系统上,机制发上了变化。直接设备访问,无法发生在NT上,而可以发生在DOS中。Pe格式的文件在dos下就不支持。用结构化异常陷入内核的技巧就只能在win98下使用。用结构化异常将错误处理定向到栈的技术就不能在windows server 2003上使用。,4 文件系统依赖 对于不关心文件存储格式的大多数病毒而言,文件系统的差异没有关系。而有些病毒非常依赖实际的文件系统。 簇病毒,整个硬盘上只有一个病毒拷贝。 NTFS流病毒,为了支持APPLE的分层文件系统,文件可以包含多个流。 NTFS压缩病毒。利用其压缩特性对宿主和病毒程序进行压缩。 ISO

3、镜像文件病毒。当AUTORUN.INF被执行时,运行被感染的可执行文件。Zombie在2002年开发的。,5 文件格式依赖 dos下的com病毒,这是一种没有特殊格式的二进制文件 dos下的exe病毒。 16位windows和os2上的NE格式的病毒 os2上的LX病毒。 WIN32上的PE病毒: 动态链接库病毒,如Happy99通过将钩子注入到wssock32.dll来挂接connet和send从而监控邮件的访问。Native 病毒, 访问native api的病毒 UNIX上的ELF病毒,问题是不同的UNIX间的二进制文件缺乏兼容性,难以交叉传染 设备驱动程序病毒,在WIN9X下感染VXD

4、文件,而NT上感染PE文件。Infis就是感染nt的病毒,在内核下感染文件。另外一个是w32/kick病毒。一般他们主要通过挂接中断INT 2E来感染文件,目标文件和库文件病毒: 1、被感染可执行文件在主机上运行 2、定位并感染新的目标文件 3、被感染目标文件被用户链接形成新的被感染的目标文件。 1993年的SHIFTER是一个代表。但这种类型的病毒非常少,只有10来个,6 解释环境依赖 大的应用程序都会提供用户可编程的支持。比如,OFFICE。而为了灵活性,有许多解释型脚本语言,例如PYTHON。总之,解释环境渗透到许多方面。 依赖解释环境本身的平台跨越性,病毒也获得了二进制形式下难以获取的

5、平台跨越能力。,微软产品中的宏病毒 IBM系统中的REXX病毒 DEC/VMS上的DCL病毒 UNIX上的SHELL脚本(csh, ksh, bash)一般是通过脚本来安装自己。 Windows下的vbscript病毒 批处理病毒 mIRC , PIRC脚本中的即时消息病毒 Superlogo病毒 Jscirpt病毒 Perl病毒 Python病毒 TCL病毒 PHP病毒 MapInfo病毒 Windows帮助文件病毒。,7 漏洞依赖 8 JIT依赖 有感染MSIL的病毒,还有替换入口点代码的病毒 9 档案文件格式依赖 10 网络协议依赖性, 例如father christmas攻击的是DEC

6、NET对Internet无用。,11源代码依赖 当被感染的源文件编译执行后,病毒将寻找其他的c源文件并感染他们。病毒源代码通常被定义为一个字符串。Subit使用一个拼接的字符串定义其源代码 源代码木马 只感染源代码的思想来自ken Thomson,自己能打印自己源代码的程序。并给了一个插入木马的例子。当开源代码流行后,这个问题会更加明显。,12调试器依赖性 有的病毒依赖安装好的调试器,通常是dos下的debug.exe. 13 编译器和链接器依赖 有的病毒为了提高其兼容性,采用了将自己的源代码复制到目标机,然后再编译的方法。例如slapper蠕虫就是在linux上复制并用gcc编译。 14 设

7、备翻译层依赖 例如window ce下 cef格式,病毒感染技术,1 引导区病毒 感染引导区,从而得以执行的病毒。,在软盘的第一个扇区,硬盘的0号磁头,0号磁道,1号扇区内,有一个MBR(master boot record)主引导纪录。其开始部分存放了一段很小的导入代码(boot strap loader),以及分区表(PT)。代码最先执行,并用pt定位活动分区,从中读出第一个逻辑扇区作为引导扇区,该扇区的代码是操作系统相关的。 MBR是512个字节,org 07c00h start: mov ax, cs mov ds, ax mov es, ax call DispStr jmp $ D

8、ispStr: mov ax, BootMsg mov bp, ax mov cx, 8;in flatasm, the msgln is not translated as 8. i dont know why mov ax, 1301h mov bx, 001bh mov dl, 0 int 10h ret BootMsg: db “hello os“ MsgLn equ $ - BootMsg times 510 - ($ - $) db 0 dw 0xaa55,实验以下启动代码 1 安装vmware虚拟机 2 选中软盘设定,并双击,3 在所指处填写上一个新的软盘文件的名字,并用crea

9、te生成一个新的软盘文件,4 将前面的汇编代码编译成bin方式的文件。可以用nasm, 或fasm。编译。 5将生成的bin文件的内容拷贝到第3步生成的软盘文件中。 6 启动虚拟机,将在屏幕上打印hello os,主引导区感染技术 1 替换引导装入程序感染MBR,保存的原拷贝可能在中间扇区,常常也在最后一个扇区,Mbr PT,Virus PT,Saved mbr,2 替换mbr的代码而不保留。这种病毒清除需要有一份标准的mbr。 3 修改pt表项的方法感染mbr。病毒修改活动分区的pt表项,保证启动时装载的是有病毒的启动扇区,随后病毒装载原始的启动扇区。,文件感染病毒,病毒的关键,病毒要感染执

10、行文件,然后再特定的时期执行自己的工作。下面是其面临的几个关键问题 这里指示了几个关键的步骤,执行自己的工作,必然要使用操作系统的资源,那么就需要调用API. 病毒是我们构造的代码,而其加载在空间的位置不确定,但代码中要访问诸如字符串一样的资源,所以面临重定位问题。 感染文件,必然要修改pe格式,所以会操控pe格式的文件(相对win32的程序而言),关于重定位问题,我们在溢出攻击中已经讨论。 关于API调用的问题,我们在溢出攻击中已经讨论 剩下的问题是,如何感染执行文件,并在该文件执行时执行病毒代码体。 和溢出攻击相似,都是一段异体代码在正常的程序体内执行。不同的是,溢出攻击是在正常程序运行后

11、侵入。而病毒是修改程序的文件,并得以执行。溢出攻击的异体代码生存期是被入侵进程的生存期,而病毒将附着在程序的文件上得以长存。,要感染执行文件,并使病毒代码被加载执行,必须解决两个问题。 1)病毒代码被加载到内存 2)病毒代码被执行,必须有转跳到病毒代码的能力。如同经典的溢出攻击覆盖返回地址,得到执行能力。病毒代码也必须通过某种途径得以执行。,如何加载到内存呢?我们必须附着到别人的exe上,这样就可以了吗? 好,我们就把病毒代码的字节流写入到执行文件的尾部。,执行文件,病毒代码,添加到尾部,简单这样做了后,我们并没有将尾部附加的内容加载到内存。 可以做简单的实验,我们可以用软件比如winhex扫

12、描0-2GB的内存空间,寻找病毒代码对应的字节流。结果没有。 分析,就算你附加了一部分代码到已经存在的文件的尾部,凭什么系统给你加载到内存?除非你告诉系统。你想,随便给个文件,系统就会将他当作exe执行?你将一个word文件后缀改成exe实验一下。可见执行文件必须有格式,这个格式告诉系统加载那些部分,并且将哪个地址作为执行的入口地址。这是什么格式呢?这些格式可以被病毒利用吗?,PE格式,PE格式是win32上的执行文件的格式。掌握病毒必须详细了解PE格式文件。 再msdn上用pe格式搜索,可以得到相关参考资料,section1,section2,固定头部,Dos 头部,NT头部,节表,节区,代

13、码段,数据段,Dos 头部,见后页,该部分兼容以前dos的程序,TImage_Dos_Header = record e_magic: Word; / Magic number e_cblp: Word; / Bytes on last page of file e_cp: Word; / Pages in file e_crlc: Word; / Relocations e_cparhdr: Word; / Size of header in paragraphs e_minalloc: Word; / Minimum extra paragraphs needed e_maxalloc:

14、Word; / Maximum extra paragraphs needed e_ss: Word; / Initial (relative) SS value e_sp: Word; / Initial SP value e_csum: Word; / Checksum e_ip: Word; / Initial IP value e_cs: Word; / Initial (relative) CS value e_lfarlc: Word; / File address of relocation table e_ovno: Word; / Overlay number e_res:

15、array04-1 of Word; / Reserved words e_oemid: Word; / OEM identifier (for e_oeminfo) e_oeminfo: Word; / OEM information; e_oemid specific e_res2: array010 - 1 of Word; / Reserved words e_lfanew: Cardinal; / File address of new exe header end;,该头部的第一个字段e_magic就是MZ。 最后一个字段e_lfanew是偏移量,就是从文件头部到NT头部的偏移量,包括了dos头部。 NT头部处于dos头部的后面。,NT头部,TImage_NT_Headers32 = record Signature: Cardinal; FileHeader: TImage_File_Header; OptionalHeader: TImage_Optional_Header32; end;,Signature字段头两个字节是PE,表明是pe格式的文件。我们判断一个文件是否是pe格式,只要先判断文件头2字节是否是MZ,然后判断nt头部的signature是否是PE.,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号