Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
ThePhish — ThePhish: uno strumento automatizzato per l'analisi delle email di phishing | Kitploit
Strumenti/GitHubGitHub/emalderson/thephish
Gestione degli Indicatori di Compromissione (IOC)Strumenti di PhishingPhishingAnalisi MalwareDigital ForensicsThreat IntelligenceRisposta agli IncidentiSicurezza Email
GitHubemalderson/thephish

ThePhish

ThePhish: uno strumento automatizzato per l'analisi delle email di phishing

Vedi Repository
1.4k19892 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

ThePhish

ThePhish è uno strumento automatizzato di analisi delle email 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 a partire dall'estrazione degli osservabili dall'intestazione e dal corpo di un'email fino all'elaborazione di un verdetto che nella maggior parte dei casi è definitivo. Inoltre, permette all'analista di intervenire nel processo di analisi e ottenere ulteriori dettagli sull'email in analisi, se necessario. Per interagire con TheHive e Cortex, utilizza TheHive4py e Cortex4py, che sono i client Python API che consentono di utilizzare le API REST messe a disposizione rispettivamente da TheHive e Cortex.

OS made-with-python Docker Maintenance GitHub Documentation

Indice dei contenuti

  • Panoramica
  • Esempio di utilizzo di ThePhish
    • Un utente invia un'email a ThePhish
    • L'analista analizza l'email
  • Implementazione
  • Installazione
    • Installazione tramite Docker e Docker Compose
    • Installazione da zero
  • Configurare gli analizzatori
    • Configurare i livelli degli analizzatori
    • Analizzatori testati
    • Abilitare l'analizzatore MISP
    • Abilitare l'analizzatore Yara
  • Abilitare il responder Mailer
  • Utilizzare la whitelist
  • Contributo a TheHive4py
  • Contributo a Cortex-Analyzers
  • Licenza
  • Pubblicazioni accademiche
  • Chi parla di ThePhish
  • Repository GitHub che menzionano ThePhish
  • Crediti

Panoramica

Il seguente diagramma mostra come funziona ThePhish ad alto livello:

  1. Un attaccante avvia una campagna di phishing e invia un'email di phishing a un utente.
  2. Un utente che riceve tale email può inviarla come allegato alla casella di posta utilizzata da ThePhish.
  3. L'analista interagisce con ThePhish e seleziona l'email da analizzare.
  4. ThePhish estrae tutti gli osservabili dall'email e crea un caso su TheHive. Gli osservabili vengono analizzati grazie a Cortex e ai suoi analizzatori.
  5. ThePhish calcola un verdetto basandosi sui verdetti degli analizzatori.
  6. Se il verdetto è definitivo, il caso viene chiuso e l'utente viene notificato. Inoltre, se si tratta di un'email malevola, il caso viene esportato su MISP.
  7. Se il verdetto non è definitivo, è necessario l'intervento dell'analista. Deve esaminare 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.

Esempio di utilizzo di ThePhish

Questo esempio ha lo scopo di dimostrare come un utente può inviare un'email a ThePhish per essere analizzata e come un analista può effettivamente analizzare quell'email utilizzando ThePhish.

Un utente invia un'email a ThePhish

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

L'analista analizza l'email

L'analista naviga alla pagina web di ThePhish e fa clic sul pulsante "List emails" per ottenere l'elenco delle email da analizzare.

Quando l'analista fa clic sul pulsante "Analyze" relativo all'email selezionata, l'analisi viene avviata e il suo progresso viene mostrato sull'interfaccia web.

Nel frattempo, ThePhish estrae gli osservabili (URL, domini, indirizzi IP, indirizzi email, allegati e hash di tali allegati) dall'email e poi 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 notificato via email che l'analisi è iniziata grazie al responder Mailer.

La descrizione della prima attività consente al responder Mailer di inviare la notifica via email.

Dopo che la prima attività è stata chiusa, viene avviata la seconda attività e gli analizzatori vengono avviati sugli osservabili. Lo stato di avanzamento dell'analisi viene mostrato sull'interfaccia web mentre gli analizzatori vengono avviati.

Lo stato di avanzamento dell'analisi può essere visualizzato anche su TheHive, grazie al suo live stream.

