
Modular Python3 attack framework for automating exploitation of SIEM platforms (Splunk, Graylog, OSSIM, QRadar, McAfee) via credential theft, payload deployment, and post-exploitation modules. Traduzione: Framework d'attacco modulare in Python3 per automatizzare lo sfruttamento di piattaforme SIEM (Splunk, Graylog, OSSIM, QRadar, McAfee) tramite furto di credenziali, distribuzione di payload e moduli di post-exploitation.
MultiSIEM Modular Python3 Attack Framework
Di ElevenPaths https://www.elevenpaths.com/
Utilizzo: python3 ./siemsframework.py
I SIEM sono strumenti difensivi sempre più utilizzati nel campo della cybersecurity, specialmente da grandi aziende e da società che intendono monitorare sistemi e reti altamente critici. Tuttavia, dal punto di vista di un attaccante, le autorizzazioni concesse ai SIEM su sistemi e account delle reti aziendali sono elevate. Inoltre, l'accesso amministrativo ai SIEM può essere utilizzato per ottenere l'esecuzione di codice sul server in cui tale SIEM è installato, e talvolta anche sui client, considerando che un SIEM raccoglie eventi come server Active Directory, server AWS, database e dispositivi di rete (ad esempio firewall e router).
Durante la nostra indagine, abbiamo rilevato una grande quantità di vettori d'attacco che potrebbero essere utilizzati contro vari SIEM per comprometterli, ad esempio:
• Ottenere account utente e password memorizzate nel SIEM da sistemi critici (server LDAP/AD, database, dispositivi di rete, server AWS).
• Sviluppare e installare applicazioni malevole come reverse shell Windows/Linux, bind shell Windows/Linux o script malevoli con l'obiettivo di compromettere il server in cui è installato il SIEM.
• Sviluppare e installare applicazioni malevole come reverse shell Windows/Linux, bind shell Windows/Linux o script malevoli con l'obiettivo di compromettere le macchine da cui il SIEM raccoglie eventi.
• Creare e applicare azioni o notifiche malevole che consentono di eseguire comandi al verificarsi di un determinato evento, ad esempio con lo scopo di ottenere una reverse shell sul server in cui è installato il SIEM.
• Sfruttare password predefinite e debolezze del SIEM nella configurazione delle immagini OVA per ottenere credenziali di amministratore del server, del database o persino dell'interfaccia web del SIEM stesso.
• Eseguire attacchi di dizionario o attacchi brute-force contro l'interfaccia web o amministrativa, o contro il software client del SIEM, per ottenere credenziali di amministratore.
• Leggere file arbitrari dal server in cui è installato il SIEM.
• Ottenere informazioni sulla configurazione del SIEM e altri parametri rilevanti per eseguire ulteriori attacchi.
Sulla base dei risultati dell'indagine, è stato sviluppato lo strumento Open Source SIEMs Framework. Si tratta di uno strumento modulare sviluppato in Python3 dal team Innovation and Laboratory di ElevenPaths. Permette di automatizzare potenziali attacchi a vari SIEM presenti sul mercato (sia commerciali che open source).
SIEMs Framework supporta molteplici payload di attacco che possono essere selezionati in base al SIEM da attaccare e al suo sistema operativo. Sono disponibili payload in formato PowerShell, Python, Bash, Exe e altri. Una volta eseguito l'attacco selezionato, lo strumento mostra i risultati a schermo ed è possibile tornare indietro ed eseguire qualsiasi altro attacco sullo stesso SIEM o selezionare un altro SIEM da compromettere. Ha un'interfaccia semplice, facile da usare e intuitiva. Attualmente può essere utilizzato con i seguenti SIEM: Splunk, Graylog, OSSIM, QRadar, McAfee e SIEMonster.
SIEMs Framework può essere scaricato dal nostro Github scaricando il file .zip o clonando il repository, e presenta i seguenti requisiti che possono essere installati tramite pip3 install -r requirements.txt:
• splunk-sdk
• requests
• python-nmap
• colorama
• pandas
• paramiko
• pymongo
• qradar4py
• requests_mock
• urllib3
Una volta installati i requisiti, lo strumento può essere utilizzato come segue: python3 ./siemsframework.py
Quando lo strumento viene eseguito, viene visualizzato il menu principale, in cui è necessario selezionare se si desidera scansionare un IP specifico dove potrebbe essere presente un SIEM o una rete per rilevare i SIEM al suo interno. Per scansionare e rilevare il SIEM all'interno di un indirizzo IP specifico, utilizzare l'opzione 1; per scansionare la rete, utilizzare l'opzione 2.
Selezionando l'opzione 1 "Scan and Detect SIEM", lo strumento richiede l'indirizzo IP per poter scansionare le porte specifiche dei SIEM supportati e connettersi all'interfaccia web o di gestione per verificare che si tratti effettivamente di un SIEM.
Una volta rilevato il SIEM tramite i metodi sopra descritti, lo strumento mostra il SIEM rilevato in rosso e offre la possibilità di avviare il modulo d'attacco di quel SIEM.
Selezionando l'opzione 2 "Find SIEMs on the network", lo strumento richiede la rete da scansionare in notazione CIDR, ad esempio: 192.168.137.0/24. Una volta inserite le informazioni, SIEMs Framework esegue prima una discovery per rilevare i sistemi attivi; poi scansiona le porte predefinite dei SIEM supportati e infine si connette all'interfaccia web o di gestione di ciascuno di questi sistemi per verificare che si tratti effettivamente di un SIEM.
Una volta rilevati i SIEM tramite i metodi sopra descritti, lo strumento mostra i SIEM rilevati in rosso e richiede l'indirizzo IP del SIEM da attaccare.
Inserendo "y" e selezionando l'avvio dei moduli d'attacco Splunk, lo strumento mostra tutti i possibili attacchi da eseguire contro questo SIEM. Per i primi due attacchi non sono necessarie credenziali, ma per il quinto sono necessari privilegi di amministratore Splunk.
Questo modulo d'attacco contiene un dizionario specifico per Splunk chiamato dict.txt, composto dalle 100 password più utilizzate nel 2018 e da varie permutazioni del nome commerciale del SIEM e del suo utente amministratore, in maiuscolo e minuscolo, e sostituendo le vocali con numeri. Nel caso si desideri utilizzare un elenco diverso da quello menzionato, /splunk/dict.txt può essere sostituito con qualsiasi altra word list, a condizione che il nome del file venga mantenuto. La politica delle password di Splunk non si applica agli utenti con ruolo admin, quindi le restrizioni relative alla password o al blocco dell'account a causa di tentativi di accesso non riusciti non si applicano. Prima di avviare l'attacco di dizionario, lo strumento verifica se lo Splunk da analizzare ha la versione Free che non utilizza alcun tipo di autenticazione, o se mantiene ancora la password predefinita "changeme" delle versioni più datate di questo software:
Nel caso in cui il server Splunk da analizzare abbia l'interfaccia web attiva, questo modulo consente di ottenere informazioni sul server e sulla sessione dalla stessa interfaccia web senza bisogno di autenticazione. 8000 è la porta predefinita dell'interfaccia web di Splunk; per utilizzare questo modulo è necessario conoscere e inserire la porta su cui è pubblicata l'interfaccia web.
Questo modulo può essere utilizzato su Splunk Server o Universal Forwarder. Per utilizzarlo sono necessarie le credenziali di amministratore Splunk, che possono essere ottenute ad esempio tramite un attacco di dizionario (1° attacco). Il risultato del modulo sono le informazioni sull'installazione corrente di Splunk: versione, sistema operativo, configurazioni Splunk e altro.
Questo modulo viene utilizzato solo su server Splunk. Per utilizzarlo sono necessarie le credenziali di amministratore Splunk, che possono essere ottenute ad esempio tramite un attacco di dizionario (1° attacco). Il risultato del modulo sono tutte le credenziali memorizzate dalle app utilizzate su Splunk per connettersi ai dispositivi da cui vengono ottenuti gli eventi.
Questo modulo può essere utilizzato su server Splunk Linux. Per utilizzarlo sono necessarie le credenziali di amministratore Splunk, che possono essere ottenute ad esempio tramite un attacco di dizionario (1° attacco). Il modulo utilizza un indice per caricare il file interessato e il suo risultato è il contenuto del file /etc/shadow dal server in cui è installato Splunk.
Questo modulo sarà disponibile nella prossima versione di SIEMs Framework. Per compromettere gli Universal Forwarder, è possibile finora eseguire l'attacco 1 per ottenere le credenziali e poi l'attacco 7 per installare applicazioni malevole a seconda della piattaforma.
Questo modulo d'attacco consente di sviluppare e installare su Splunk un'applicazione malevola progettata per compromettere il sistema interessato. Innanzitutto, è necessario selezionare il tipo di payload in base al sistema operativo e al tipo di Splunk da attaccare (Splunk Server o Universal Forwarder). È possibile utilizzare Linux Python Reverse o Bind Shell per Splunk Server o UF; Windows Python Reverse o Bind Shell per Splunk Server (dove Python è installato per impostazione predefinita); e Executable Bind Shell o uno script per aggiungere un utente amministratore su Windows Universal Forwarder (dove Python non è installato per impostazione predefinita). Successivamente, è necessario inserire il nome utente, la password di amministratore Splunk e l'indirizzo IP dell'attaccante.
Inserendo "y" e selezionando l'avvio dei moduli d'attacco Graylog, lo strumento mostra tutti i possibili attacchi da eseguire contro questo SIEM. Per i primi tre attacchi non sono necessarie credenziali, ma per il quarto sono necessari privilegi di amministratore Graylog.
Questo modulo d'attacco contiene un dizionario specifico per Graylog chiamato dict.txt, composto dalle 100 password più utilizzate nel 2018 e da varie permutazioni del nome commerciale del SIEM e del suo utente amministratore, in maiuscolo e minuscolo, e sostituendo le vocali con numeri. Nel caso si desideri utilizzare un elenco diverso da quello menzionato, /graylog/dict.txt può essere sostituito con qualsiasi altra word list, a condizione che il nome del file venga mantenuto.
Questo modulo d'attacco verifica se il Graylog da analizzare ha credenziali predefinite sull'interfaccia web di Graylog (admin/admin), così come se ha credenziali predefinite per connettersi al sistema tramite console o SSH (ubuntu/ubuntu). Questa coppia di credenziali è configurata per impostazione predefinita sulle appliance di macchine virtuali Graylog, sia su OVA che su AMI.
Questo modulo d'attacco verifica se il Graylog da analizzare ha un database Mongo DB configurato senza autenticazione. In tal caso, si connette a MongoDB e ottiene informazioni di configurazione, credenziali LDAP (a seconda della versione corrente di Graylog possono essere in testo semplice o crittografate) e le chiavi di accesso e segrete configurate nel plugin AWS. Nel caso sia crittografato, la chiave utente LDAP è crittografata con AES CBC. La chiave sono i primi 16 bit del campo password_secret, situato nel file di configurazione server.conf, o graylog.conf in caso di installazioni standard; o il campo secret_token situato nel file graylog-secrets.json in caso di installazioni OVA, l'IV è il sale mostrato a schermo.
Questo modulo d'attacco ottiene informazioni sulla configurazione e le credenziali per LDAP e AWS in testo semplice dall'API REST di Graylog. Per utilizzare questo modulo sono necessarie le credenziali di amministratore Graylog.
Inserendo "y" e selezionando l'avvio dei moduli d'attacco OSSIM, lo strumento mostra tutti i possibili attacchi da eseguire contro questo SIEM. Per il primo attacco non sono necessarie credenziali, ma per i successivi sono necessarie credenziali di amministratore OSSIM.
Questo modulo d'attacco contiene un dizionario specifico per OSSIM chiamato dict.txt, composto dalle 100 password più utilizzate nel 2018 e da varie permutazioni del nome commerciale del SIEM e del suo utente amministratore, in maiuscolo e minuscolo, e sostituendo le vocali con numeri. Nel caso si desideri utilizzare un elenco diverso da quello menzionato, /ossim/dict.txt può essere sostituito con qualsiasi altra word list, a condizione che il nome del file venga mantenuto.
Questo modulo d'attacco consente di ottenere informazioni di configurazione dal server OSSIM. Per utilizzarlo sono necessarie le credenziali di amministratore OSSIM, che possono essere ottenute ad esempio tramite un attacco di dizionario (1° attacco). Il risultato del modulo sono le informazioni di configurazione rilevanti dell'installazione corrente: utenti definiti, parametri di login incluse le configurazioni LDAP e le politiche delle password.
Questo modulo d'attacco consente di ottenere una reverse shell dal server OSSIM al sistema dell'attaccante. Per utilizzarlo sono necessarie le credenziali di amministratore OSSIM, che possono essere ottenute ad esempio tramite un attacco di dizionario (1° attacco). Il modulo sviluppa un'azione malevola che si collegherà tramite netcat al sistema dell'attaccante. Successivamente, attiva una nuova policy che utilizza tale azione per avvisare in caso di evento di sicurezza, e questo evento viene attivato tramite un tentativo di accesso SSH non riuscito al server OSSIM. Di conseguenza, si ottiene una reverse shell dal server OSSIM al sistema dell'attaccante sulla porta 12345 con privilegi di root.
Inserendo "y" e selezionando l'avvio dei moduli d'attacco QRadar, lo strumento mostra tutti i possibili attacchi da eseguire contro questo SIEM. Per i primi due attacchi non sono necessarie credenziali, ma per i successivi sono necessarie credenziali di amministratore QRadar o una chiave API.
Questo modulo d'attacco contiene un dizionario specifico per QRadar chiamato dict.txt, composto dalle 100 password più utilizzate nel 2018 e da varie permutazioni del nome commerciale del SIEM e del suo utente amministratore, in maiuscolo e minuscolo, e sostituendo le vocali con numeri. Nel caso si desideri utilizzare un elenco diverso da quello menzionato, /qradar/dict.txt può essere sostituito con qualsiasi altra word list, a condizione che il nome del file venga mantenuto. Questo attacco è molto lento perché QRadar ha una protezione che consente solo 5 tentativi ogni 30 minuti.
Questo modulo d'attacco contiene un dizionario specifico per QRadar chiamato apikeys.txt, composto da 1000 diverse opzioni di chiavi API che mantengono la struttura richiesta in questo SIEM. Nel caso si desideri utilizzare un elenco diverso da quello menzionato, /qradar/dict.txt può essere sostituito con qualsiasi altra word list, a condizione che il nome del file venga mantenuto. Il programma offre la possibilità di creare il file con chiavi API in modo casuale.
Questo modulo d'attacco ci consente di ottenere la configurazione del server tramite l'uso della chiave API. Per utilizzarlo è necessaria una chiave API di amministratore QRadar, che può essere ottenuta ad esempio tramite un attacco di dizionario (2° attacco). Il risultato del modulo sono le informazioni di configurazione rilevanti dell'installazione corrente: utenti definiti, gerarchia di rete e host di distribuzione.
Questo modulo d'attacco ci consente di ottenere l'elenco degli utenti salvati nel database Ariel. Per utilizzarlo è necessaria una chiave API di amministratore QRadar, che può essere ottenuta ad esempio tramite un attacco di dizionario (2° attacco). Il risultato del modulo sono le informazioni di configurazione rilevanti degli utenti che hanno avuto contatto con il database Ariel.
Inserendo "y" e selezionando l'avvio dei moduli d'attacco McAfee, lo strumento mostra tutti i possibili attacchi da eseguire contro questo SIEM. Per il primo attacco non sono necessarie credenziali, ma per i successivi sono necessarie credenziali di amministratore McAfee.
Questo modulo d'attacco contiene un dizionario specifico per McAfee chiamato dict.txt, composto da 7000 password create casualmente con varie permutazioni del nome commerciale del SIEM e del suo utente amministratore, in maiuscolo e minuscolo, e sostituendo le vocali con numeri. Nel caso si desideri utilizzare un elenco diverso da quello menzionato, /mcafee/dict.txt può essere sostituito con qualsiasi altra word list, a condizione che il nome del file venga mantenuto. Questo attacco è molto lento perché McAfee ha una protezione che consente solo 3 tentativi ogni 10 minuti.
Questo modulo d'attacco contiene un dizionario specifico per McAfee chiamato dict.txt, composto da 7000 password create casualmente con varie permutazioni del nome commerciale del SIEM e del suo utente amministratore, in maiuscolo e minuscolo, e sostituendo le vocali con numeri. Nel caso si desideri utilizzare un elenco diverso da quello menzionato, /mcafee/dict.txt può essere sostituito con qualsiasi altra word list, a condizione che il nome del file venga mantenuto.
Questo modulo d'attacco ci consente di ottenere la configurazione del server tramite l'uso delle credenziali di amministratore. Per utilizzarlo sono necessarie credenziali SSH di amministratore, che possono essere ottenute ad esempio tramite un attacco di dizionario (2° attacco). Il risultato del modulo sono le informazioni di configurazione rilevanti dell'installazione corrente: nameserver sulla rete, servizi attivi, configurazione di rete e configurazione del firewall.
Questo modulo d'attacco ci consente di ottenere la configurazione del server tramite l'uso delle credenziali di amministratore. Per utilizzarlo sono necessarie credenziali SSH di amministratore, che possono essere ottenute ad esempio tramite un attacco di dizionario (2° attacco). Il risultato del modulo sono le informazioni di configurazione rilevanti dell'installazione corrente: numero di release del SIEM, dati dell'HDD, dati della RAM, dati del processore, tempo di attività, stato della prossima data di controllo, stato della data di controllo delle regole e prossima data di backup.
Questo modulo d'attacco ci consente di ottenere la configurazione del server tramite l'uso delle credenziali di amministratore. Per utilizzarlo sono necessarie credenziali SSH di amministratore, che possono essere ottenute ad esempio tramite un attacco di dizionario (2° attacco). Il risultato del modulo sono le informazioni rilevanti sugli utenti di sistema.
Inserendo "y" e selezionando l'avvio dei moduli d'attacco SIEMonster, lo strumento mostra tutti i possibili attacchi da eseguire contro questo SIEM. Per il primo attacco non sono necessarie credenziali, ma per i successivi sono necessarie credenziali di amministratore SIEMonster.
Questo modulo d'attacco contiene un dizionario specifico per SIEMonster chiamato dict.txt, composto da 7000 password create casualmente con varie permutazioni del nome commerciale del SIEM e del suo utente amministratore, in maiuscolo e minuscolo, e sostituendo le vocali con numeri. Nel caso si desideri utilizzare un elenco diverso da quello menzionato, /siemonster/dict.txt può essere sostituito con qualsiasi altra word list, a condizione che il nome del file venga mantenuto.
Questo modulo d'attacco ci consente di ottenere la configurazione del server tramite l'uso delle credenziali di amministratore. Per utilizzarlo sono necessarie credenziali SSH di amministratore, che possono essere ottenute ad esempio tramite un attacco di dizionario (1° attacco). Il risultato del modulo sono le informazioni di configurazione rilevanti dell'installazione corrente: nameserver sulla rete, container Docker attivi, elenco dei servizi attivi, configurazione di rete e configurazione del firewall.
Questo modulo d'attacco ci consente di ottenere la configurazione del server tramite l'uso delle credenziali di amministratore. Per utilizzarlo sono necessarie credenziali SSH di amministratore, che possono essere ottenute ad esempio tramite un attacco di dizionario (1° attacco). Il risultato del modulo sono le informazioni rilevanti sugli utenti di sistema.### Moduli di Attacco ElasticSIEM Inserendo “y” e selezionando l'avvio dei moduli di attacco ElasticSIEM, lo strumento mostra tutti i possibili attacchi da eseguire contro questo SIEM. Per il primo attacco non sono necessarie credenziali, ma per i successivi sono necessarie le credenziali di amministratore di ElasticSIEM.
Questo modulo di attacco contiene un dizionario specifico per ElasticSIEM chiamato dict.txt, composto dalle 7000 password più utilizzate nel 2018 e da varie permutazioni del nome commerciale del SIEM e del suo utente amministratore, in lettere maiuscole e minuscole, e sostituendo le vocali con i numeri. Nel caso si desideri utilizzare un elenco diverso da quello sopra menzionato, /elasticsiem/dict.txt può essere sostituito con qualsiasi altro elenco di parole, a condizione che il nome del file sia mantenuto.
Questo modulo di attacco ci permette di ottenere la configurazione del server tramite l'uso di credenziali di amministratore. Per utilizzarlo, sono necessarie le credenziali di amministratore SSH, che possono essere ottenute ad esempio tramite un attacco dizionario (1° attacco). Il risultato del modulo sono le informazioni di configurazione rilevanti dell'installazione corrente: nameserver sulla rete, contenitori Docker attivi, elenco dei servizi attivi e configurazione di rete.
Segnala eventuali errori aprendo un issue su GitHub. La tua collaborazione è molto apprezzata!