Strumento automatico di analisi delle e-mail di phishing basato su TheHive, Cortex e MISP. Si tratta di un’applicazione web scritta in Python 3 e basata su Flask che automatizza l’intero processo di analisi partendo dall’estrazione degli osservabili dall’header e dal corpo di una mail fino all’elaborazione di un verdetto che nella maggior parte dei casi è definitivo. Inoltre, consente all’analista di intervenire nel processo di analisi e ottenere, se necessario, ulteriori dettagli sull’e-mail in analisi.

Per interagire con TheHive e Cortex, utilizza TheHive4py e Cortex4py , che sono i client API Python che consentono di utilizzare le API REST messe a disposizione rispettivamente da TheHive e Cortex.

Il diagramma seguente mostra come funziona ThePhish ad alto livello:

  1. Un utente malintenzionato avvia una campagna di phishing e invia un’e-mail di phishing a un utente.
  2. Un utente che riceve tale e-mail può inviare tale e-mail come allegato alla casella di posta utilizzata da ThePhish.
  3. L’analista interagisce con ThePhish e seleziona l’e-mail da analizzare.
  4. ThePhish estrae tutti gli elementi osservabili dall’e-mail e crea un caso su TheHive. Gli osservabili vengono analizzati grazie a Cortex e ai suoi analizzatori.
  5. ThePhish calcola un verdetto in base ai verdetti degli analizzatori.
  6. Se il verdetto è definitivo, il caso viene chiuso e l’utente viene informato. Inoltre, se si tratta di un’e-mail dannosa, il caso viene esportato su MISP.
  7. Se il verdetto non è definitivo, è necessario l’intervento dell’analista. Deve rivedere il caso su TheHive insieme ai risultati forniti dai vari analizzatori per formulare un verdetto, quindi può inviare la notifica all’utente, eventualmente esportare il caso su MISP e chiudere il caso.

L’esempio di utilizzo di Phish

Questo esempio mira a dimostrare come un utente può inviare un’e-mail a ThePhish affinché venga analizzata e come un analista può effettivamente analizzare quell’e-mail utilizzando ThePhish.

Un utente invia un’e-mail a ThePhish

Un utente può inviare un’e-mail all’indirizzo utilizzato da ThePhish per recuperare le e-mail da analizzare. Questa deve essere inoltrata come allegato in formato EML in modo da evitare la contaminazione dell’intestazione. In questo caso, il client di posta utilizzato è Mozilla Thunderbird e l’indirizzo di posta elettronica utilizzato è un indirizzo Gmail.

L’analista analizza l’e-mail

L’analista accede alla pagina web di ThePhish e fa clic sul pulsante “Elenco email” per ottenere l’elenco delle email da analizzare.

Quando l’analista fa clic sul pulsante “Analizza” relativo all’e-mail selezionata, l’analisi viene avviata e il suo avanzamento viene mostrato nell’interfaccia web.

Nel frattempo, ThePhish estrae gli osservabili (URL, domini, indirizzi IP, indirizzi e-mail, allegati e hash di tali allegati) dall’e-mail e quindi interagisce con TheHive per creare il caso.

All’interno del caso vengono create tre attività.

Quindi, ThePhish inizia ad aggiungere gli osservabili estratti al caso.

A questo punto l’utente viene avvisato via email che l’analisi è iniziata grazie al risponditore Mailer .

La descrizione della prima attività consente al risponditore Mailer di inviare la notifica via e-mail.

Dopo che il primo task è stato chiuso, viene avviato il secondo task e gli analizzatori vengono avviati sugli osservabili. L’avanzamento dell’analisi viene mostrato sull’interfaccia web all’avvio degli analizzatori.

I progressi dell’analisi possono essere visualizzati anche su TheHive, grazie al suo live streaming.

Una volta terminata l’esecuzione di tutti gli analizzatori, viene chiusa la seconda attività e avviata la terza, quindi ThePhish calcola il verdetto. Poiché il verdetto è “dannoso”, tutti gli elementi osservabili che risultano essere dannosi sono contrassegnati come IoC. In questo caso solo un osservabile è contrassegnato come IoC.

Il caso viene quindi esportato al MISP come evento, con un unico attributo rappresentato dall’osservabile sopra menzionato.

Quindi, ThePhish invia il verdetto via e-mail all’utente grazie al risponditore Mailer .

Infine, sia l’attività che il caso sono chiusi. La descrizione della terza attività consente al risponditore Mailer di inviare il verdetto via e-mail. Inoltre, il caso è stato chiuso dopo cinque minuti e risolto come “True Positive” con “No Impact”, il che significa che l’attacco è stato rilevato prima che potesse causare danni.

Una volta chiuso il caso, il verdetto è disponibile per l’analista sull’interfaccia web insieme all’intero log dello stato di avanzamento dell’analisi.