Una volta che tutti gli analizzatori hanno terminato la loro esecuzione, la seconda attività viene chiusa e viene avviata la terza, quindi ThePhish calcola il verdetto. Poiché il verdetto è "malevolo", tutti gli osservabili che risultano malevoli vengono contrassegnati come IoC. In questo caso solo un osservabile viene contrassegnato come IoC.

Il caso viene quindi esportato su MISP come evento, con un singolo attributo rappresentato dall'osservabile sopra menzionato.

Quindi, ThePhish invia il verdetto via email all'utente grazie al responder Mailer.

Infine, sia l'attività che il caso vengono chiusi. La descrizione della terza attività consente al responder Mailer di inviare il verdetto via email. 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 del progresso dell'analisi.

A questo punto l'analista può tornare indietro e analizzare un'altra email. Il caso sopra descritto riguardava un'email di phishing, ma un flusso di lavoro simile può essere osservato quando l'email analizzata viene classificata come "sicura". Infatti, il caso viene chiuso e il verdetto viene inviato via email all'utente.

Quindi, il verdetto viene anche visualizzato all'analista sull'interfaccia web.

D'altra parte, quando un'email viene classificata come "sospetta", il verdetto viene visualizzato 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 l'utente viene solo informato che l'analisi dell'email che ha inoltrato a ThePhish è iniziata. Infatti, l'ultima attività e il caso non sono ancora stati chiusi poiché devono essere chiusi dall'analista stesso una volta elaborato un verdetto definitivo.

L'analista può visualizzare i report di tutti gli analizzatori su TheHive e Cortex e, nel caso questo non si riveli sufficiente, potrebbe anche scaricare il file EML dell'email e analizzarlo manualmente.

Quando l'analista termina l'analisi, può popolare il corpo dell'email da inviare all'utente nella descrizione dell'ultima attività, avviare il responder Mailer, esportare il caso su MISP se il verdetto è "malevolo" facendo clic sul pulsante "Export" e quindi chiudere il caso.

Implementazione

ThePhish è un'applicazione web scritta in Python 3. Il server web è implementato utilizzando Flask, mentre la parte front-end dell'applicazione, ovvero la pagina dinamica scritta in HTML, CSS e JavaScript, è implementata utilizzando Bootstrap. Oltre al modulo del server web, la logica back-end dell'applicazione è costituita da tre moduli Python che incapsulano la logica dell'applicazione stessa e una classe Python utilizzata per supportare la funzionalità di logging tramite il protocollo WebSocket. Se si desidera vedere una rappresentazione grafica della logica dell'applicazione, fare clic qui. Inoltre, ci sono diversi file di configurazione utilizzati dai suddetti moduli che servono a vari scopi.

Quando l'analista naviga all'URL 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 una comunicazione in tempo reale, bidirezionale e basata su eventi tra il browser e il server. Questa connessione viene stabilita tramite una connessione WebSocket quando possibile e utilizzerà l'HTTP long polling come fallback. Perché 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 una richiesta AJAX al server, che è una richiesta HTTP asincrona che consente di scambiare dati con il server in background e aggiornare la pagina senza doverla ricaricare. 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

Installazione tramite Docker e Docker Compose

Poiché l'installazione e la configurazione dei servizi TheHive, Cortex e MISP da zero per un ambiente di produzione potrebbero non essere estremamente immediate, TheHive Project fornisce immagini Docker e template Docker Compose qui per facilitare la procedura di installazione. Per semplicità, i template forniti sono resi semplici, senza fornire tutte le opzioni di configurazione di ciascuna immagine Docker.

Se si desidera solo provare ThePhish o si vuole averlo operativo il più rapidamente possibile, è possibile utilizzare il template Docker fornito nella cartella docker, che è una versione modificata di uno dei template Docker forniti da TheHive Project che consente anche di creare un contenitore ThePhish. Per installare ThePhish utilizzando Docker e Docker Compose, fare riferimento a questa guida. Raccomando vivamente di installarlo in questo modo almeno la prima volta che lo si utilizza, in modo da 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 di TheHive, Cortex e MISP.

Installazione da zero

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

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

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

  • Documentazione TheHive
  • Documentazione Cortex
  • Documentazione MISP

