MSF反弹shell原理

MSF反弹shell原理

MSF反弹shell使用的是stage payload方式,这是一种分段式的载荷运行方式,其设计理念是为了满足二进制溢出漏洞利用过程中,由于内存地址中留给攻击者的布局shellcode空间很小的情景,攻击者先利用漏洞向靶机发送一个很小的payload(stage0),达到目标机器与攻击机器建立一个shell通信的目的,然后再通过stage0上传stage1、stage2、stage3…等的方式,逐步将shell的控制权进行移交从而得到一个功能强大的shell

stage0阶段使用的是msfvenom生成的木马,用于建立攻击者与受害者机器之间的网络通信,通常采用反向连接

缓冲区溢出:攻击者利用软件的某个缺陷来传输一段很长的shellcode来溢出目标的缓冲区,从而控制EIP指针来跳转到我们的shellcode上,执行我们的代码,并且希望shellcode不能过长,否则会导致覆盖了上一个函数栈帧的数据导致异常的发生,这也是采用分段载荷运行方式的原因

正向连接:即代理机主动连接目标机,目标把流量发到自己的某个端口,攻击机主动去连接,适合入站规则宽松;

反向连接:即目标机主动连接代理机,目标把流量发给攻击机的某个端口,目标主动去连接,适合入站严格,出站宽松

msfvenom中常用的载荷有:

reverse_tcp:基于tcp的反向连接,受害者机器运行木马后会主动连接到攻击机的特定端口

reverse_http:基于http的反向连接

reverse_https:基于https的反向连接

bind_tcp:基于tcp的正向连接

MSF获取一个meterpreter的流程

shellcode(木马)使靶机链接服务器(stage0阶段)并开辟内存——靶机接收服务器发送过来的stage1阶段载荷(metsrv.dll)——反射dll注入加载到内存中——靶机接收服务器发送过来的stage2阶段载荷(stdapi.dll)——靶机接收服务器发送过来的stage3阶段载荷(priv.dll)——实现meterpreter

stage0阶段木马:建立受害者机器与服务器的通信链接,向内存申请开辟一块空间,以实现stage1阶段载荷的传输;

stage1阶段metsrv.dll:当连接建立之后,会传输metsrv.x64.dll到靶机上,是一个编译好的动态链接库dll文件,一旦metsrv.dll被加载进入内存,stage0通过简单的EIP指针跳转,将指令控制权转交给stage1,stage1即metsrv.dll的前60个字节,这是一段shellcode,一旦被执行,将利用反射式DLL注入技术重新映射metsrv.dll并将其加载进内存中,使其达到无需将写入磁盘或向主机进程注册而能够正常工作的目的,然后其调用DLLMain()函数在这个已经加载的DLL文件上,接着Meterpreter便接管了控制权

stage2阶段stdapi:是Meterpreter扩展DLL,以与metsrv.dll相同的方式反射加载,实现计算机文件、系统、网络等属性的访问

stage3阶段priv.dll:是Meterpreter扩展DLL,以与metsrv.dll相同的方式反射加载,实现权限提升、转储密码哈希和本地提权

在这里插入图片描述

stage0阶段网络通信的建立

参考msf上线原理与自写stage绕过杀软,其中的代码分析是作者自行编写的stage0阶段木马的代码,思路都是类似的

生成的木马可以以exe、elf、c程序、jar程序等形式存在,但是大致上的代码思路是类似的

  1. 使用ws2_32.dll进行socket编程
  2. 使用WSADATA结构体存储windows socket信息,使用WSAStartup()函数生成Windows socket信息,配置好socket的相关信息
  3. connect发起一个连接,指定MSF主机IP和端口号进行通信
  4. 第一次与MSF主机进行通信,MSF发送的数据只有一个数字,是stage1阶段载荷的总大小
  5. 随后为stage1阶段的载荷分配内存
  6. 循环接收stage1阶段载荷
  7. 更改载荷所在内存块的权限为可执行
  8. 使用汇编指令将sock的值放到edi寄存器中,修改eip寄存器的值,去执行载荷

edi寄存器:又称为变址寄存器,主要用于存放存储单元在段内的偏移量,可以实现多种存储器操作的寻址方式

eip寄存器:是扩展指令指针,也成为指令指针寄存器,作用与PC指针类似,用于存储当前正在执行的指令的地址

参考文章

  1. msf上线原理与自写stage绕过杀软:MSF反弹shell的流程和原理,stage0和stage1,小马大马,metsrv.x64.dll,先传小再传大;stage0阶段木马文件源代码分析
  2. shellcode原理是啥:cs的shellcode流程的分析,msf的shellcode流程分析,二者的shellcode都仅仅是一个连接程序,需要其他方式加载金内存执行
  3. meterpreter载荷执行过程及原理:MSF反弹shell分段式载荷上传原理及流程图解、各阶段上传的内容及其功能
  4. 探寻Metasploit Payload模式背后的秘密:与第三篇参考文章类似,但是有更加详细的阶段流程讲解
  5. msfvenom——木马免杀篇:msfvenom生成C语言程序木马,使用C语言和python编译执行,整理了多种方法实现stage0阶段任务
  6. 从meterpreter工作原理到免杀方式的分析:从反汇编的角度分析了stage0阶段payload的执行流程与免杀尝试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值