
Genera macchine virtuali vulnerabili al volo (lo sviluppo attuale del team avviene nel fork cliffe/SecGen)
SecGen crea macchine virtuali vulnerabili così gli studenti possono imparare le tecniche di penetration testing.
Box come Metasploitable2 sono sempre uguali; questo progetto usa Vagrant, Puppet e Ruby per creare macchine virtuali vulnerabili in modo casuale, utilizzabili per l'apprendimento o per ospitare eventi CTF.
La versione più recente è disponibile su: http://github.com/cliffe/SecGen/
Gli studenti di sicurezza informatica traggono beneficio dall'affrontare sfide di hacking. Il lavoro pratico in laboratorio e le sfide di hacking preconfigurate sono una pratica comune sia nella formazione in sicurezza sia come passatempo per gli appassionati di sicurezza. Le sfide di hacking competitive, come le competizioni capture the flag (CTF), sono diventate un punto fermo delle conferenze di settore e sono il fulcro di grandi comunità online. Le macchine virtuali (VM) forniscono un modo efficace per condividere obiettivi da hackerare e possono essere progettate per testare le capacità dell'attaccante. Siti web come Vulnhub ospitano VM di sfide di hacking preconfigurate e rappresentano una risorsa preziosa per chi apprende e migliora le proprie competenze nella sicurezza informatica. Tuttavia, sviluppare queste sfide di hacking richiede tempo e, una volta create, sono essenzialmente statiche. Cioè, una volta che la sfida è stata "risolta" non rimane alcuna sfida per lo studente, e se la sfida è creata per una competizione o una valutazione, non può essere riutilizzata senza rischiare plagio e collusione.
Security Scenario Generator (SecGen) genera sistemi vulnerabili randomizzati. Le VM vengono create sulla base di una specifica di scenario, che descrive i vincoli e le proprietà delle VM da creare. Ad esempio, uno scenario potrebbe specificare la creazione di un sistema con una vulnerabilità sfruttabile da remoto che porterebbe a un compromesso a livello di utente, e un difetto sfruttabile localmente che porterebbe a un compromesso a livello di root. Ciò richiederebbe all'attaccante di scoprire e sfruttare entrambe le vulnerabilità selezionate casualmente per ottenere accesso root al sistema. In alternativa, lo scenario definito può essere più specifico, indicando determinati tipi di servizi (come FTP o SMB) o persino vulnerabilità esatte (per CVE).
SecGen è un'applicazione Ruby, con un linguaggio di configurazione XML. SecGen legge la propria configurazione, incluse le vulnerabilità, i servizi, le reti, gli utenti e i contenuti disponibili, legge la definizione dello scenario richiesto, applica una logica per randomizzare lo scenario e si avvale di Puppet e Vagrant per il provisioning delle VM richieste.
SecGen è software libero: puoi ridistribuirlo e/o modificarlo secondo i termini della GNU General Public License come pubblicata dalla Free Software Foundation, sia la versione 3 della Licenza, sia (a tua scelta) qualsiasi versione successiva.
SecGen contiene moduli che installano vari pacchetti software. Ogni modulo di SecGen può contenere software o ottenerlo da remoto, e ogni modulo definisce la propria licenza nel file secgen_metadata.xml allegato.
SecGen è sviluppato e testato su Ubuntu Linux. In teoria, SecGen dovrebbe funzionare su Mac o Windows, se hai installato tutto il software richiesto.
Dovrai installare quanto segue:
Installa tutti i pacchetti richiesti:```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
Copia SecGen in una directory a tua scelta, ad esempio */home/user/bin/SecGen*
Poi installa le gemme:```bash
cd /home/user/bin/SecGen
bundle install
Utilizzo di base:```bash ruby secgen.rb run
Questo utilizzerà lo scenario predefinito per generare casualmente una o più VM.


SecGen accetta argomenti per modificare il suo comportamento; gli argomenti attualmente implementati sono:
-```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 genera VM basate su una specifica di scenario, che descrive i vincoli e le proprietà delle VM da creare.
Gli scenari esistenti abbassano la barriera d'ingresso per SecGen: quando si invoca SecGen, uno scenario può essere specificato come argomento da riga di comando, e SecGen leggerà quindi la definizione dello scenario appropriato e procederà alla randomizzazione e alla generazione delle VM. Questo elimina la necessità per gli utenti finali del framework di comprendere la specifica di configurazione di SecGen.