È consigliabile che l'indirizzo email da cui ThePhish recupera le email da analizzare sia un indirizzo Gmail, poiché è quello con cui ThePhish è stato maggiormente testato. È preferibile che l'account sia appena creato, 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 con 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 email è pronto per l'uso, è possibile installare e configurare ThePhish.

  1. Clonare il repository

    root@kitploit:~
    $ git clone https://github.com/emalderson/ThePhish.git
    
  2. Creare un ambiente virtuale Python e attivarlo (è una buona pratica ma non obbligatoria)

    root@kitploit:~
    $ cd ThePhish/app
    $ sudo apt install python3-venv
    $ python3 -m venv venv
    $ source venv/bin/activate
    
  3. Installare i requisiti

    root@kitploit:~
    $ pip install -r requirements.txt
    
  4. Aggiungere la funzione run_responder() al file api.py di TheHive4py

    Per inviare email all'utente, ThePhish utilizza il responder Mailer. Poiché ThePhish utilizza TheHive4py per interagire con TheHive, è necessaria una funzione che consenta di eseguire un responder tramite il suo ID. Sfortunatamente, questa funzione non è ancora presente in TheHive4py, ma è stata fatta una pull request per aggiungerla a TheHive4py (#219). In attesa che venga aggiunta, deve essere aggiunta manualmente utilizzando il seguente comando affinché ThePhish funzioni correttamente (sostituire la versione di Python nel comando se si utilizza una versione diversa di Python):

    root@kitploit:~
    $ (cat << _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 requests.post(req, headers={"Content-Type": "application/json"}, data=data, proxies=self.proxies, auth=self.auth, verify=self.cert)
            except requests.exceptions.RequestException as e:
                raise TheHiveException("Responder run error: {}".format(e))
    _EOF_
    ) | tee -a venv/lib/python3.8/site-packages/thehive4py/api.py > /dev/null
    
root@kitploit:~
<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="https://raw.githubusercontent.com/emalderson/thephish/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: 114px;" target="_blank" rel="noopener noreferrer"><img class="img-fluid" data-bss-hover-animate="bounce" src="https://raw.githubusercontent.com/emalderson/thephish/static/assets/img/thehive.png" style="margin-right: 0px;margin-left: 0px;"></a></li>
    <li class="nav-item"><a class="nav-link" href="http://cortex:9001" style="max-width: 114px;" target="_blank" rel="noopener noreferrer"><img class="img-fluid" data-bss-hover-animate="bounce" src="https://raw.githubusercontent.com/emalderson/thephish/static/assets/img/cortex.png" style="transform: translate(0px);"></a></li>
    <li class="nav-item"><a class="nav-link" href="https://misp" style="max-width: 114px;" target="_blank" rel="noopener noreferrer"><img class="img-fluid" data-bss-hover-animate="bounce" src="https://raw.githubusercontent.com/emalderson/thephish/static/assets/img/misp.png" style="transform: translate(0px);"></a></li>
</ul>
  1. Avvia l'app
root@kitploit:~
$ python3 thephish_app.py

Il server che verrà utilizzato per eseguire l'applicazione è il server WSGI fornito da eventlet, poiché è elencato nei requisiti. È necessario per il funzionamento del protocollo WebSocket e per evitare di ricadere nel long polling HTTP. Senza eventlet, verrà utilizzato il server WSGI predefinito di Flask (Werkzeug). Se desideri utilizzare un altro server WSGI (ad es. Gunicorn) o utilizzare un proxy inverso (ad es. NGINX), la documentazione di Flask-SocketIO spiega come fare.

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

⚠️ Attenzione: Se stai utilizzando Mozilla Firefox per usare ThePhish e per qualche motivo appare un messaggio di errore durante l'analisi, la soluzione potrebbe essere trovata qui.

Configura gli analizzatori

ThePhish può avviare un analizzatore o un responder solo se è abilitato e correttamente configurato su Cortex. Questa parte della documentazione spiega come abilitarli, mentre questa parte elenca gli analizzatori e i responder disponibili con i loro parametri di configurazione. Va notato che mentre molti analizzatori sono gratuiti, alcuni richiedono accessi speciali e altri necessitano di un abbonamento al servizio o di una licenza del prodotto valida.

Configura i livelli degli analizzatori

