向PE文件植入后门代码技术讨论
写在前面的话
这篇文章将介绍使用codecaves对PE文件植入后门代码。有几个很好的工具可以帮到你了。比如BackdoorFactory和Shelter将完成相同的工作,甚至绕过一些静态分析几个防病毒。
开始
让我们理解一些术语:
PE文件:
可移植可执行文件(PE)格式是可执行文件,目标代码和DLL的文件格式,用于32位和64位版本的Windows操作系统。
Code Cave:
根据维基百科介绍 :
“
Code Cave是进程内存中的一系列空字节。进程内存中的Code Cave通常是对代码的脚本函数一部分的引用,这些函数具有注入自定义指令的能力。例如,如果脚本的内存允许5个字节并且只使用3个字节,则剩余的2个字节可用于向脚本添加外部代码。“
Shellcode:
根据维基百科介绍:
“shellcode是具有payload的一小段代码。它被称为
”shellcode“,因为它通常启动一个命令shell,攻击者可以通过该shell控制被入侵的机器,所以任何执行类似任务的代码都可以称为shellcode“
让我们开始吧 ….你可以从这里下载我用过的Putty版本。我将使用Immunity Debugger进行调试。您可以使用任何其他调试器,如Ollydbg。首先,我们需要找到可用的Code Cave,然后插入恶意代码。您可以添加一个部分或修改现有的部分来使用Code Cave。我使用cave-miner脚本来定位可用的未使用字节。
可以看到cave从00445CD5开始。我将从00445CD6注入我的shellcode。接下来,我将劫持程序的入口点并将执行流程重定向到我们的shellcode。首先,我们必须使用Lord PE或任何PE头编辑器工具使.data部分可执行。完成后,我们复制入口点的前几条指令并将其保存在记事本中。
插入第一条指令JMP 00445CD6,这可以将执行流程重定向到我们新发现的code cave。通过JMP指令回复入口点之后,我们需要记录下哪些指令被覆盖,因为这些指令需要在以后恢复。现在,让我们来了解部分指令:
1.PUSHAD
2.PUSHFD
3.Shellcode
4.Stack Allignment(堆栈对齐)
5.POPFD
6.POPAD
7.RETORE instructions
8.JMP to next instruction(JMP到下一条指令PUSHAD指令)
PUSHAD的用法与写作是一样的:
Push EAXPush ECXPush EDXPush EBXPush ESPPush EBPPush ESIPush EDI
POPAD以相反的顺序从堆栈中弹出值,从而恢复所有寄存器值。PUSHAD和POPAD可用于执行通用寄存器的保存和恢复,而无需按下每个寄存器的PUSH和POP。同样,PUSHFD和POPFD用于保存和恢复EFLAGS寄存器。在PUSHFD指令在 code cave中以十六进制格式和二进制的方式从mstoxic生成一个反向tcp shell代码。
在shellcode执行之前和shellcode执行之后记下ESP值,以找出差异并对齐堆栈。shellcode执行之前 :
shellcode执行之后 –
差值= 0018FF68- 0018FD6C
现在通过将此值添加到esp来对齐堆栈。
恢复后保存新修改的可执行文件并监听netcat上的反向连接。
一旦我开始putty,它就卡住了,除非我关上反向连接。这是问题是因为在msfvenom shellcode中使用了一个名为WaitforSingleObject的函数。
这有一篇很好的文章关于如何解决这个问题 https://simonuvarov.com/msfvenom-reverse-tcp-waitforsingleobject/
Msfvenom shellcode使用INFINITE作为dwMilliseconds参数的值。通过将dwMilliseconds参数值从-1设置为0来修复waitforsingleobject问题(由于我使用NOP替换的dec esi指令)。
最后把它修复并保存可执行文件,大功告成 !!!!!!!!!!!!!!!!
POC

