
Générer des machines virtuelles vulnérables à la volée (le développement actuel de l'équipe se déroule dans le fork cliffe/SecGen)
SecGen crée des machines virtuelles vulnérables pour que les élèves puissent apprendre les techniques de test de pénétration de sécurité.
Les boîtes comme Metasploitable2 sont toujours les mêmes, ce projet utilise Vagrant, Puppet et Ruby pour créer des machines virtuelles aléatoirement vulnérables pouvant être utilisées pour l'apprentissage ou pour organiser des événements CTF.
La dernière version est disponible sur : http://github.com/cliffe/SecGen/
Les étudiants en sécurité informatique bénéficient de la participation à des défis de piratage. Les travaux pratiques en laboratoire et les défis de piratage préconfigurés sont une pratique courante tant dans l'enseignement de la sécurité que comme passe-temps pour les personnes intéressées par la sécurité. Les défis de piratage compétitifs, tels que les compétitions capture the flag (CTF), sont devenus un pilier des conférences industrielles et sont le centre d'intérêt de grandes communautés en ligne. Les machines virtuelles (VM) offrent un moyen efficace de partager des cibles de piratage et peuvent être conçues pour tester les compétences de l'attaquant. Des sites Web tels que Vulnhub hébergent des VM de défis de piratage préconfigurés et constituent une ressource précieuse pour ceux qui apprennent et améliorent leurs compétences en sécurité informatique. Cependant, développer ces défis de piratage prend du temps et, une fois créés, ils sont essentiellement statiques. C'est-à-dire qu'une fois le défi "résolu", il ne reste plus de défi pour l'étudiant, et si le défi est créé pour une compétition ou une évaluation, il ne peut pas être réutilisé sans risquer le plagiat et la collusion.
Le Générateur de scénarios de sécurité (SecGen) génère des systèmes vulnérables randomisés. Les VM sont créées en fonction d'une spécification de scénario, qui décrit les contraintes et propriétés des VM à créer. Par exemple, un scénario pourrait spécifier la création d'un système avec une vulnérabilité exploitable à distance qui entraînerait une compromission au niveau utilisateur, et une faille exploitable localement qui entraînerait une compromission au niveau root. Cela nécessiterait que l'attaquant découvre et exploite les deux vulnérabilités sélectionnées aléatoirement pour obtenir un accès root au système. Alternativement, le scénario défini peut être plus spécifique, en spécifiant certains types de services (tels que FTP ou SMB) ou même des vulnérabilités exactes (par CVE).
SecGen est une application Ruby, avec un langage de configuration XML. SecGen lit sa configuration, y compris les vulnérabilités, services, réseaux, utilisateurs et contenus disponibles, lit la définition du scénario demandé, applique une logique de randomisation du scénario, et utilise Puppet et Vagrant pour provisionner les VM requises.
SecGen est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la GNU General Public License telle que publiée par la Free Software Foundation, soit la version 3 de la licence, soit (à votre choix) toute version ultérieure.
SecGen contient des modules, qui installent divers logiciels. Chaque module SecGen peut contenir ou télécharger à distance des logiciels, et chaque module définit sa propre licence dans le fichier secgen_metadata.xml qui l'accompagne.
SecGen est développé et testé sur Ubuntu Linux. En théorie, SecGen devrait fonctionner sur Mac ou Windows, si tous les logiciels requis sont installés.
Vous devrez installer les éléments suivants :
Installez tous les paquets requis :```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
Copiez SecGen dans un répertoire de votre choix, par exemple */home/user/bin/SecGen*
Ensuite, installez les gems :```bash
cd /home/user/bin/SecGen
bundle install
Utilisation de base:```bash ruby secgen.rb run
Cela utilisera le scénario par défaut pour générer aléatoirement une ou plusieurs VM.


SecGen accepte des arguments pour modifier son comportement. Les arguments actuellement implémentés sont :```bash
ruby secgen.rb [--options] <command>
OPTIONS:
--scenario [xml file], -s [xml file]: set the scenario to use
(defaults to scenarios/default_scenario.xml)
--project [output dir], -p [output dir]: directory for the generated project
(output will default to projects/SecGen_DATEandTIME)
--shutdown: Shutdown vms after provisioning
--network-ranges: Override network ranges within the scenario, use a comma-separated list
--forensic-image-type [image type]: Forensic image format of generated image (raw, ewf)
--read-options [conf path]: Reads options stored in file as arguments (see example.conf)
--help, -h: Shows this usage information
VIRTUALBOX OPTIONS:
--gui-output', '-g': gui output
--nopae: disable PAE support
--hwvirtex: enable HW virtex support
--vtxvpid: enable VTX support
OVIRT OPTIONS:
--ovirtuser [ovirt_username]
--ovirtpass [ovirt_password]
--ovirt-url [ovirt_api_url]
--ovirt-cluster [ovirt_cluster]
--ovirt-network [ovirt_network_name]
COMMANDS:
run, r: builds project and then builds the VMs
build-project, p: builds project (vagrant and puppet config), but does not build VMs
build-vms, v: builds VMs from a previously generated project
(use in combination with --project [dir])
create-forensic-image [/project/dir], v [project #]: Builds forensic images from a previously generated project
(can be used in combination with --project [dir])
list-scenarios: Lists all scenarios that can be used with the --scenario option
list-projects: Lists all projects that can be used with the --project option
delete-all-projects: Deletes all current projects in the projects directory
SecGen génère des machines virtuelles basées sur une spécification de scénario, qui décrit les contraintes et propriétés des machines virtuelles à créer.
Les scénarios existants abaissent la barrière à l'entrée de SecGen : lors de l'invocation de SecGen, un scénario peut être spécifié comme argument de commande, et SecGen lira alors la définition de scénario appropriée et procédera à la randomisation et à la génération de machines virtuelles. Cela supprime l'obligation pour les utilisateurs finaux du framework de comprendre la spécification de configuration de SecGen.