Ogni analizzatore produce un report in formato JSON che contiene un livello di dannosità per un osservabile, che può essere uno tra "info", "safe", "suspicious" o "malicious". Tuttavia, sebbene la struttura del report segua solitamente una convenzione, questa non è sempre rispettata. Inoltre, dopo l'analisi del codice di molti analizzatori e diversi test, alcuni analizzatori sono risultati contenere bug. Per questo motivo, sono state utilizzate alcune modifiche e soluzioni alternative sia per ottenere comunque i livelli di dannosità forniti da questi analizzatori, sia per evitare che l'applicazione vada in crash a causa di quei bug.

Inoltre, questi livelli non rappresentano sempre il reale livello di dannosità di un osservabile. Poiché ciò dipende da come sono stati programmati gli analizzatori stessi, ThePhish viene fornito con un altro file di configurazione chiamato analyzers_level_conf.json, con il quale è possibile creare una mappatura tra i livelli di dannosità effettivi forniti da qualsiasi analizzatore e i livelli decisi dall'analista. Oltre a ciò, questo file permette all'analista di scegliere quali sono i tipi di osservabili a cui applicare queste modifiche. Il file deve seguire la struttura mostrata nell'esempio qui, utilizzando il nome esatto degli analizzatori da configurare e con il livello desiderato a destra. Se un analizzatore non è elencato in questo file, allora i livelli di dannosità che fornisce rimangono invariati. Il file deve seguire la struttura mostrata nell'esempio seguente, utilizzando il nome esatto degli analizzatori da configurare e con il livello desiderato a destra. Se un analizzatore non è elencato in questo file, allora i livelli di dannosità che fornisce rimangono invariati.```json { "DomainMailSPFDMARC_Analyzer_1_1" : { "dataType" : ["url", "ip", "domain", "mail"], "levelMapping" : { "malicious" : "suspicious", "suspicious" : "suspicious", "safe" : "safe", "info" : "info" } }, "MISP_2_1" : { "dataType" : ["url", "ip", "domain", "mail"], "levelMapping" : { "malicious" : "malicious", "suspicious" : "malicious", "safe" : "safe", "info" : "info" } } }

root@kitploit:~
In questo esempio, il livello "sospetto" per l'analizzatore *MISP_2_1* viene elevato a "malevolo" poiché indica che alcune osservabili nell'email attualmente in analisi sono già state avvistate in un'email precedentemente analizzata per la quale il verdetto era "malevolo". Al contrario, il livello "malevolo" dell'analizzatore *DomainMailSPFDMARC_Analyzer_1_1* viene abbassato a "sospetto", poiché molti domini legittimi non hanno record DMARC e SPF configurati.

Puoi aggiungere o rimuovere analizzatori in questo file a tuo piacimento, ma ti consiglio di lasciare intatti quelli già presenti nel file, poiché tali modifiche sono state motivate da numerosi test effettuati su un'ampia varietà di email.

### Analizzatori testati
ThePhish è stato testato con i seguenti analizzatori:
- AbuseIPDB_1_0
- AnyRun_Sandbox_Analysis_1_0
- CyberCrime-Tracker_1_0
- Cyberprotect_ThreatScore_3_0
- *DomainMailSPFDMARC_Analyzer_1_1*
- DShield_lookup_1_0
- EmailRep_1_0
- FileInfo_8_0
- Fortiguard_URLCategory_2_1
- IPinfo_Details_1_0
- **IPVoid_1_0**
- KasperskyThreatIntelligencePortal_1_0
- Maltiverse_Report_1_0
- *Malwares_GetReport_1_0*
- *Malwares_Scan_1_0*
- MaxMind_GeoIP_4_0
- MetaDefenderCloud_GetReport_1_0
- *MISP_2_1*
- NERD_1_0
- *Onyphe_Summary_1_0*
- OTXQuery_2_0
- PassiveTotal_Enrichment_2_0
- *PassiveTotal_Malware_2_0*
- PassiveTotal_Osint_2_0
- PassiveTotal_Ssl_Certificate_Details_2_0
- PassiveTotal_Ssl_Certificate_History_2_0
- PassiveTotal_Unique_Resolutions_2_0
- PassiveTotal_Whois_Details_2_0
- PhishTank_CheckURL_2_1
- **Pulsedive_GetIndicator_1_0**
- *Robtex_Forward_PDNS_Query_1_0*
- *Robtex_IP_Query_1_0*
- *Robtex_Reverse_PDNS_Query_1_0*
- Shodan_DNSResolve_1_0
- **Shodan_Host_1_0**
- **Shodan_Host_History_1_0**
- Shodan_InfoDomain_1_0
- **SpamhausDBL_1_0**
- StopForumSpam_1_0
- *Threatcrowd_1_0*
- UnshortenLink_1_2
- **URLhaus_2_0**
- Urlscan_io_Scan_0_1_0
- *Urlscan_io_Search_0_1_1*
- VirusTotal_GetReport_3_1
- VirusTotal_Scan_3_1
- Yara_2_0

Gli analizzatori enfatizzati in *corsivo* sono quelli per cui i livelli sono stati modificati (ma possono essere sovrascritti, anche se non è consigliabile), mentre gli analizzatori enfatizzati in **grassetto** sono quelli gestiti direttamente nel codice di ThePhish, o perché non rispettano la convenzione per la struttura del report, o perché presentano bug. Inoltre, i seguenti analizzatori sono gestiti nel codice di ThePhish per essere utilizzati nel modo migliore:

- **DomainMailSPFDMARC_Analyzer_1_1**: Viene avviato solo sui domini che si presume siano in grado di inviare email.
- **MISP_2_1**: Viene utilizzato per l'integrazione con MISP.
- **UnshortenLink_1_2**: Viene avviato prima di qualsiasi altro analizzatore su un URL in modo da poter decomprimere un collegamento e aggiungere il collegamento decompresso come osservabile aggiuntivo.
- **Yara_2_0**: È l'unico che viene avviato sull'allegato EML.

### Abilita l'analizzatore *MISP*

Per integrare Cortex con MISP, devi attivare l'analizzatore *MISP_2_1* e configurarlo con la chiave di autenticazione dell'utente creato su MISP che Cortex utilizzerà per interagire con MISP. Ciò significa che un'organizzazione e un utente con ruolo `sync_user` in tale organizzazione devono essere creati su MISP in anticipo (puoi imparare come fare e ottenere la chiave di autenticazione [qui (documentazione di ThePhish, consigliata)](https://github.com/emalderson/ThePhish/tree/master/docker#configure-the-misp-container) o [qui (documentazione di MISP)](https://www.circl.lu/doc/misp/administration/#users)).

### Abilita l'analizzatore *Yara*

Se vuoi utilizzare l'analizzatore *Yara_2_0*, devi creare una cartella sulla macchina su cui è in esecuzione Cortex che contenga:

- Le regole Yara, dove ogni regola è un file con estensione `.yar`
- Un file chiamato `index.yar`, che contiene una riga per ogni regola Yara in quella cartella che rispetti questa sintassi: `include "yara_rule_name.yar"`

Poi, devi configurare il percorso di questa cartella su Cortex. Ad esempio, se hai creato la cartella `yara_rules` nel percorso `/opt/cortex`, allora devi configurare il percorso `/opt/cortex/yara_rules` su Cortex (sull'interfaccia web).

## Abilita il risponditore *Mailer*

Per inviare le email agli utenti, il risponditore *Mailer* deve essere abilitato e correttamente configurato. La procedura per abilitare un risponditore è identica alla procedura per abilitare un analizzatore. Se stai utilizzando un indirizzo Gmail, questi sono i parametri corretti da impostare:
- from: `<YourGmailEmailAddress>`
- smtp_host: `smtp.gmail.com`
- smtp_port: `587`
- smtp_user: `<YourGmailEmailAddress>`
- smtp_pwd: `<YourGmailEmailAddressAppPassword>`

## Utilizzare la whitelist

ThePhish permette di creare una whitelist per evitare di analizzare osservabili che potrebbero causare falsi positivi o che l'analista decide che non dovrebbero essere considerati durante l'analisi. La whitelist è contenuta in un file chiamato `whitelist.json` ed è composta da molte liste diverse in modo da offrire grande flessibilità sia per quanto riguarda i tipi di osservabili da abbinare che le modalità di abbinamento. Supporta le seguenti modalità di abbinamento:

- Abbinamento esatto di stringhe per indirizzi email, indirizzi IP, URL, domini, nomi di file, tipi di file e hash
- Abbinamento tramite regex per indirizzi email, indirizzi IP, URL, domini e nomi di file
- Abbinamento tramite regex per sottodomini, indirizzi email e URL che contengono i domini specificati

Qui viene mostrato un esempio giocattolo del file `whitelist.json`.```json
{	
	"exactMatching": {
		"mail" : [],
		"ip" : [
			"127.0.0.1",
			"8.8.8.8",
			"8.8.4.4"
		],
		"url" : [],
		"domain" : [
			"adf.ly",
			"paypal.com"
		],
		"filename" : [],
		"filetype" : [
			"application/pdf"
		],
		"hash" : []
	},
	"domainsInSubdomains" : [
		"paypal.com"
	],
	"domainsInURLs" : [
		"paypal.com"
	],
	"domainsInEmails" : [
		"paypal.com"
	],
	"regexMatching" : {
		"mail" : [],
		"ip" : [
			"10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}",
			"172\\.16\\.\\d{1,3}\\.\\d{1,3}",
			"192\\.168\\.\\d{1,3}\\.\\d{1,3}"
		],
		"url" : [],
		"domain" : [],
		"filename" : []
	}
}

