Een enkele gecompromitteerde host in een intern netwerk is nutteloos zonder een betrouwbaar pivot-pad. SOCKS5-tunnels via SSH bieden de laagste latentie en de meest tool-agnostische methode voor laterale beweging — maar de meeste operators configureren ze verkeerd of laten forensische sporen achter die een competente blauwe ploeg binnen enkele seconden zal opmerken. In 2024 verslaat een correct opgezette SOCKS5-proxy nog steeds HTTP CONNECT-proxies voor ruwe TCP-doorvoer, en met tools zoals proxychains-ng en Chisel kun je nmap, Metasploit en aangepaste scripts door een enkele SSH-sessie leiden zonder de firewallregels van het doelwit aan te raken.
Waarom SOCKS5 via SSH beter is dan poortdoorsturing
Statische lokale poortdoorsturing (-L) dwingt je om elke externe service aan een lokale poort te koppelen voordat je ermee kunt communiceren. Als je een /24-subnet moet scannen, zou je 254 afzonderlijke doorsturingen moeten maken. SOCKS5 dynamische doorsturing (-D) lost dit op door een lokale SOCKS5-proxy bloot te stellen die elke TCP-verbinding via de SSH-tunnel naar de externe host routeert. Het protocol is gedefinieerd in RFC 1928 en ondersteunt authenticatie, UDP (optioneel) en IPv6. In de praktijk krijg je één enkele lokale listener — meestal op 127.0.0.1:1080 — en elke tool die SOCKS-proxy's ondersteunt, kan deze gebruiken. De overhead is verwaarloosbaar: de encryptie van SSH voegt misschien 5-10% CPU toe, maar de latentie is veel lager dan bij een VPN of een omgekeerde poortdoorsturing via een web shell.
Een SOCKS5-listener opzetten op een Linux-voetnoot
Stel dat je een shell hebt op een Linux-host in het doelnetwerk. De snelste manier om een pivot op te zetten is door ssh -D 1080 -N -f user@your-listener uit te voeren vanaf de gecompromitteerde host terug naar je aanvalsmachine. Maar dat vereist uitgaande SSH-toegang, die mogelijk geblokkeerd is. Voer in plaats daarvan de dynamische doorsturing uit vanaf je aanvalsmachine naar de gecompromitteerde host:
ssh -D 1080 -N -f compromised_user@compromised_host
Dit opent een SOCKS5-proxy op je lokale poort 1080. Configureer nu proxychains-ng (/etc/proxychains.conf) om die proxy te gebruiken:
socks5 127.0.0.1 1080
Voer vervolgens elke TCP-tool door de tunnel uit:
proxychains4 nmap -sT -Pn -p 445,3389 10.10.10.0/24
Merk op dat nmap -sT (TCP connect-scan) vereist omdat SOCKS5 geen ruwe SYN-pakketten ondersteunt. Voor Metasploit stel je setg Proxies socks5:127.0.0.1:1080 in en alle hulp- en exploitmodules worden door de pivot gerouteerd. Deze techniek werkt in CTF-omgevingen zoals Hack The Box of Proving Grounds waar het doel is om een tweede subnet te bereiken.
Chisel, Ligolo-ng en de afwegingen
Wanneer SSH niet beschikbaar is — misschien draait het doelwit Windows of heeft het geen SSH-server — vullen alternatieve tunnelingtools het gat. Chisel gebruikt een op Go gebaseerde client en server die TCP over HTTP/HTTPS tunnelen. Start de server op je aanvalsbox: chisel server -p 8000 --reverse. Op de gecompromitteerde host start je de client: chisel client your_ip:8000 R:socks. Dit geeft je een SOCKS5-listener aan de serverzijde. Chisel is snel en werkt door restrictieve uitgaande filters heen, maar het verkeer is standaard niet versleuteld — wikkel het in TLS of gebruik SSH als je om opsec geeft.
Ligolo-ng hanteert een andere aanpak: het creëert een netwerktunnel op laag 3 met behulp van TUN/TAP-interfaces. In plaats van SOCKS5 routeer je volledige IP-reeksen door de pivot. Dit betekent dat je nmap -sS (SYN-scan) kunt uitvoeren zonder proxychains. De afweging is administratieve overhead: je hebt root nodig op beide uiteinden en de tunnelopstelling vereist het toevoegen van routes op je aanvalsmachine. Voor CTF's waar je beide kanten beheert, is Ligolo-ng sneller. In echte opdrachten is de SOCKS5-aanpak draagbaarder omdat deze werkt zonder verhoogde rechten op de pivot-host.
Detectiesignalen die aanvallers achterlaten
Elke pivot-methode laat artefacten achter. De SSH-dynamische doorsturing creëert een luistersocket op de gecompromitteerde host — ss -tlnp toont een ssh-proces dat is gebonden aan 127.0.0.1:1080. Blauwe teams kunnen dit correleren met uitgaande SSH-verbindingen naar een extern IP. Het clientproces van Chisel heet standaard chisel — triviaal te detecteren met procesmonitoring. Ligolo-ng vereist een TUN-apparaat (ip link show), wat abnormaal is op een server.
Erger nog, veel operators vergeten op te ruimen. De SSH-sessie blijft bestaan totdat de externe host deze beëindigt of de verbinding wegvalt. Proxychains laat geen lokale artefacten achter, maar het nmap-verkeer zelf — ongebruikelijke poortscans afkomstig van een host die normaal niet scant — activeert IDS-meldingen. De meest voorkomende fout is het hergebruiken van de standaard SOCKS5-poort 1080. Wijzig deze naar een hoge ephemerale poort (bijv. ssh -D 53421) en alias de proxychains-configuratie om te voorkomen dat er een standaardconfiguratiebestand achterblijft. In een CTF maakt dit allemaal niets uit. In een echte penetratietest zijn dit de signalen waarmee je gepakt wordt.