共享软件中恶意代码插入技术研究

一、   前言

过去的Windows系统,漏洞百出,防不胜防,因此第三方杀毒软件几乎是装机必备。随着windows系统的不断更新,其安全防护措施也不断加强,传言Windows自带的windows defender已经可以完全替代第三方杀毒软件的工作,那么是否还需要安装第三方杀毒软件呢/p>

其实,恶意软件和杀毒软件是一对好兄弟,它们一直互相斗争、互相进步,随着杀软技术的提高,免杀技术也在不断提高。有些恶意程序的关注重点已经不在于“干坏事”了,它们已经把目光放在了“流量”上,毕竟现在是流量为王的时代。各种恶意程序通过广告、捆绑等形式来发展自己,其中的重灾区就是各种网站的下载工具。就连某搜索引擎提供的下载中心中的软件都被添加了恶意代码。 

共享软件中恶意代码插入技术研究

c) 编辑区段大小和属性

共享软件中恶意代码插入技术研究

因为我们的shellcode需要执行,可能被添加的shellcode执行时还要自修改,所以我们需要把区段属性改为可读可写可执行。最后别忘记保存。

共享软件中恶意代码插入技术研究

image.png共享软件中恶意代码插入技术研究

共享软件中恶意代码插入技术研究

f) 更改PE文件的OEP到我们的shellcode起始位置

shellcode的起始虚拟地址就是我们添加区段时新区段的起始地址0×38000

共享软件中恶意代码插入技术研究

g) 在shellcode后添加跳转到原OEP的代码:JMP 原OEP

shellcode执行完后,为了不影响原程序运行,还需要执行原程序的代码,原程序的代码从哪里开始执行呢是被我们修改前的OEP的值。改变代码的执行流程需要用到指令JMP XXX。XXX就是跳转偏移。

跳转偏移=原OEP-JMP所在位置-5

原OEP=0×9486

JMP所在位置=新区段地址0×38000(新的OEP)+Shellcode大小0×122

跳转偏移=0×9486-(0×38000+0×122)-5=0xFFFD135F

所以跳转到原OEP的Opcode为 E9 5F 13 FD FF

在我们e)中添加的shellcode后添加这几个Opcode.

共享软件中恶意代码插入技术研究 共享软件中恶意代码插入技术研究

其中文件块对齐大小就是节的对齐单位,即每个区段都是该值的整数倍,如果该区段的有效字节数不是该值的整数倍,就会用0补齐。这些补齐用的0就是我们要找的节间代码洞,所以我们要找的代码洞大小不会超过这个值。如果你的shellcode体积比这个值大,那你就要换个文件添加shellcode了。如果是指定文件添加shellcode,又没有合适的代码洞怎么办呢,那就要大量改造这个PE文件,这就违背了代码洞添加shellcode的初衷:不改变文件大小。

如果该值合适,那么我们就可以在节与节之间查找我们需要的代码洞了,用LordPE查看区段信息。

共享软件中恶意代码插入技术研究

如上图所示,PE头部和第1个区段之间有大量的0,满足我们的条件。

b)  找触发点跳转到Shellcode

将HelloWorld shellcode拷贝到代码洞中的合适位置,这里我们选择0×300这个地方。

共享软件中恶意代码插入技术研究

把push 0042B0C0换成JMP Shellcode位置,即JMP 400300

共享软件中恶意代码插入技术研究

右键补丁保存修改后的文件

image.png共享软件中恶意代码插入技术研究

到这一步为止,我们的代码洞加Shellcode就完成了。点击确定,弹出HelloWorld,shellcode运行正常,再提示错误,程序运行正常

共享软件中恶意代码插入技术研究

四、   自动化工具实现

经过上述两种方式添加shellcode后我们已经发现,加区段的方式容易实现自动化,而代码洞实现则比较困难。下面我们就开始看看如何用代码来实现加区段的方式添加shellcode。主要分以下几步:

1. 检测PE文件是否有效

2. 提取shellcode文件中的shellcode并获取shellcode大小

3. 添加新区段,把shellcode拷贝到新区段

4. 更改OEP到新区段,并添加跳转到原OEP的OPCODE

a)  检测PE文件

检测PE文件是否符合要求:

b)  提取Shellcode

解析Shellcode文件,获取Shellcode大小,并加密,加密后和解密Shellcode组合成新Shellcode。

解密Shellcode为:

c)   添加Shellcode段

添加Shellcode区段:我们需要改变原文件的区段信息,添加一个新的区段,并在文件后追加对应大小的区段。添加的区段信息包括:区段名、区段在文件中的大小、区段文件偏移、区段的虚拟大小,区段在内存中的偏移、区段保护属性。

拷贝Shellcode到新区段

来源:weixin_30596343

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年5月10日
下一篇 2018年5月10日

相关推荐