
Framework de Simulação de Botnet
O BSF fornece um ambiente de simulação discreto para implementar e estender botnets peer-to-peer, ajustar suas configurações e permitir que defensores avaliem mecanismos de monitoramento e contramedidas.
Na corrida armamentista entre botmasters e defensores, os botmasters têm vantagem, pois os defensores precisam reagir a ações e novas ameaças introduzidas pelos botmasters. O Botnet Simulation Framework (BSF) aborda esse problema nivelando o campo de atuação. Ele permite que defensores se adiantem na corrida armamentista ao desenvolver e avaliar novas técnicas de monitoramento de botnets e contramedidas. Isso é crucial, pois experimentar no mundo real interferiria com outros pesquisadores e possivelmente alertaria botmasters.
O BSF permite a simulação realista de botnets peer-to-peer para explorar e estudar o design e o impacto de mecanismos de monitoramento e tentativas de desmantelamento antes de serem implantados no mundo real. O BSF é um simulador de botnet baseado em eventos discretos que oferece um conjunto de funcionalidades de botnet altamente configuráveis (e personalizáveis), incluindo:
Além disso, o BSF fornece um módulo de visualização interativa para estudar ainda mais o resultado de uma simulação. O BSF tem como objetivo capacitar pesquisadores e defensores a estudar o design de diferentes mecanismos de monitoramento na presença de mecanismos de anti-monitoramento [1,2,3]. Além disso, esta ferramenta permite que os usuários explorem e compreendam o impacto das escolhas de design das botnets observadas até o momento.
O BSF consiste no framework de simulação e em uma ferramenta de visualização. O framework de simulação em si é construído sobre o OMNeT++. A visualização é construída sobre o Dash para fornecer uma visualização interativa no seu navegador favorito.
A versão atual do BSF foi construída e testada com o OMNeT++ versão 5.4.1.
Consulte a documentação do OMNeT++ para diretrizes de instalação, tutoriais e referências sobre as funcionalidades fornecidas.
Para visualizar as simulações de botnet, são necessários os seguintes pacotes Python:
pip install dash==1.2.0 # O core do dash backend
pip install dash-daq==0.1.0 # Componentes DAQ (recém disponibilizados como open source!)
pip install networkx
pip install natsort
pip install numpy
As simulações no OMNeT++ são baseadas em configurações definidas em arquivos .ini. A pasta simulations deste repositório contém um conjunto de configurações predefinidas localizadas nos arquivos tests.ini e sample.ini.
Para executar uma configuração, você pode usar a IDE do OMNeT++ ou a linha de comando. Como o BSF não utiliza nenhum dos recursos gráficos do OMNeT++, recomendamos executar todas as simulações no cmdenv, ou seja, usando apenas a saída do console.
Para executar uma simulação na IDE, você precisa configurar uma configuração de execução. Para isso, clique com o botão direito no arquivo *.ini e selecione Run As -> Run Configurations. Em seguida, configure seu arquivo de configuração conforme mostrado na imagem abaixo:

Agora basta clicar em Apply e Run. A saída da simulação aparecerá no console da IDE.
Para executar a partir da linha de comando, primeiro precisamos compilar o projeto. Navegue até a pasta raiz e execute:
make MODE=release all
Depois, navegue até a pasta simulations e execute:
../BSF -r 0 -m -u Cmdenv -c SampleConfig_Crawler -n .. samples.ini
Independentemente de executar a simulação pela IDE ou pela linha de comando, você deve ver uma saída semelhante a esta:
** Event #577792 t=64831.46985369179 Elapsed: 4.21157s (0m 04s) 37% completed (37% total)
Speed: ev/sec=180486 simsec/sec=14682 ev/simsec=12.293
Messages: created: 406512 present: 2108 in FES: 487
Just crawled: 24 nodes at 88983.25891616358
Just crawled: 40 nodes at 92583.25891616358
** Event #1050880 t=93607.74036896409 Elapsed: 6.28757s (0m 06s) 54% completed (54% total)
Speed: ev/sec=227885 simsec/sec=13861.4 ev/simsec=16.4402
Messages: created: 729732 present: 2106 in FES: 630
Just crawled: 108 nodes at 96183.25891616358
Just crawled: 286 nodes at 99783.25891616358
Just crawled: 570 nodes at 103383.25891616358
Os blocos que começam com ** são saídas padrão do OMNeT++ que indicam o progresso e as estatísticas da simulação. Na configuração selecionada, temos saídas adicionais do crawler informando o número de nós descobertos a cada intervalo de rastreamento. Embora isso não nos diga muito, mostraremos na próxima seção como visualizar a saída tanto da botnet quanto dos resultados do crawler.
A visualização é desacoplada do framework de simulação e funciona sobre os arquivos de log de monitoramento e grafos gerados. Também disponibilizamos alguns dados de exemplo para explorar as visualizações sem executar o framework principal.
Para visualizar os resultados das simulações, navegue até a pasta visualization e execute app.py. Em seguida, abra seu navegador favorito e acesse http://127.0.0.1:8050/. Isso deve fornecer uma visualização em grafo de uma das configurações de exemplo, algo parecido com isto:

O menu suspenso no canto superior direito da tela permite escolher entre os resultados de diferentes configurações. Na parte inferior da tela, você pode ver uma linha do tempo que indica todas as capturas disponíveis da botnet. Isso permite visualizar mudanças na atividade e na conectividade dos bots. Além disso, o menu à direita permite visualizar as informações coletadas pelos crawlers ou sensores. Um exemplo pode ser visto na figura a seguir, onde a visão do crawler é destacada em verde.

Além disso, estamos atualmente trabalhando em visualizações mais avançadas para auxiliar a análise de operações de monitoramento e desmantelamento.
As seguintes publicações apresentam exemplos de casos de uso do BSF:
[3] Emmanouil Vasilomanolakis, Max Mühlhäuser, Jan Helge Wolf, Leon Böck, Shankar Karuppayah