最后
一旦打开putty.exe,它就会产生一个反向shell。..Happy Hacking ..
向PE文件植入后门代码技术讨论的更多相关文章
- NetSarang软件中nssock2.dll模块被植入恶意代码技术分析与防护方案
原文地址:http://blog.nsfocus.net/nssock2-dll-module-malicious-code-analysis-report/ NetSarang是一家提供安全连接解决 ...
- 20145314郑凯杰《网络对抗技术》PE文件病毒捆绑(插入捆绑)的实现
20145314郑凯杰<网络对抗技术>PE文件病毒捆绑(插入捆绑)的实现 一.本节摘要 简介:每个应用程序内部都有一定的空间(因为文件对齐余留的00字段)可以被利用,这样就可以保证被插入的 ...
- 手写PE文件(一)
DOS Header(IMAGE_DOS_HEADER)->64 Byte DOS头部 DOS Stub 112字节 "PE"00(Signature) 4个字节 IMAGE ...
- 深入学习PE文件(转)
PE文件是Win32的原生文件格式.每一个Win32可执行文件都遵循PE文件格式.对PE文件格式的了解可以加深你对Win32系统的深入理解. 一. 基本结构. 上图便是PE文件的基本结构.(注意:DO ...
- 深入剖析PE文件
不赖猴的笔记,转载请注明出处. 深入剖析PE文件 PE文件是Win32的原生文件格式.每一个Win32可执行文件都遵循PE文件格式.对PE文件格式的了解可以加深你对Win32系统的深入理解. 一. ...
- PE知识复习之PE文件空白区添加代码
PE知识复习之PE文件空白区添加代码 一丶简介 根据上面所讲PE知识.我们已经可以实现我们的一点手段了.比如PE的入口点位置.改为我们的入口位置.并且填写我们的代码.这个就是空白区添加代码. 我们也可 ...
- PE格式文件的解析代码
#include "Global.h" ; //标志,用于表示是否为pe32+文件 ; //标志,用于表示读入的模式,若为0代表是内存读入,不为0,代表是文件打开,此时mode是文 ...
- 向PE文件中空白处添加代码
// mem.cpp : 定义控制台应用程序的入口点. //PE文件从文件加载到内存,再从内存读取,然后存盘到文件 #include "stdafx.h" #include < ...
- 在PE文件中简单注入代码,实现在启动前弹窗
获得的新知识: 1.kernel32.dll,user32.dll,ntdll.dll等一些dll在同一个PC环境下的映射到虚拟内存基址是一样的. 2.在win8以上系统上,更改PE文件的入口点要大于 ...
随机推荐
- 《java并发编程实战》读书笔记10--显示锁Lock,轮询、定时、读写锁
第13章 显示锁 终于看到了这本书的最后一本分,呼呼呼,真不容易.其实说实在的,我不喜欢半途而废,有其开始,就一定要有结束,否则的话就感觉哪里乖乖的. java5.0之前,在协调对共享对象的访问时可以 ...
- 【DUBBO】dubbo的Router接口
Router服务路由, 根据路由规则从多个Invoker中选出一个子集AbstractDirectory是所有目录服务实现的上层抽象, 它在list列举出所有invokers后,会在通过Router服 ...
- LCA上的RMQ模板算法
How far away ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- vue实现简单在线聊天
vue实现简单在线聊天 引用mui的ui库,ES6的 fetch做网络请求 //html <!DOCTYPE html> <html> <head> <met ...
- 微软企业库5.0 学习之路——第六步、使用Validation模块进行服务器端数据验证
前端时间花了1个多星期的时间写了使用jQuery.Validate进行客户端验证,但是那仅仅是客户端的验证,在开发项目的过程中,客户端的信息永远是不可信的,所以我们还需要在服务器端进行服务器端的验证已 ...
- 在SpringMVC中 /* 和 / 的区别
<url-pattern> / </url-pattern>:会匹配到 /springmvc 这样的路径型url,而不会匹配到像 .jsp 这样的后缀型的url. <ur ...
- Aras Innovator 11 sp2 IE客户端设置
在上一篇文章<Aras Innovator 11 sp2 安装>后,服务器算是安装好了,还需要在使用的客户端进行设置才可以正常使用Aras Innovator 该篇为IE设置,还有< ...
- vue-music 关于Player (播放器组件)--播放和进度条
迷你播放器 1.播放器组件会在各个页面的情况下会打开. 首先在vuex state.js 中定义全局的播放器状态 import {playMode} from 'common/js/config.js ...
- Oracle实例,具体运用
Oracle关键字的使用 使用insert 添加数据: INSERT INTO 表名 VALUES (加入对应的数); COMMIT; INSERT INTO p_emp VALUES('TO ...
- 洛谷——P1276 校门外的树(增强版)
P1276 校门外的树(增强版) 题目描述 校门外马路上本来从编号0到L,每一编号的位置都有1棵树.有砍树者每次从编号A到B处连续砍掉每1棵树,就连树苗也不放过(记 0 A B ,含A和B):幸运的是 ...