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-devSelanjutnya, 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 -gStart SSHD
gsocket -s ExampleSecretChangeMe /usr/sbin/sshd -D # Workstation A
gsocket -s ExampleSecretChangeMe ssh bob@gsocket # Workstation BFile transfer
blitz -s ExampleSecretChangeMe -l # Workstation A
blitz -s ExampleSecretChangeMe *.php # Workstation BStart SFTP
gs-sftp -s ExampleSecretChangeMe -l # Workstation A
gs-sftp -s ExampleSecretChangeMe # Workstation Bgs-mount
gs-mount -l # Workstation A
gs-mount ~/mnt # Workstation BPipe data from Workstation B to Workstation A
gs-netcat -l -r >warez.tar.gz # Workstation A
gs-netcat <warez.tar.gz # Workstation BExecute any command (nc -e style) on Workstation A
gs-netcat -l -e "echo hello world; id; exit" # Workstation A
gs-netcat # Workstation BListen for a new connection
gs-netcat -s MySecret -l # Workstation A
gs-netcat -s MySecret # Workstation BSpawn a PTY login shell when a client connects
gs-netcat -s MySecret -l -i # Workstation A
gs-netcat -s MySecret -i # Workstation BPipe 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 BTCP 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 BOpenVPN 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 gsocketSpawn 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 Bport-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.serviceUnit]
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.targetKemudian start service gsocket-mariadb.
systemctl daemon-reload
systemctl enable --now gsocket-mariadbUntuk dapat terhubung ke port forwarding, pada sisi client jalankan perintah berikut.
gs-netcat -s ExampleSecretChangeMe -p 3306Selanjutnya test login.
mysql -h 127.0.0.1 -u adminsystemd-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/.envGS_HOST=192.156.87.1Buat 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.targetKemudian buat file yang berisi random key.
gsocket -g > /root/gsocket-key.txt
chmod 600 /root/gsocket-key.txt# cat gsocket-key.txt
StrongSecretKeyStart service gsocket.
systemctl daemon-reload
systemctl enable --now gsocketPastikan 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 -iuser-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 -iwireguard #
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/32Client
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 = 25Aktifkan WireGuard di Server dan Client.
Server
wg-quick up serverClient
wg-quick up clientReferensi: