
Criar VMs inseguras aleatoriamente
O SecGen cria máquinas virtuais vulneráveis, ambientes de laboratório e desafios de hacking, para que os alunos possam aprender técnicas de testes de penetração em segurança.
Caixas como o Metasploitable2 são sempre as mesmas, este projeto usa Vagrant, Puppet e Ruby para criar máquinas virtuais aleatoriamente vulneráveis que podem ser usadas para aprendizagem ou para hospedar eventos CTF.
A versão mais recente está disponível em: http://github.com/cliffe/SecGen/
Por favor, complete uma breve pesquisa para nos informar como está a usar o SecGen.
Para uma solução alojada, visite: https://hacktivity.co.uk/
Os alunos de segurança informática beneficiam da realização de desafios de hacking. O trabalho prático de laboratório e os desafios de hacking pré-configurados são uma prática comum tanto na educação em segurança como também como passatempo para pessoas com mentalidade de segurança. Desafios de hacking competitivos, como as competições de captura da bandeira (CTF), tornaram-se um pilar em conferências da indústria e são o foco de grandes comunidades online. As máquinas virtuais (VMs) fornecem uma forma eficaz de partilhar alvos para hacking, e podem ser concebidas para testar as competências do atacante. Sites como o Vulnhub hospedam VMs de desafios de hacking pré-configuradas e são um recurso valioso para aqueles que aprendem e avançam as suas competências em segurança informática. No entanto, desenvolver estes desafios de hacking consome tempo e, uma vez criados, são essencialmente estáticos. Isto é, uma vez que o desafio foi "resolvido", não há desafio restante para o aluno, e se o desafio for criado para uma competição ou avaliação, o desafio não pode ser reutilizado sem risco de plágio e conluio.
O Security Scenario Generator (SecGen) gera sistemas vulneráveis aleatorizados. As VMs são criadas com base numa especificação de cenário, que descreve as restrições e propriedades das VMs a serem criadas. Por exemplo, um cenário poderia especificar a criação de um sistema com uma vulnerabilidade explorável remotamente que resultaria num compromisso ao nível do utilizador, e uma falha explorável localmente que resultaria num compromisso ao nível de root. Isto exigiria que o atacante descobrisse e explorasse ambas as vulnerabilidades selecionadas aleatoriamente para obter acesso root ao sistema. Alternativamente, o cenário definido pode ser mais específico, especificando certos tipos de serviços (como FTP ou SMB) ou mesmo vulnerabilidades exatas (por CVE).
O SecGen é uma aplicação Ruby, com uma linguagem de configuração XML. O SecGen lê a sua configuração, incluindo as vulnerabilidades, serviços, redes, utilizadores e conteúdo disponíveis, lê a definição do cenário solicitado, aplica lógica para aleatorizar o cenário e utiliza Puppet e Vagrant para provisionar as VMs necessárias.
O SecGen é software livre: pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU, conforme publicada pela Free Software Foundation, seja a versão 3 da Licença ou (à sua escolha) qualquer versão posterior.
O SecGen contém módulos, que instalam vários pacotes de software. Cada módulo do SecGen pode conter ou obter software remotamente, e cada módulo define a sua própria licença no ficheiro secgen_metadata.xml que o acompanha.
O SecGen é desenvolvido e testado no Ubuntu Linux. Em teoria, o SecGen deve funcionar no Mac ou Windows, se tiver todo o software necessário instalado.
Precisará de instalar o seguinte:
Este projeto foi adaptado para funcionar com a versão Ubuntu (20.04) devido ao fim de vida do (16.04) em abril de 2021, embora ainda funcione nessa versão, não é garantido o suporte para as atualizações de segurança necessárias para o seu ambiente de desenvolvimento.
Certifique-se de que o Ubuntu está atualizado usando os seguintes comandos:```bash sudo apt update sudo apt upgrade
Instale uma versão recente do vagrant:```bash
wget https://releases.hashicorp.com/vagrant/2.2.9/vagrant_2.2.9_x86_64.deb
sudo apt install ./vagrant_2.2.9_x86_64.deb
Instale outros pacotes necessários:```bash sudo apt-get install ruby-dev zlib1g-dev liblzma-dev build-essential patch virtualbox ruby-bundler imagemagick libmagickwand-dev exiftool libpq-dev libcurl4-openssl-dev libxml2-dev graphviz graphviz-dev libpcap0.8-dev git
Clone o repositório SecGen usando o seguinte comando.Por padrão, este será /home/username/SecGen, altere conforme necessário:```bash
git clone https://github.com/cliffe/SecGen.git
Instale gems usando os seguintes comandos:```bash #Step In to the file directory
cd /home/username/SecGen
bundle update --bundler
Atualizar gems:```bash
bundle update
Instale todos os pacotes necessários:```bash
wget https://releases.hashicorp.com/vagrant/1.9.8/vagrant_1.9.8_x86_64.deb sudo apt install ./vagrant_1.9.8_x86_64.deb
sudo apt-get install ruby-dev zlib1g-dev liblzma-dev build-essential patch virtualbox ruby-bundler imagemagick libmagickwand-dev exiftool libpq-dev libcurl4-openssl-dev libxml2-dev graphviz graphviz-dev libpcap0.8-dev git
Copie o SecGen para um diretório de sua escolha, como */home/user/bin/SecGen*
Em seguida, instale as gems:```bash
cd /home/user/bin/SecGen
bundle install
Para usar as basesboxes do Windows, você precisará instalar o Packer. Use o seguinte comando:```bash curl -SL https://releases.hashicorp.com/packer/1.3.2/packer_1.3.2_linux_amd64.zip -o packer_1.3.2_linux_amd64.zip unzip packer_1.3.2_linux_amd64.zip sudo mv packer /usr/local/ sudo bash -c 'echo "export PATH="$PATH:/usr/local/"" >> /etc/environment' sudo vagrant plugin install winrm sudo vagrant plugin install winrm-fs
## Uso
Uso básico:```bash
ruby secgen.rb run
Isto usará o cenário padrão para gerar aleatoriamente VM(s).