Mentre sia la parte relativa al matching esatto che quella relativa al matching tramite espressioni regolari vengono utilizzate senza alcuna modifica, le parti rimanenti sono usate per creare altre tre liste di espressioni regolari. Non è necessario progettare espressioni regolari complesse per abilitare queste funzionalità, ma è sufficiente aggiungere i domini alle liste giuste e ThePhish farà il resto. Ad esempio, nell'esempio mostrato sopra, non solo il dominio "paypal.com" viene filtrato, ma vengono filtrati anche eventuali sottodomini, URL e indirizzi email contenenti il dominio "paypal.com". Queste espressioni regolari sono state progettate per evitare alcuni comportamenti indesiderati, ad esempio impediscono che domini come "paypal.com.attacker.com" vengano erroneamente inseriti nella whitelist.

Nota: Se aggiungi un dominio sotto "domainsInSubdomains," anche il dominio stesso verrà filtrato. Pertanto, non è necessario aggiungere lo stesso dominio all'elenco dei domini sotto "exactMatching". La distinzione viene fatta per i casi in cui è necessario inserire nella whitelist solo il dominio, non i suoi sottodomini. Quindi, in questo esempio, includere "paypal.com" in entrambe le liste è ridondante.

Il file della whitelist fornito in questo repository è già popolato con alcuni osservabili nella whitelist, ma è solo un esempio; puoi (e dovresti) modificarlo in base alle tue esigenze, rimuovendo o aggiungendo elementi.

Contributo a TheHive4py

ThePhish utilizza una grande funzionalità di TheHive: la possibilità di esportare un caso in MISP come evento. Questo rende possibile utilizzare l'analizzatore MISP_2_1 per cercare una corrispondenza tra un osservabile in un caso e un attributo di uno di quegli eventi su MISP. Purtroppo, durante le prime fasi di sviluppo di ThePhish, una funzione che permettesse di farlo tramite API in Python non era ancora disponibile in TheHive4py. Per questo motivo, è stata effettuata una pull request (#187) a TheHive4py per aggiungere tale funzionalità. La pull request è stata accettata e la funzione export_to_misp() è stata aggiunta alla milestone 1.8.0 di TheHive4py.

Contributo a Cortex-Analyzers

ThePhish si basa fortemente sugli analizzatori forniti da Cortex. Per garantire che continuino a funzionare come previsto, vengono effettuate pull request al repository che li contiene. Ecco un elenco aggiornato di tali pull request:

  • Correzione KasperskyTIP: la categoria arancione precedentemente ignorata ora è dannosa (#1270)
  • Correzione PhishTank: aggiunto header User-Agent per far funzionare di nuovo l'API di PhishTank (#1271)
  • Correzione SpamHausDBL: sostituita funzione di query (non funzionante) con funzione resolve (#1272)

Licenza

ThePhish è un software open-source e gratuito rilasciato sotto licenza AGPL (Affero General Public License).

Pubblicazioni accademiche

  • ITASEC 2022: Italian Conference on Cybersecurity, 20–23 giugno 2022, Roma, Italia
    • Link agli atti: https://ceur-ws.org/Vol-3260/
    • Link all'articolo: https://ceur-ws.org/Vol-3260/paper6.pdf

Chi parla di ThePhish

  • SecSI - https://secsi.io/blog/thephish-an-automated-phishing-email-analysis-tool/
  • The Daily Swig - https://portswigger.net/daily-swig/thephish-the-most-complete-non-commercial-phishing-email-analysis-tool

Repository GitHub che menzionano ThePhish

  • TheHive-Project/awesome
  • matiassingers/awesome-readme

Riconoscimenti

Questo progetto è iniziato nel 2020 e una versione iniziale e incompleta è stata presentata come mio lavoro finale per la laurea presso la Cybersecurity HackAdemy organizzata dall'Università degli Studi di Napoli Federico II. Per questo, vorrei ringraziare Roberto Celletti per l'idea iniziale e il mio team, composto da gianpor, MrFelpon e xdinax, che mi hanno aiutato nelle prime fasi di sviluppo dell'applicazione con il deploy iniziale e i primi test.

Successivamente ho riprogettato completamente lo strumento in termini di funzionalità, logo e interfaccia utente, ho aggiunto il supporto per Docker e ho scritto una documentazione approfondita per essere presentato come tesi finale per la laurea magistrale in ingegneria informatica nel 2021 presso l'Università degli Studi di Napoli Federico II con il relatore Simon Pietro Romano (spromano).

Vorrei anche ringraziare Xavier Mertens (xme) per aver sviluppato IMAP2TheHive e averlo pubblicato su GitHub, poiché è stata la scintilla iniziale che ha portato allo sviluppo di questo progetto e da cui il codice di ThePhish ha preso spunto.

Scarica lo strumento
  • Configurazione

    Il file configuration.json è il file di configurazione globale che consente 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.

    root@kitploit:~
    {
    	"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 si utilizza un indirizzo Gmail, è sufficiente impostare il nome utente utilizzato per connettersi al server IMAP (che è il tuo indirizzo email) e la password dell'app.
    • Nella parte thehive è necessario impostare l'URL a cui è raggiungibile l'istanza di TheHive e impostare la chiave API dell'utente creato su TheHive che ThePhish utilizzerà per interagire con TheHive.
    • Nella parte cortex è necessario impostare l'URL a cui è raggiungibile l'istanza di Cortex e impostare la chiave API dell'utente creato su Cortex che sia ThePhish che TheHive utilizzeranno per interagire con Cortex. Inoltre, è necessario impostare l'ID assegnato all'istanza di Cortex.
    • Nella parte misp è sufficiente impostare l'ID assegnato all'istanza di MISP.
    • Nella parte case è possibile impostare i livelli TLP e PAP predefiniti per i casi creati da ThePhish e anche i tag che verranno applicati al momento della loro creazione.

    È possibile imparare come creare un'organizzazione e un utente con il ruolo org-admin in tale organizzazione su TheHive e ottenere la sua chiave API qui (documentazione ThePhish, consigliata) o qui (documentazione TheHive). Allo stesso modo, è possibile imparare come creare un'organizzazione e un utente con i ruoli read, analyze in tale 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 da cercare sono name e url in entrambe le parti, che corrispondono agli ID e agli URL delle istanze di Cortex e MISP. Gli ID possono essere trovati anche nella finestra About sull'interfaccia web di TheHive. Un esempio in cui l'ID di Cortex è la stringa local e l'ID di MISP è la stringa MISP THP è mostrato nella figura seguente:

    Il file application.conf viene utilizzato per integrare TheHive con Cortex e MISP. È possibile apprendere come configurare l'integrazione con Cortex qui (documentazione ThePhish, consigliata) o qui (documentazione TheHive), mentre per l'integrazione con MISP è possibile visitare qui (documentazione ThePhish, consigliata) o qui (documentazione TheHive).Gli URL a cui le istanze di TheHive, Cortex e MISP sono raggiungibili dovrebbero essere sostituiti anche nel file templates/index.html in modo che i pulsanti nell'interfaccia web possano raggiungerli. Per farlo, sostituisci gli ultimi tre href di questa porzione di codice: