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
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: