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.
Acquista il corso Dark Web & Cyber Threat Intelligence (e-learning version)
Il Dark Web e la Cyber Threat Intelligence rappresentano aree critiche per comprendere le minacce informatiche moderne. Tra ransomware, data breach e attività illecite, le organizzazioni devono affrontare sfide sempre più complesse per proteggere i propri dati e le infrastrutture. Il nostro corso “Dark Web & Cyber Threat Intelligence” ti guiderà attraverso i meccanismi e le strategie utilizzate dai criminali informatici, fornendoti competenze pratiche per monitorare, analizzare e anticipare le minacce.
Accedi alla pagina del corso condotto dall'Prof. Pietro Melillo sulla nostra Academy e segui l'anteprima gratuita.
Per un periodo limitato, potrai utilizzare il COUPON CTI-16253 che ti darà diritto ad uno sconto del 20% sul prezzo di copertina del corso
Per ulteriori informazioni, scrivici ad [email protected] oppure scrivici su Whatsapp al 379 163 8765
Supporta RHC attraverso:
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 è 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:
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.
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.
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
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)
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
Accedendo al link web si presenta una dashboard, non è prevista autenticazione, quindi attenzione a pubblicarla esternamente.
Nella dashboard sono presenti le funzionalità
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”
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.
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.
È possibile utilizzare le api per estrarre i risultati in JSON e importarli facilmente in altri sistemi di visualizzazione e storicizzazione.
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.
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.