Identificando e neutralizando uma Botnet
Atualmente a maior preocupação de todo ISP (Internet Service Provider) e ITP (Internet Transit Provider) são os ataques DDoS (Distributed Denial of Service) recebidos em suas Redes e a indisponibilidade que eles podem causar derrubando sua infraestrutura e seus clientes. Criamos mecanismos de defesa como: sistemas de detecção de anomalias como por exemplo o Wanguard, anunciamos os prefixos atacados para nossas nuvens de mitigação e assim fazemos a limpeza do tráfego. Mas e quando sua rede também está fazendo parte dos ataques de DDoS e atacando outros ASNs na Internet? Poucas pessoas se preocupam com o que saem de suas Redes e isso pode estar impactando sua operação e causando insatisfação em seus clientes. As Portas de Amplificação abertas e Botnets são as principais causas para esses problemas. Como tratar Portas de Amplificação você pode ler nesse meu artigo Portas de Amplificação DDoS e Botnets mas aqui vamos falar de algo um pouco mais trabalhoso, que seria como identificar e neutralizar uma Botnet que se instalou na sua Rede.
Entendendo uma Botnet
Primeiro temos que entender como elas funcionam: são diversos, milhares de dispositivos vulneráveis que são invadidos e infectados com programas (bots) que se conectam em servidores chamados C&C (command and control). O dispositivo pode ser qualquer um infectado como CPEs, ONUs roteadas, computadores, enfim qualquer coisa que tenha um IP e possa acessar a Internet. Esses dispositivos infectados uma vez conectados nesses C&C podem receber e executar diversas tarefas para o cibercriminoso como por exemplo: envio de spam, roubo de informações e orquestrar ataques sincronizados em uma determinada vítima. Esses ataques saem com uma certa volumetria da sua rede e isso pode saturar diversos pontos da sua infraestrutura causando indisponibilidade para seus clientes. Seria um DDoS ao contrário, da sua Operação para a Internet.
Panorama de uma Botnet em andamento e atacando uma vítima
Para vermos os estragos que uma Botnet pode causar abaixo um gráfico dos momentos de ataques que saíam da Operação com destino à vítimas:
Na imagem acima podemos observar diversos picos de mais de 4Gbps com destino a Internet. Agora vamos imaginar o que esses picos estariam causando em suas portas PON das suas OLTs e quantos clientes poderiam estar sendo afetados. Quanto maior a infecção da Botnet maior será o poder de ataque desses cibercriminosos. Percebam que só é possível identificar visualmente essa situação, se vocês tiverem ferramentas de monitoramento como um Zabbix por exemplo. Monitoramento é vital e fundamental para identificarmos algo impactante em nossa Operação.
Coleta inicial de informações
Para tratar esse incidente, precisaremos identificar pelo menos 1 dispositivo infectado e observar o tráfego desse dispositivo para entendermos como é a comunicação entre os bots e seus C&C. Apenas pelo monitoramento acima não teremos essa resposta, nesse caso entra como um dos fatores de busca a ferramenta de análise de anomalias, como por exemplo: Fastnetmon, Wanguard, Kentik. A ideia é analisar os flows coletados na hora da saída do ataque, observar as anomalias de uploads que estourem thresholds de upload e ainda podemos analisar casos envolvendo pacotes UDP, que causam mais estragos. Desse jeito podemos eleger alguns possíveis candidatos infectados para que possamos monitorar de perto.
Próximo passo montar ambiente de análise da Botnet
Agora que temos alguns candidatos infectados, precisamos montar um ambiente lab para que possamos monitorar e registrar os ataques. Observar o comportamento deles e quem aciona eles. Para isso vamos precisar de um GNU/Linux, que neste artigo será um Debian mas poderá ser qualquer outra distribuição que tenha um tcpdump para fazermos a análise dos pacotes, precisaremos de uma interface apropriada que consiga receber o tráfego da interface por onde estão vindo os ataques. Exemplo:
Vamos supor que os ataques estejam vindo de uma interface onde tem um BNG/B-RAS PPPoE e o tráfego seja de uns 4Gbps, nesse caso colocaríamos uma interface de 10Gbps nesse GNU/Linux, ligamos na switch e fazemos um espelhamento (mirror) da porta do BNG/B-RAS para a porta onde temos nosso GNU/Linux. Dessa forma todo o tráfego passante na porta do BNG/B-RAS poderá ser analisado no GNU/Linux. Alguns teriam a ideia de fazer a análise diretamente no equipamento, por exemplo em um Mikrotik BNG mas não aconselho pois esse tipo de análise pode elevar o consumo de CPU do seu equipamento e isso não é bom. Então o jeito mais seguro e sem mexer muito no seu ambiente de produção, é esse que estou propondo.