PowerProxy - PowerShell SOCKS Proxy With Reverse Proxy Capabilities

PowerShell SOCKS proxy with reverse proxy capabilities.

PowerProxy is written with penetration testers in mind. Reverse proxy functionality is a priority, for traversing networks that block inbound connections. Reverse proxy connections are encrypted by default. Username/Password authentication is supported for Socks 5 connections.


Import the script:

iex (new-object net.webclient).downloadstring("") 
# OR
Import-Module \\\Public\PowerProxy.ps1

reverse_proxy_handler.py can create temporary SSL certs, which requires OpenSSL. If OpenSSL isn't installed on your machine (it is on most Linux/Unix-based systems), provide your own cert or use the --no-encrypt option.


For detailed usage, check out PowerProxy's help, or use ./reverse_proxy_handler.py --help

Run a reverse proxy

On local machine, start the handler:

# Listen for reverse proxies on port 8080. Clients connect to port 1080 (default)
./reverse_proxy_handler.py -p 8080

In PowerShell:

Start-ReverseSocksProxy -Port 8080

Proxy clients can treat the server created by reverse_proxy_handler.py as if it were the actual SOCKS server:

curl --socks4

Run a traditional SOCKS server

Start-SocksProxy -Port 9050

Require authentication

Use PSCredential objects to require a username and password:

# Create the credential
$Password = ConvertTo-SecureString -AsPlaintext -Force "Passw0rd123"
$Cred = New-Object System.Management.Automation.PSCredential ("ProxyUser", $Password)

Start-ReverseSocksProxy -Credential $Cred -Address -Verbose


  • At the moment, only CONNECT requests are supported. BIND support is a goal, if practical.
  • GSSAPI authentication is not supported.
  • reverse_proxy_handler.py is only tested on UNIX-based machines, and probably doesn't work on Windows.

PowerProxy - PowerShell SOCKS Proxy With Reverse Proxy Capabilities PowerProxy - PowerShell SOCKS Proxy With Reverse Proxy Capabilities Reviewed by Zion3R on 8:30 AM Rating: 5