A questo punto l’analista può tornare indietro e analizzare un’altra email. Il caso sopra illustrato era correlato a un’e-mail di phishing, ma è possibile osservare un flusso di lavoro simile quando l’e-mail analizzata è classificata come “sicura”. Il caso, infatti, viene chiuso e il verdetto viene inviato via email all’utente.

Quindi, il verdetto viene mostrato anche all’analista sull’interfaccia web.

Quando invece un’e-mail viene classificata come “sospetta”, il verdetto viene mostrato solo all’analista sull’interfaccia web.

A questo punto l’analista deve utilizzare i pulsanti sul lato sinistro della pagina per utilizzare TheHive, Cortex e MISP per ulteriori analisi. Questo perché l’analisi non è stata ancora completata e quindi all’utente viene solo notificato che l’analisi dell’e-mail che ha inoltrato a ThePhish è stata avviata. In effetti, l’ultimo compito e il caso non sono ancora stati chiusi poiché devono essere chiusi dall’analista stesso una volta elaborato un verdetto finale.

L’analista può visualizzare i report di tutti gli analizzatori su TheHive e Cortex e, nel caso in cui ciò non fosse sufficiente, potrebbe anche scaricare il file EML dell’e-mail e analizzarlo manualmente.

Quando l’analista termina l’analisi, può popolare il corpo dell’e-mail da inviare all’utente nella descrizione dell’ultima attività, avviare il risponditore Mailer , esportare il caso su MISP se il verdetto è “dannoso” cliccando sul pulsante ” Esporta” e quindi chiudere il caso.

Implementazione

ThePhish è un’applicazione web scritta in Python 3. Il web server è implementato tramite Flask, mentre la parte front-end dell’applicazione, ovvero la pagina dinamica scritta in HTML, CSS e JavaScript, è implementata tramite Bootstrap. Oltre al modulo web server, la logica di back-end dell’applicazione è costituita da tre moduli Python che incapsulano la logica dell’applicazione stessa e una classe Python utilizzata per supportare la funzione di logging tramite il protocollo WebSocket. Inoltre, ci sono diversi file di configurazione utilizzati dai suddetti moduli che servono a vari scopi.

Quando l’analista accede all’URL di base dell’applicazione, viene caricata la pagina Web di ThePhish e viene stabilita una connessione bidirezionale con il server. Questo viene fatto utilizzando la libreria JavaScript Socket.IO nella pagina Web che consente la comunicazione in tempo reale, bidirezionale e basata su eventi tra il browser e il server. Questa connessione viene stabilita con una connessione WebSocket quando possibile e utilizzerà il polling HTTP lungo come fallback. Affinché ciò funzioni, l’applicazione server utilizza la libreria Python Flask-SocketIO, che fornisce un’integrazione Socket.IO per le applicazioni Flask. Questa connessione viene poi utilizzata da ThePhish per visualizzare lo stato di avanzamento dell’analisi sull’interfaccia web.

Ogni volta che l’analista esegue un’azione sull’interfaccia web, viene inviata al server una richiesta AJAX, che è una richiesta HTTP asincrona che consente di scambiare dati con il server in background e aggiornare la pagina senza ricaricarla. Ciò consente all’analista sia di visualizzare l’elenco delle email da analizzare sia di avviare l’analisi.

ThePhish interagisce con TheHive e Cortex grazie a TheHive4py e Cortex4py. Inoltre, interagisce con un server IMAP per recuperare le email da analizzare.

Installazione

Installalo usando Docker e Docker Compose

Dal momento che l’installazione e la configurazione di theHIVE, Cortex e servizi MISP da zero per un ambiente di produzione non può essere estremamente semplice, theHIVE Project fornisce immagini Docker e modelli Docker Compose qui per facilitare la procedura di installazione. Per semplicità, i modelli forniti sono semplificati, senza fornire le opzioni di configurazione complete di ciascuna immagine docker.

Se vuoi solo provare ThePhish o vuoi averlo installato e funzionante il più velocemente possibile, puoi utilizzare il modello Docker fornito nella cartella docker, che è una versione modificata di uno dei modelli Docker forniti da TheHive Project che consente anche creando un contenitore ThePhish. Per installare ThePhish utilizzando Docker e Docker Compose, fare riferimento a questa guida. Consiglio vivamente di installarlo in questo modo almeno la prima volta che lo si utilizza in modo da poter apprendere le basi e come configurarlo con una configurazione minima che dovrebbe funzionare al primo tentativo. Infatti, la guida precedentemente collegata fornisce anche una procedura passo passo per configurare le istanze TheHive, Cortex e MISP.

Installalo da zero

