
Crea VM insicure in modo casuale
SecGen crea macchine virtuali vulnerabili, ambienti di laboratorio e sfide di hacking, così gli studenti possono imparare le tecniche di penetration testing sulla sicurezza.
Box come Metasploitable2 sono sempre gli stessi, questo progetto utilizza Vagrant, Puppet e Ruby per creare macchine virtuali vulnerabili in modo casuale che possono essere utilizzate per l'apprendimento o per ospitare eventi CTF.
L'ultima versione è disponibile su: http://github.com/cliffe/SecGen/
Ti preghiamo di completare un breve sondaggio per dirci come stai utilizzando SecGen.
Per una soluzione ospitata visita: https://hacktivity.co.uk/
Gli studenti di sicurezza informatica traggono beneficio dal cimentarsi in sfide di hacking. Il lavoro pratico in laboratorio e le sfide di hacking preconfigurate sono una pratica comune sia nell'istruzione sulla sicurezza sia come passatempo per individui attenti alla sicurezza. Le sfide di hacking competitive, come le competizioni capture the flag (CTF), sono diventate un pilastro nelle conferenze del settore e sono il fulcro di grandi comunità online. Le macchine virtuali (VM) forniscono un modo efficace per condividere bersagli per l'hacking e possono essere progettate per mettere alla prova le capacità dell'attaccante. Siti web come Vulnhub ospitano VM di sfide di hacking preconfigurate e sono una risorsa preziosa per coloro che imparano e migliorano le proprie competenze nella sicurezza informatica. Tuttavia, sviluppare queste sfide di hacking richiede tempo e, una volta create, sono essenzialmente statiche. Ovvero, una volta che la sfida è stata "risolta" non rimane alcuna sfida per lo studente, e se la sfida viene creata per una competizione o una valutazione, non può essere riutilizzata senza rischiare il plagio e la collusione.
Security Scenario Generator (SecGen) genera sistemi vulnerabili randomizzati. Le VM vengono create in base a 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 comporterebbe un compromesso a livello utente, e un difetto sfruttabile localmente che comporterebbe un compromesso a livello root. Ciò richiederebbe all'attaccante di scoprire e sfruttare entrambe le vulnerabilità selezionate casualmente per ottenere l'accesso root al sistema. In alternativa, lo scenario definito può essere più specifico, specificando determinati tipi di servizi (come FTP o SMB) o persino vulnerabilità esatte (tramite CVE).
SecGen è un'applicazione Ruby, con un linguaggio di configurazione XML. SecGen legge la sua configurazione, incluse le vulnerabilità, i servizi, le reti, gli utenti e i contenuti disponibili, legge la definizione dello scenario richiesto, applica la logica per randomizzare lo scenario e sfrutta 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, versione 3 della Licenza, o (a tua scelta) qualsiasi versione successiva.
SecGen contiene moduli, che installano vari pacchetti software. Ogni modulo SecGen può contenere o reperire da remoto software, e ogni modulo definisce la propria licenza nel file secgen_metadata.xml di accompagnamento.
SecGen è sviluppato e testato su Ubuntu Linux. In teoria, SecGen dovrebbe funzionare su Mac o Windows, se hai installato tutto il software richiesto.
SecGen necessita di:
Ci sono due modi per installarlo. Entrambi sono stati testati da un'installazione pulita di Ubuntu.
Installa Docker e VirtualBox sull'host, poi lascia che docker/secgen-docker.sh costruisca un container con tutto il resto. VirtualBox è comunque necessario sull'host per il suo driver del kernel. Vedi docker/README.md.
git clone https://github.com/cliffe/SecGen.git
cd SecGen
docker/secgen-docker.sh run -s scenarios/default_scenario.xml
Installa VirtualBox dal repository di Oracle. Il pacchetto virtualbox in Ubuntu 24.04 (7.0.16) non riesce a compilare il proprio driver del kernel per i kernel HWE attuali, e Linux 7.0 richiede VirtualBox 7.2.8 o successivo:
sudo apt-get update
sudo apt-get install -y wget gpg lsb-release
wget -qO- https://www.virtualbox.org/download/oracle_vbox_2016.asc \
| sudo gpg --yes --dearmor -o /usr/share/keyrings/oracle-virtualbox-2016.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" \
| sudo tee /etc/apt/sources.list.d/virtualbox.list
sudo apt-get update
sudo apt-get install -y virtualbox-7.2
Se KVM è caricato, VirtualBox non può avviare le VM mentre KVM detiene VT-x (VERR_VMX_IN_VMX_ROOT_MODE). Sui kernel 6.12 e successivi puoi lasciarli coesistere:
echo "options kvm enable_virt_at_load=0" | sudo tee /etc/modprobe.d/kvm-virtualbox.conf
sudo modprobe -r kvm_intel kvm_amd kvm; sudo modprobe kvm_intel || sudo modprobe kvm_amd
Gli scenari SecGen utilizzano intervalli di rete host-only al di fuori dell'intervallo predefinito di VirtualBox 192.168.56.0/21, quindi consenti qualsiasi intervallo:
sudo mkdir -p /etc/vbox
echo '* 0.0.0.0/0 ::/0' | sudo tee /etc/vbox/networks.conf
Installa Vagrant dal repository di HashiCorp (Ubuntu 26.04 non lo pacchettizza più, e le versioni precedenti di Vagrant non riescono più a scaricare le box da Vagrant Cloud):
wget -qO- https://apt.releases.hashicorp.com/gpg | sudo gpg --yes --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt-get update
sudo apt-get install -y vagrant
Installa Ruby e gli altri pacchetti richiesti:
sudo apt-get install -y git ruby-full ruby-dev build-essential patch pkg-config zlib1g-dev liblzma-dev \
imagemagick exiftool libpq-dev libcurl4-openssl-dev libxml2-dev libxslt1-dev graphviz libgraphviz-dev \
libpcap-dev libsqlite3-dev libgpgme-dev libyaml-dev libffi-dev libssl-dev
Clona SecGen e installa le gemme. Usa bundle install, non bundle update: Gemfile.lock fissa le versioni che funzionano su ogni Ruby supportato, e bundle update le sostituisce con le release più recenti, che potrebbero non funzionare.
git clone https://github.com/cliffe/SecGen.git
cd SecGen
sudo gem install bundler -v '~> 2.4'
sudo bundle install
Poi prova lo scenario predefinito (la prima volta scarica la base box da hacktivity.co.uk):
ruby secgen.rb run
Note: