Red Hot Cyber
La cybersecurity è condivisione. Riconosci il rischio, combattilo, condividi le tue esperienze ed incentiva gli altri a fare meglio di te.
Cerca

Alla scoperta di Artemis: lo scanner di vulnerabilità modulare open source

Manuel Roccon : 17 Giugno 2024 07:12

In questo articolo andremo alla scoperta ed eseguiremo un’analisi di Artemis, un vulnerability scanner modulare open source sperimentale che si concentra prevalentemente nella ricognizione e nella ricerca di vulnerabilità web.

Il punto forte di questo progetto è la scalabilità.

Artemis rende possibile la scalabilità con  micro servizi separati grazie all’utilizzo di container tramite Docker. In ogni micro servizio è implementato un modulo con funzioni diverse, inclusi tools già conosciuti.

Vuoi diventare un Ethical Hacker?
Non perdere i nostri corsi e scrivi subito su WhatsApp al numero
375 593 1011  per richiedere informazioni dicendo che hai trovato il numero sulle pagine di Red Hot Cyber

Supporta RHC attraverso:


Ti piacciono gli articoli di Red Hot Cyber? Non aspettare oltre, iscriviti alla newsletter settimanale per non perdere nessun articolo.

La maggior parte delle funzionalità sono accessibili da GUI e di recente sono stati integrati anche i report senza necessità di utilizzare script..

Software come questi permettono alle organizzazioni di scansionare e monitorare le vulnerabilità della propria infrastruttura.

IL PROGETTO ARTEMIS

Il progetto Artemis è stato avviato dal club di scienza informatica dell’Università di Tecnologia di Varsavia ed è attualmente in fase di sviluppo da parte del CERT Polska.

https://github.com/CERT-Polska/Artemis

In breve le caratteristiche di Artemis pubblicate nella repository git:

  • Permette scansione dei sottodomini utilizzando la repo open source crt.sh e gau (https://github.com/lc/gau),
  •  Dispone di un’integrazione Shodan
  • Permette la scansione brute force sui percorsi web alla ricerca di directory o file interessanti (ad esempio file .env),
  • Permette il brute forcing delle password in WordPress/MySQL/PostgreSQL/FTP,
  • Esegue la verifica della configurazione della posta elettronica (SPF/DMARC non configurati correttamente, relay aperti),
  • Include il famoso vulnerability scanner nuclei (https://github.com/projectdiscovery/nuclei)
  • Verifica della versione del plugin WordPress/Joomla/Drupal/WordPress,
  • Esegue il controllo delle cartelle VCS (ad esempio .git),
  • Verifica delle directory aperte (index)
  • Scansiona le porte (aperte/chiuse) e identificazione dei servizi,
  • Permette di esportazione delle metriche per Prometheus (inclusi dati come il numero di attività elaborate o bloccate)
  • Facile estensibilità tramite moduli plug-and-play
  • API HTTP per facilitare l’integrazione con altri strumenti

Tutti i moduli standard sono degli script python al seguente percorso Atemis/artemis/modules:

Alcuni moduli sono scritti dagli autori del progetto, altri invece sono altri progetti open source inglobati all’interno (come nuclei).

Per quanto riguarda le configurazioni dei moduli, per esempio la lista bruteforce di password e directory sono visibili dentro Artemis/artemis/modules/data.

è possibile anche aggiungere il repository dei moduli aggiuntivi che includono:

In seguito, lo faremo girare in un ambiente con alcune macchine virtuali vulnerabili per vedere il risultato e valutare i risultati.

INIZIAMO…

Per installarlo possiamo fare riferimento a questa guida:

https://artemis-scanner.readthedocs.io/en/latest/quick-start.html

Per prima cosa prepariamo una macchina linux, in questo esempio ho usato una versione di Roky Linux.

https://rockylinux.org/download

Prima di proseguire assicuriamoci che la VM sia completamente aggiornata prima di continuare.

INSTALLAZIONE DI DOCKER

Il progetto si basa su container su Docker:

Installiamolo  seguendo questa wiki che comunque riportiamo i comandi

https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-rocky-linux-9

Quindi aggiungiamo il  repository docker:

sudo dnf config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

Installiamo questi 3 pacchetti:

sudo dnf install docker-ce docker-ce-cli containerd.io

Avviamo docker:

sudo systemctl start docker

Quindi verifichiamo che sia in esecuzione:

sudo systemctl status docker

In ultima impostiamo che docker si avvii automaticamente all’avvio della VM:

sudo systemctl enable docker

INSTALLAZIONE DI ARTEMIS

Di recente è stato rilasciato un aggiornamento che rende più facile il deploy tramite script. In passato era necessario eseguire docker compose up –build per eseguire la configurazione una volta clonata la rep.)

Ora riprendiamo la guida di Artemis e cloniamo la repo in una directory

Installiamo GIT per poter clonare la repo

Yum install git

Quindi cloniamo la repo

git clone https://github.com/CERT-Polska/Artemis.git

A questo punto entriamo nella directory e creiamo la configurazione da quella di default.

cp env.example .env

Ora avviamo lo script di configurazione:

./scripts/start

Alla fine della configurazione, come è spiegato sulla wiki, Artemis verrà esposto sulla porta 5000.

A fine installazione Artemis ci indica il percorso di accesso e se la macchina include la GUI, possiamo accedere direttamente dall’interno.

Disattivando il firewall locale possiamo accedere anche tramite IP della VM. Però attenzione: come vedremo dopo Artemis non prevede nessuna forma di autenticazione, per questo fate attenzione a dove è pubblicato.

Ci viene dato inoltre qualche suggerimento per vedere i log, e ci consiglia di modificare USER AGENT (che verrà usato nelle scansioni) modificando il file .env.

Utilizzando lo script, come suggerito

 ./scripts/run_docker_compose logs

Possiamo vedere in real time i log generati da tutti i moduli (container)

INSTALLIAMO I MODULI EXTRA

Ora aggiungiamo i moduli extra, come spiegato nella wiki cloniamo la repo all’interno si basano principalmente dei tool esistenti come wpscan e sqlmap.

Come fare ci viene indicato avviando lo script e non precedentemente installato.

Quindi cloniamo gli extra direttamente all’interno della directory di artemis e avviamo lo script 

git clone https://github.com/CERT-Polska/Artemis-modules-extra.git

e infine avviamo di nuovo lo script di start

./scripts/start

Ora se i container erano in precedenza avviati, verranno tutti stoppati e avviati assieme agli ultimi appena aggiunti.

Ad installazione finita , accediamo sempre all’indirizzo x.x.x.x:5000

LA DASHBOARD

Accedendo al link web si presenta una dashboard, non è prevista autenticazione, quindi attenzione a pubblicarla esternamente.

Nella dashboard sono presenti le funzionalità

  • Aggiunta di un nuovo target
  • Visualizzazione di tutti i target analizzati
  • Visualizzare i risultati
  • Esportazione report (questa voce è stata aggiunta nell’ultima versione)
  • Visualizzare report già esportati (questa voce è stata aggiunta nell’ultima versione)
  • Visualizzare i task
  • Il riavvio dei task bloccati
  • Accesso alle API

SCANSIONE DI UN TARGET

Nella nostra rete di laboratorio abbiamo inserito un’applicazione web vulnerabile, ora andiamo a verificare cosa e quali vulnerabilità riesce a trovare.

Quindi facciamo add target in alto, e compiliamo i targets

Dopo aver selezionato Analyze target accediamo alla schermata per aggiungere i target da analizzare, possiamo mettere una subnet o IP singoli.

Selezioniamo inoltre i moduli che vogliamo attivare

Una volta avviata la scansione, verranno attivati diversi container che cominceranno ad eseguire le analisi.

Una nota: i moduli non si “parlano” tra di loro, ognuno svolgera il propria analisi a seconda della funzione che è adibito.

Possiamo vedere per esempio il modulo sqlmap in azione.

Oppure qui sotto un esempio di brute forcing che cicla da dizionario circa 3000 parole alla ricerca di sottocartelle, file e percorsi interessanti.

Durante la scansione il target verrà identificato come “In Progress”, mentre “Done” a scansione ultimata.

Nell’ultima versione è stata aggiunta anche la percentuale oltre ai moduli restanti.

Tramite il menu “Task queue” è possibile vedere i moduli che stanno girando e quelli in errore. Nel caso di errori possiamo agire sulla funzionalità “Restart crashed task”

ANALIZZIAMO I RISULTATI

Una volta effettuata l’analisi possiamo vedere il risultato su questa webapp. Verranno visualizzati i risultati rilevanti e ce ne sono molti.

Usando il filtro “all interesting finding”, verranno mostrati solo i moduli che avranno riportato risultati.

Al contrario all tasks verranno mostrati anche gli altri che non avranno prodotto risultati.

Entrando su ogni task possiamo vedere in formato json l’intera risposta del modulo.

REPORTISTICA

Il software da GUI non prevede una reportistica ma è possibile crearla tramite uno script all’interno via ssh.

Occorre solo inserire il TAG della scansione precedentemente eseguita e generare.

Verrà generato e scaricato un file compresso.

All’interno di advance verranno riportati i risultati in formati JSON. 

Per ora non è previsto nessuna sorta di report PDF, sarà necessario importarlo in qualche tool ulteriore per generare qualsiasi report documentale.

API

È possibile utilizzare le api per estrarre i risultati in JSON e importarli facilmente in altri sistemi di visualizzazione e storicizzazione.

COMPARATIVA

Per analizzare le performance del tool e capirne meglio potenzialità e limiti di utilizzo, abbiamo confrontato i risultati e i rilevamenti con una scansione con nessus in versione essential (free) che ci permette di analizzare completamente fino a 16 host come una versione a pagamento.

Molte vulnerabilità siano state rilevate da entrambi gli scanner. Sono state rilevate directory aperte, percorsi interessanti nascosti, XSS, LFI, presenza di software interessanti come phpmyadmin.

Invece vulnerabilità rilevate da Nessus, come SQLi, RFI e alcune specifiche CVE, non sono state individuate da Artemis.

Abbiamo inoltre scansionato alcune macchine con software vulnerabili con specifiche CVE che potrebbero trovarsi comunemente in alcuni servizi esposti a internet, quali Eternal Blue (CVE-2017-0144), Shellshock (CVE-2014-6271) e Vsftpd 2.3.4 (CVE-2011-2523), ma i vari moduli non li hanno riconosciuti.

CONCLUSIONE

Questo tool è incentrato nell’individuare le vulnerabilità web ed è ricco di funzionalità e tool. Alcuni moduli vanno ad analizzare anche la configurazione corretta dei record SPF, DMARK o la verifica dei certificati.

Il punto di forza è ovviamente il fatto di essere open source e la sua modularità. I moduli di default sono molti e coprono diversi aspetti di sicurezza delle  applicazioni web.

Come abbiamo visto nella comparazione, è risultato abbastanza efficace nelle applicazioni web e sulle vulnerabilità comuni ma alcune specifiche CVE non sono state riscontrate.

Sorprendente invece la facile installazione (circa 20 minuti) anche grazie alla containerizzazione che è stata data ai moduli dell’app. L’ultimo aggiornamento lo ha reso anche più stabile.

Il fatto che sia  open source permette poi  a chiunque di testarlo e monitorare i propri assets.

Per concludere questi tools non sono commerciali e godono di un supporto limitato da chi li sviluppa e integra altri progetti open source all’interno, per cui potrebbero contener bug o altre funzionalità non previste che potrebbero compromettere le applicazioni web, per cui, come riportato nel progetto, vengono eseguiti a vostro rischio e pericolo.

E’ importante sempre eseguire queste scansioni un un ambiente controllato con tutte le accortezze del caso (snapshot, backup ecc…), per esempio eseguirle in un ambienti di test.

Manuel Roccon
Ho iniziato la mia carriera occuparmi nella ricerca e nell’implementazioni di soluzioni in campo ICT e nello sviluppo di applicazioni. Al fine di aggiungere aspetti di sicurezza in questi campi, da alcuni anni ho aggiunto competenze inerenti al ramo offensive security (OSCP), occupandomi anche di analisi di sicurezza e pentest in molte organizzazioni.