Questa guida si riferisce alla sola installazione di ThePhish, che richiede:

  • Un’istanza funzionante di TheHive
  • Un’istanza attiva di Cortex
  • Un’istanza attiva di MISP
  • Un indirizzo e-mail che gli utenti possono utilizzare per inviare e-mail a ThePhish
  • Un sistema operativo basato su Linux con Python 3.8+ installato

Per installare, configurare e integrare le istanze TheHive, Cortex e MISP, fare riferimento alla loro documentazione ufficiale:

È consigliabile che l’indirizzo email da cui ThePhish preleva le email da analizzare sia un indirizzo Gmail poiché è quello con cui ThePhish è stato testato maggiormente. È preferibile che l’account sia di nuova creazione, con il solo scopo di essere utilizzato da ThePhish. La procedura per attivare la password dell’app richiesta da ThePhish per connettersi alla casella di posta e recuperare le email è spiegata qui.

Questa procedura di installazione è stata testata su una VM che esegue Ubuntu 20.04.3 LTS con Python 3.8 installato e le versioni di TheHive, Cortex e MISP mostrate in questo file docker-compose.yml

Una volta che TheHive, Cortex e MISP sono configurati e in ascolto su un determinato URL e l’indirizzo e-mail è pronto per l’uso, è possibile installare e configurare ThePhish.

  1. Clona il repository

    $ git clone https://github.com/emalderson/ThePhish.git
    
  2. Creare un ambiente virtuale Python e attivarlo (è buona norma ma non è obbligatorio)

    $ cd ThePhish/app
    $ sudo apt install python3-venv
    $ python3 -m venv venv
    $ source venv/bin/activate
    
  3. Installa i requisiti

    $ pip install -r requirements.txt
    
  4. Aggiungi la run_responder()funzione al file api.pydi TheHive4py

    Per inviare e-mail all’utente, ThePhish utilizza il risponditore Mailer . Poiché ThePhish utilizza TheHive4py per interagire con TheHive, è necessaria una funzione che consenta di eseguire un risponditore tramite il suo ID. Sfortunatamente, questa funzione non fa ancora parte di TheHive4py, ma è stata fatta una richiesta pull per aggiungerla a TheHive4py ( #219 ). In attesa che venga aggiunto, deve essere aggiunto manualmente utilizzando il seguente comando affinché ThePhish funzioni correttamente (sostituisci la versione di Python nel comando se utilizzi una versione diversa di Python):

    $ (gatto <<  _EOF_
    
    
        def run_responder(self, responder_id, object_type, object_id): 
            req = self.url + "/api/connector/cortex/action" 
            try: 
                data = json.dumps({ "responderId": responder_id, "objectType": object_type, " objectId": object_id}) 
                return request.post(req, headers={"Content-Type": "application/json"}, data=data, proxy=self.proxies, auth=self.auth, verificare=self.cert ) 
            tranne 
                request.exceptions.RequestException 
    as e: raise TheHiveException("Errore di esecuzione del risponditore: {}".format(e)) _EOF_ 
    ) | tee -a venv/lib/python3.8/site-packages/thehive4py/api.py > /dev/null
  5. Configurazione

    Il file configuration.jsonè il file di configurazione globale che permette di impostare i parametri per la connessione alla casella di posta e alle istanze di TheHive, Cortex e MISP. Consente inoltre di impostare parametri relativi ai casi che verranno creati su TheHive.

    {
    	 "imap" : {
    		 "host" : " imap.gmail.com " ,
    		 "port" : " 993 " ,
    		 "user" : " " ,
    		 "password" : " " ,
    		 "folder" : " inbox "
    	},
    	"thehive" : {
    		 "url" : " http://thehive:9000 " ,
    		 "apikey" : " "
    	},
    	"cortex" : {
    		 "url" : " http://cortex:9001 " ,
    		 "apikey" : " " ,
    		 "id" : " local "
    	},
    	"misp" : {
    		 "id" : " MISP THP "
    	},
    	"case" : {
    		 "tlp" : " 2 " ,
    		 "pap" : " 2 " ,
    		 "tags" : [ " email " , " ThePhish " ]
    	}
    }
    • Nella parte imap , se stai utilizzando un indirizzo Gmail, devi solo impostare il nome utente utilizzato per connetterti al server IMAP (che è il tuo indirizzo email) e la password dell’app.
    • Nella parte thehive devi impostare l’URL a cui l’istanza di TheHive è raggiungibile e impostare la chiave API dell’utente creato su TheHive che ThePhish utilizzerà per interagire con TheHive.
    • Nella parte corteccia devi impostare l’URL a cui l’istanza Cortex è raggiungibile e impostare la chiave API dell’utente creato su Cortex che sia ThePhish che TheHive utilizzeranno per interagire con Cortex. Inoltre, devi impostare l’ID assegnato all’istanza Cortex.
    • Nella parte misp devi solo impostare l’ID dato all’istanza MISP.
    • Nella parte del caso è possibile impostare i livelli TLP e PAP predefiniti per i casi creati da ThePhish e anche i tag che verranno applicati ad essi al momento della loro creazione.

    Puoi imparare come creare un’organizzazione e un utente con un ruolo org-admin in quell’organizzazione su TheHive e ottenere la sua chiave API qui (documentazione ThePhish, consigliata) o qui (documentazione TheHive) . Allo stesso modo, puoi imparare come creare un’organizzazione e un utente con read, analyzeruoli in quell’organizzazione su Cortex e ottenere la sua chiave API qui (documentazione ThePhish, consigliata) o qui (documentazione Cortex) .

    Gli URL e gli ID impostati in questo file devono essere gli stessi impostati nel file di configurazione di TheHive denominato application.conf, che contiene una parte relativa a Cortex e una parte relativa a MISP. I parametri che dovresti cercare sono nameurlin entrambe le parti, che corrispondono agli ID e agli URL delle istanze Cortex e MISP. Gli ID si trovano anche nella finestra Informazioni sull’interfaccia web di TheHive. Un esempio in cui l’ID Cortex è la stringa locale l’ID MISP è la stringa MISP THPè mostrato nella figura seguente:

    Il file application.confviene utilizzato per integrare TheHive con Cortex e MISP. Puoi imparare come impostare l’integrazione con Cortex qui (documentazione ThePhish, consigliata) o qui (documentazione TheHive) , mentre per l’integrazione con MISP puoi andare qui (documentazione ThePhish, consigliata) o qui (documentazione TheHive) .

    Anche gli URL a cui sono raggiungibili le istanze di TheHive, Cortex e MISP dovrebbero essere sostituiti nel file in templates/index.htmlmodo che i pulsanti sull’interfaccia web possano raggiungerli. Per farlo, sostituisci gli ultimi tre hrefdi questa porzione di codice:

    < ul  class =" navbar-nav text-light " id =" accordionSidebar " > 
        < li  class =" nav-item " > < a  class =" nav-link active " href =" / " style =" max-width: 114px; " target =" _blank " rel =" noopener noreferrer " > < img  class =" img-fluid "data-bss-hover-animate=" bounce " src =" ../static/assets/img/logo_rounded.png " style =" margin-top: 0px;margin-left: 0px; " > </ a > </ li > 
        < li  class =" nav-item " > < a  class =" nav-link " href =" http://thehive:9000 " style =" max-width: 114 px; " target =" _blank " rel ="noopener noreferrer "larghezza massima: 114 px; " 
          target =" _blank " rel =" noopener noreferrer " > < img  class =" img-fluid " data-bss-hover-animate =" bounce " src =" ../static/assets/img/cortex.png " style = " transform: translate(0px); " > </ a > </ li > 
        < li  class =" nav-item " > < a  class ="collegamento di navigazione " href ="https://misp " style =" larghezza massima: 114 px; " target =" _blank " rel =" noopener noreferrer " > < img  class =" img-fluid " data-bss-hover-animate =" bounce " src =" ../static/assets/img/misp.png " style =" trasforma: translate(0px); " > </ a > </ li > 
    </ ul >
  6. Avvia l’app

    $ python3 thephish_app.py
    

    Il server che verrà utilizzato per eseguire l’applicazione è il server WSGI fornito da eventlet, poiché è elencato nei requisiti. È necessario affinché il protocollo WebSocket funzioni ed eviti di ricorrere al polling lungo HTTP. Senza eventlet, verrà utilizzato il server Flask WSGI predefinito (Werkzeug). Se desideri utilizzare un altro server WSGI (es. Gunicorn) o utilizzare un proxy inverso (es. NGINX), la documentazione di Flask-SocketIO spiega come farlo.

    Ora l’applicazione dovrebbe essere raggiungibile all’indirizzo http://localhost:8080.

    ️Attenzione : se stai utilizzando Mozilla Firefox per utilizzare ThePhish e per qualche motivo viene visualizzato un messaggio di errore durante l’analisi, la soluzione può essere trovata qui .

Configura gli analizzatori

ThePhish può avviare un analizzatore o un risponditore solo se abilitato e correttamente configurato su Cortex. Questa parte della documentazione spiega come abilitarli, mentre questa parte elenca gli analizzatori e i risponditori disponibili con i relativi parametri di configurazione. Va notato che mentre molti analizzatori sono gratuiti, alcuni richiedono un accesso speciale e altri richiedono un abbonamento al servizio valido o una licenza del prodotto.

Ulteriori approfondimenti su: https://github.com/emalderson/ThePhish

Twitter
Visit Us
LinkedIn
Share
YOUTUBE