
AutoPentest-DRL: Teste de Penetração Automatizado Usando Aprendizado por Reforço Profundo
AutoPentest-DRL é um framework de teste de penetração automatizado baseado em técnicas de Deep Reinforcement Learning (DRL). AutoPentest-DRL pode determinar o caminho de ataque mais apropriado para uma rede lógica dada, e também pode ser usado para executar um ataque de teste de penetração em uma rede real através de ferramentas como Nmap e Metasploit. Este framework foi criado para fins educacionais, para que os usuários possam estudar os mecanismos de ataque de teste de penetração. AutoPentest-DRL está sendo desenvolvido pela Cyber Range Organization and Design (CROND) cadeira dotada pela NEC no Japan Advanced Institute of Science and Technology (JAIST) em Ishikawa, Japão.
Uma visão geral do AutoPentest-DRL é mostrada abaixo. O framework recebe entrada do usuário sobre a rede alvo lógica, incluindo informações de vulnerabilidade; alternativamente, o framework pode usar o Nmap para varredura de rede para encontrar vulnerabilidades reais em uma rede alvo real com topologia conhecida. O gerador de grafo de ataque MulVAL é então usado para determinar possíveis árvores de ataque, que são alimentadas de forma simplificada no mecanismo DRL. O caminho de ataque produzido como saída pode ser usado para estudar os mecanismos de ataque em um grande número de redes lógicas. Alternativamente, o framework pode usar o caminho de ataque com ferramentas de teste de penetração, como o Metasploit, possibilitando ao usuário estudar como o ataque pode ser realizado em uma rede alvo real.

A seguir, fornecemos informações breves sobre como configurar e usar o AutoPentest-DRL. Para detalhes sobre sua operação, consulte o Guia do Usuário que também disponibilizamos.
Várias ferramentas externas são necessárias para usar o AutoPentest-DRL; para a funcionalidade básica relacionada a redes lógicas, você precisará de:
repos/mulval na pasta do AutoPentest-DRL. Você também precisa configurar o arquivo /etc/profile conforme discutido aqui. Em alguns sistemas, a ferramenta epstopdf também pode precisar ser instalada, por exemplo, usando o comando abaixo:
sudo apt install texlive-font-utils
Se você planeja usar o AutoPentest-DRL com redes reais, também precisará de:
nmap no Ubuntu é fornecido abaixo:
sudo apt install nmap
pymetasploit3 como API RPC para se comunicar com o Metasploit, e essa ferramenta precisa ser instalada no diretório Penetration_tools/pymetasploit3 seguindo as instruções do autor.O AutoPentest-DRL foi desenvolvido principalmente no sistema operacional Ubuntu 18.04 LTS; outros sistemas operacionais podem funcionar, mas não foram testados. Para configurar o AutoPentest-DRL, use a página de releases para baixar a versão mais recente e extraia o arquivo do código fonte em um diretório de sua escolha (por exemplo, seu diretório home) no host onde você pretende usá-lo.
O AutoPentest-DRL é implementado em Python e requer vários pacotes para executar. O arquivo requirements.txt incluído na distribuição pode ser usado para instalar os pacotes necessários através do seguinte comando que deve ser executado a partir do diretório AutoPentest-DRL/:
$ sudo -H pip install -r requirements.txt
O AutoPentest-DRL pode ser usado imediatamente em uma topologia de rede lógica de exemplo executando o seguinte comando em um terminal a partir do diretório AutoPentest-DRL/:
$ python3 ./AutoPentest-DRL.py logical_attack
Neste modo de ataque lógico nenhum ataque real é conduzido, e o AutoPentest-DRL apenas determinará o caminho de ataque ideal para a topologia de rede lógica descrita no arquivo MulVal_P/logical_attack_v1.P. Comparando o caminho de saída com a visualização do grafo de ataque gerado pelo MulVAL no arquivo mulval_results/AttackGraph.pdf, você pode estudar detalhadamente as etapas do ataque lógico.
Para mais informações sobre a operação do AutoPentest-DRL, incluindo o modo de ataque real a ser usado ao conduzir testes de penetração em redes reais, consulte nosso Guia do Usuário.
Para uma lista de contribuidores deste projeto, veja o arquivo CONTRIBUTORS incluído na distribuição.