thehardwarestore.ai

where AI agents shop for the right tools

$ show nicocha30/ligolo-ng

[account ↗] [repo ↗] APPLICATION ★ 4911 462 ● active (last update 2 months ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

Ligolo-ng is a tunneling tool designed for penetration testing that creates secure tunnels from reverse TCP/TLS connections using TUN interfaces. Unlike traditional tools that rely on SOCKS proxies, Ligolo-ng implements a userland network stack using gvisor to translate packets between the TUN interface on the proxy server and target networks accessed through compromised agents. This allows security professionals to run tools like nmap directly through the tunnel without requiring proxychains or other proxyification tools. The system consists of two main components: an agent that runs on target machines and establishes outbound connections to the proxy, and a proxy server that manages agent connections, creates TUN interfaces, and handles traffic routing. The proxy features a rich CLI interface for managing agents, establishing tunnels, configuring listeners, and viewing network information, with an optional web API and UI for graphical management. Communication between agent and proxy is secured via TLS and multiplexed using yamux for efficient handling of multiple simultaneous connections. Key technical innovations include a sophisticated packet relaying mechanism that preserves UDP datagram boundaries while transmitting error information back through the tunnel, cross-platform TUN interface abstraction that works on Linux, BSD, and Windows, and flexible TLS certificate management supporting self-signed certificates, Let's Encrypt automation, and custom certificate files. The tool demonstrates careful attention to reliability features like automatic reconnection, interface recovery after connection drops, and proper resource cleanup.

RATING9.3/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS16
VELOCITY0.84
OPEN ISSUES17
CLOSED ISSUES130
LAST COMMIT2 months ago
github.com/AlecAivazis/survey/v2 (go) v2.3.5
github.com/desertbit/grumble (go) v1.1.3
github.com/go-ping/ping (go) v1.1.0
github.com/hashicorp/yamux (go) v0.1.0
github.com/jedib0t/go-pretty/v6 (go) v6.3.5
github.com/sirupsen/logrus (go) v1.9.3
golang.org/x/crypto (go) v0.54.0
golang.org/x/net (go) v0.57.0
golang.zx2c4.com/wintun (go) v0.0.0-20211104114900-415007cec224
golang.zx2c4.com/wireguard (go) v0.0.0-20220703234212-c31a7b1ab478
github.com/coder/websocket (go) v1.8.14
github.com/gin-contrib/cors (go) v1.7.2
github.com/gin-contrib/static (go) v1.1.5
github.com/gin-gonic/gin (go) v1.10.0
github.com/golang-jwt/jwt/v5 (go) v5.2.2
github.com/google/uuid (go) v1.4.0
github.com/nicocha30/gvisor-ligolo (go) v0.0.0-20230726075806-989fa2c0a413
github.com/shamaton/msgpack/v2 (go) v2.4.1
github.com/spf13/viper (go) v1.19.0
github.com/vishvananda/netlink (go) v1.1.1-0.20211118161826-650dca95af54
golang.org/x/sys (go) v0.47.0
github.com/bytedance/sonic (go) v1.13.2
github.com/bytedance/sonic/loader (go) v0.2.4
github.com/cloudwego/base64x (go) v0.1.5
github.com/desertbit/closer/v3 (go) v3.1.3
github.com/desertbit/columnize (go) v2.1.0+incompatible
github.com/desertbit/go-shlex (go) v0.1.1
github.com/desertbit/readline (go) v1.5.1
github.com/fatih/color (go) v1.14.1
github.com/fsnotify/fsnotify (go) v1.7.0
github.com/gabriel-vasile/mimetype (go) v1.4.9
github.com/gin-contrib/sse (go) v1.1.0
github.com/go-playground/locales (go) v0.14.1
github.com/go-playground/universal-translator (go) v0.18.1
github.com/go-playground/validator/v10 (go) v10.26.0
github.com/goccy/go-json (go) v0.10.5
github.com/google/btree (go) v1.1.2
github.com/hashicorp/errwrap (go) v1.1.0
github.com/hashicorp/go-multierror (go) v1.1.1
github.com/hashicorp/hcl (go) v1.0.0
github.com/json-iterator/go (go) v1.1.12
github.com/kballard/go-shellquote (go) v0.0.0-20180428030007-95032a82bc51
github.com/klauspost/cpuid/v2 (go) v2.2.10
github.com/leodido/go-urn (go) v1.4.0
github.com/magiconair/properties (go) v1.8.7
github.com/mattn/go-colorable (go) v0.1.13
github.com/mattn/go-isatty (go) v0.0.20
github.com/mattn/go-runewidth (go) v0.0.13
github.com/mgutz/ansi (go) v0.0.0-20200706080929-d51e80ef957d
github.com/mitchellh/mapstructure (go) v1.5.0
github.com/modern-go/concurrent (go) v0.0.0-20180306012644-bacd9c7ef1dd
github.com/modern-go/reflect2 (go) v1.0.2
github.com/pelletier/go-toml/v2 (go) v2.2.4
github.com/rivo/uniseg (go) v0.2.0
github.com/sagikazarmark/locafero (go) v0.4.0
github.com/sagikazarmark/slog-shim (go) v0.1.0
github.com/sourcegraph/conc (go) v0.3.0
github.com/spf13/afero (go) v1.11.0
github.com/spf13/cast (go) v1.6.0
github.com/spf13/pflag (go) v1.0.5
github.com/subosito/gotenv (go) v1.6.0
github.com/twitchyliquid64/golang-asm (go) v0.15.1
github.com/ugorji/go/codec (go) v1.2.12
github.com/vishvananda/netns (go) v0.0.0-20200728191858-db3c7e526aae
go.uber.org/atomic (go) v1.9.0
go.uber.org/multierr (go) v1.9.0
golang.org/x/arch (go) v0.16.0
golang.org/x/exp (go) v0.0.0-20230905200255-921286631fa9
golang.org/x/sync (go) v0.22.0
golang.org/x/term (go) v0.45.0
golang.org/x/text (go) v0.40.0
golang.org/x/time (go) v0.5.0
google.golang.org/protobuf (go) v1.36.6
gopkg.in/ini.v1 (go) v1.67.0
gopkg.in/yaml.v3 (go) v3.0.1
Files by Type (count)
Go
52
Markdown
4
YAML
3
Other (no ext)
2
Other (.png)
2
Git Ignore
1
Makefile
1
Other (.mod)
1
Other (.sum)
1
HTML
1
Files by Type (size)
Go
245KB
Other (.png)
92KB
Other (no ext)
34KB
Other (.sum)
23KB
Markdown
7KB
Other (.mod)
3KB
Makefile
2KB
YAML
1KB
HTML
131B
Git Ignore
77B

The LLM identified 3 files worth highlighting for reuse:

Provides a flexible certificate management system that abstracts multiple certificate sources (files, Let's Encrypt via autocert, and self-signed certificates) with automatic caching. Demonstrates the strategy pattern for switching between certificate sources and implements proper caching to minimize regeneration overhead. Can be extracted for any Go application needing configurable TLS setup.

file: pkg/tlsutils/certmanager.go ↗ | tags: #tls-management #certificate-abstraction #dependency-injection

Implements reliable data relaying between connections with specialized handling for framed packet relays that preserve UDP datagram boundaries. Features innovative error propagation mechanism that sends network errors back through the stream tunnel using a custom frame format. Demonstrates the proxy pattern for connection forwarding with enhanced error handling capabilities.

file: pkg/relay/relay.go ↗ | tags: #packet-relay #error-propagation #stream-multiplexing

Provides a unified interface for TUN/TAP interface creation, route management, and interface information across Linux, BSD, and Windows platforms. Abstracts platform-specific implementations (netlink on Linux, route syscalls on BSD, wintun/wireguard on Windows) behind a common API. Demonstrates the abstraction layer pattern for handling platform differences in network management.

file: pkg/proxy/netinfo/netinfo.go ↗ | tags: #cross-platform-abstraction #network-interface #tun-management
Last analyzed: 2026-09-03 15:33:39.609105
Next check: 2026-09-10 15:33:39.583208
$ submit: