
ThePhish: ein automatisiertes Tool zur Phishing-E-Mail-Analyse
ThePhish ist ein automatisiertes Phishing-E-Mail-Analysetool, das auf TheHive, Cortex und MISP basiert. Es handelt sich um eine in Python 3 geschriebene Webanwendung auf Basis von Flask, die den gesamten Analyseprozess automatisiert, von der Extraktion der Observablen aus dem Header und dem Body einer E-Mail bis zur Erstellung eines Urteils, das in den meisten Fällen endgültig ist. Darüber hinaus ermöglicht es dem Analysten, bei Bedarf in den Analyseprozess einzugreifen und weitere Details zur analysierten E-Mail zu erhalten. Für die Interaktion mit TheHive und Cortex verwendet es TheHive4py und Cortex4py, die Python-API-Clients sind, die die Nutzung der von TheHive bzw. Cortex bereitgestellten REST-APIs ermöglichen.
Das folgende Diagramm zeigt, wie ThePhish auf hoher Ebene funktioniert:
Dieses Beispiel soll zeigen, wie ein Benutzer eine E-Mail zur Analyse an ThePhish senden kann und wie ein Analyst diese E-Mail mit ThePhish tatsächlich analysieren kann.
Ein Benutzer kann eine E-Mail an die E-Mail-Adresse senden, die von ThePhish zum Abrufen der zu analysierenden E-Mails verwendet wird. Die E-Mail muss als Anhang im EML-Format weitergeleitet werden, um eine Kontamination des E-Mail-Headers zu verhindern. In diesem Fall wird als E-Mail-Client Mozilla Thunderbird und als E-Mail-Adresse eine Gmail-Adresse verwendet.
Der Analyst navigiert zur Webseite von ThePhish und klickt auf die Schaltfläche "List emails", um die Liste der zu analysierenden E-Mails zu erhalten.
Wenn der Analyst auf die Schaltfläche "Analyze" der ausgewählten E-Mail klickt, wird die Analyse gestartet und ihr Fortschritt auf der Weboberfläche angezeigt.
Währenddessen extrahiert ThePhish die Observablen (URLs, Domänen, IP-Adressen, E-Mail-Adressen, Anhänge und Hashes dieser Anhänge) aus der E-Mail und interagiert dann mit TheHive, um den Fall zu erstellen.
Innerhalb des Falls werden drei Aufgaben erstellt.
Dann beginnt ThePhish, die extrahierten Observablen zum Fall hinzuzufügen.
An diesem Punkt wird der Benutzer per E-Mail benachrichtigt, dass die Analyse begonnen hat, dank des Mailer-Responders.
Die Beschreibung der ersten Aufgabe ermöglicht es dem Mailer-Responder, die Benachrichtigung per E-Mail zu senden.
Nachdem die erste Aufgabe geschlossen wurde, wird die zweite Aufgabe gestartet und die Analysatoren werden auf den Observablen gestartet. Der Analysefortschritt wird auf der Weboberfläche angezeigt, während die Analysatoren gestartet werden.
Der Analysefortschritt kann auch in TheHive dank dessen Live-Stream eingesehen werden.
Sobald alle Analysatoren ihre Ausführung beendet haben, wird die zweite Aufgabe geschlossen und die dritte gestartet. Dann berechnet ThePhish das Urteil. Da das Urteil "bösartig" lautet, werden alle Observablen, die als bösartig eingestuft wurden, als IoC markiert. In diesem Fall wird nur eine Observable als IoC markiert.
Der Fall wird dann als Ereignis nach MISP exportiert, mit einem einzelnen Attribut, das durch die oben genannte Observable repräsentiert wird.
Dann sendet ThePhish das Urteil per E-Mail an den Benutzer, dank des Mailer-Responders.
Schließlich werden sowohl die Aufgabe als auch der Fall geschlossen. Die Beschreibung der dritten Aufgabe ermöglicht es dem Mailer-Responder, das Urteil per E-Mail zu senden. Außerdem wurde der Fall nach fünf Minuten geschlossen und als "True Positive" mit "No Impact" aufgelöst, was bedeutet, dass der Angriff erkannt wurde, bevor er Schaden anrichten konnte.
Sobald der Fall geschlossen ist, ist das Urteil für den Analysten auf der Weboberfläche zusammen mit dem gesamten Protokoll des Analysefortschritts verfügbar.
An diesem Punkt kann der Analyst zurückgehen und eine andere E-Mail analysieren. Der oben dargestellte Fall betraf eine Phishing-E-Mail, aber ein ähnlicher Arbeitsablauf ist zu beobachten, wenn die analysierte E-Mail als "sicher" eingestuft wird. Tatsächlich wird der Fall geschlossen und das Urteil per E-Mail an den Benutzer gesendet.
Dann wird das Urteil dem Analysten auch auf der Weboberfläche angezeigt.
Wenn eine E-Mail dagegen als "verdächtig" eingestuft wird, wird das Urteil dem Analysten nur auf der Weboberfläche angezeigt.
An diesem Punkt muss der Analyst die Schaltflächen auf der linken Seite der Seite verwenden, um TheHive, Cortex und MISP für weitere Analysen zu nutzen. Dies liegt daran, dass die Analyse noch nicht abgeschlossen ist und der Benutzer daher nur darüber informiert wird, dass die Analyse der von ihm an ThePhish weitergeleiteten E-Mail gestartet wurde. Tatsächlich wurden die letzte Aufgabe und der Fall noch nicht geschlossen, da sie erst vom Analysten selbst geschlossen werden müssen, sobald er ein endgültiges Urteil erarbeitet hat.
Der Analyst kann die Berichte aller Analysatoren in TheHive und Cortex einsehen und, falls dies nicht ausreichen sollte, auch die EML-Datei der E-Mail herunterladen und manuell analysieren.
Wenn der Analyst die Analyse abschließt, kann er den Text der an den Benutzer zu sendenden E-Mail in die Beschreibung der letzten Aufgabe einfügen, den Mailer-Responder starten, den Fall nach MISP exportieren, falls das Urteil "bösartig" lautet, indem er auf die Schaltfläche "Export" klickt, und dann den Fall schließen.
ThePhish ist eine in Python 3 geschriebene Webanwendung. Der Webserver wird mit Flask implementiert, während der Frontend-Teil der Anwendung, die dynamische Seite, die in HTML, CSS und JavaScript geschrieben ist, mit Bootstrap implementiert wird. Neben dem Webserver-Modul besteht die Backend-Logik der Anwendung aus drei Python-Modulen, die die Logik der Anwendung selbst kapseln, und einer Python-Klasse zur Unterstützung der Protokollierung über das WebSocket-Protokoll. Wenn Sie eine grafische Darstellung der Anwendungslogik sehen möchten, klicken Sie hier. Darüber hinaus gibt es mehrere Konfigurationsdateien, die von den genannten Modulen verwendet werden und verschiedene Zwecke erfüllen.
Wenn der Analyst zur Basis-URL der Anwendung navigiert, wird die Webseite von ThePhish geladen und eine bidirektionale Verbindung mit dem Server hergestellt. Dies geschieht durch die Verwendung der Socket.IO-JavaScript-Bibliothek auf der Webseite, die eine Echtzeit-, bidirektionale und ereignisbasierte Kommunikation zwischen dem Browser und dem Server ermöglicht. Diese Verbindung wird nach Möglichkeit mit einer WebSocket-Verbindung hergestellt und verwendet HTTP Long Polling als Fallback. Damit dies funktioniert, verwendet die Serveranwendung die Flask-SocketIO-Python-Bibliothek, die eine Socket.IO-Integration für Flask-Anwendungen bereitstellt. Diese Verbindung wird dann von ThePhish verwendet, um den Analysefortschritt auf der Weboberfläche anzuzeigen.
Jedes Mal, wenn der Analyst eine Aktion auf der Weboberfläche ausführt, wird eine AJAX-Anfrage an den Server gesendet. Dies ist eine asynchrone HTTP-Anfrage, die es ermöglicht, Daten im Hintergrund mit dem Server auszutauschen und die Seite zu aktualisieren, ohne sie neu zu laden. Dies ermöglicht es dem Analysten, sowohl die Liste der zu analysierenden E-Mails anzuzeigen als auch die Analyse zu starten.
ThePhish interagiert mit TheHive und Cortex dank TheHive4py und Cortex4py. Darüber hinaus interagiert es mit einem IMAP-Server, um die zu analysierenden E-Mails abzurufen.
Da die Installation und Konfiguration der Dienste TheHive, Cortex und MISP von Grund auf für eine Produktionsumgebung nicht unbedingt einfach ist, bietet TheHive Project Docker-Images und Docker-Compose-Vorlagen hier an, um das Installationsverfahren zu erleichtern. Der Einfachheit halber sind die bereitgestellten Vorlagen einfach gehalten und bieten nicht die vollständigen Konfigurationsoptionen jedes Docker-Images.
Wenn Sie ThePhish nur ausprobieren oder so schnell wie möglich zum Laufen bringen möchten, können Sie die bereitgestellte Docker-Vorlage im docker-Ordner verwenden, eine modifizierte Version einer der Docker-Vorlagen von TheHive Project, die auch die Erstellung eines ThePhish-Containers ermöglicht. Informationen zur Installation von ThePhish mit Docker und Docker Compose finden Sie in dieser Anleitung. Ich empfehle dringend, es zumindest beim ersten Mal auf diese Weise zu installieren, damit Sie die Grundlagen lernen und es mit einer minimalen Konfiguration konfigurieren können, die beim ersten Versuch funktionieren sollte. Tatsächlich enthält die zuvor verlinkte Anleitung auch eine Schritt-für-Schritt-Anleitung zur Konfiguration der TheHive-, Cortex- und MISP-Instanzen.
Diese Anleitung bezieht sich auf die alleinige Installation von ThePhish, die Folgendes erfordert:
Informationen zur Installation, Konfiguration und Integration von TheHive-, Cortex- und MISP-Instanzen finden Sie in der offiziellen Dokumentation:
Es wird empfohlen, dass die E-Mail-Adresse, von der ThePhish die zu analysierenden E-Mails abruft, eine Gmail-Adresse ist, da dies diejenige ist, mit der ThePhish am meisten getestet wurde. Es ist vorzuziehen, dass das Konto ein neu erstelltes ist, das ausschließlich für die Verwendung durch ThePhish bestimmt ist. Das Verfahren zum Aktivieren des App-Passworts, das von ThePhish zum Verbinden mit dem Postfach und Abrufen der E-Mails benötigt wird, wird hier erklärt.
Dieses Installationsverfahren wurde auf einer VM mit Ubuntu 20.04.3 LTS und Python 3.8 sowie den Versionen von TheHive, Cortex und MISP getestet, die in dieser docker-compose.yml-Datei angegeben sind.
Sobald TheHive, Cortex und MISP konfiguriert sind und unter einer bestimmten URL lauschen und die E-Mail-Adresse einsatzbereit ist, können Sie ThePhish installieren und konfigurieren.
Repository klonen
$ git clone https://github.com/emalderson/ThePhish.git
Eine Python-Virtual-Umgebung erstellen und aktivieren (es ist gute Praxis, aber nicht erforderlich)
$ cd ThePhish/app
$ sudo apt install python3-venv
$ python3 -m venv venv
$ source venv/bin/activate
Abhängigkeiten installieren
$ pip install -r requirements.txt
Die Funktion run_responder() zur Datei api.py von TheHive4py hinzufügen
Um E-Mails an den Benutzer zu senden, verwendet ThePhish den Mailer-Responder. Da ThePhish TheHive4py zur Interaktion mit TheHive verwendet, wird eine Funktion benötigt, die das Ausführen eines Responders anhand seiner ID ermöglicht. Leider ist diese Funktion noch nicht in TheHive4py enthalten, aber es wurde ein Pull-Request eingereicht, um sie hinzuzufügen (#219). Während darauf gewartet wird, muss sie manuell mit dem folgenden Befehl hinzugefügt werden, damit ThePhish ordnungsgemäß funktioniert (ersetzen Sie die Python-Version im Befehl, wenn Sie eine andere Python-Version verwenden):
$ (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
<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>
$ python3 thephish_app.py
Der Server, der zum Ausführen der Anwendung verwendet wird, ist der von eventlet bereitgestellte WSGI-Server, da dieser in den Abhängigkeiten aufgeführt ist. Er wird benötigt, damit das WebSocket-Protokoll funktioniert und ein Rückgriff auf HTTP Long Polling vermieden wird. Ohne eventlet wird der standardmäßige Flask-WSGI-Server (Werkzeug) verwendet. Falls Sie einen anderen WSGI-Server (z. B. Gunicorn) oder einen Reverse-Proxy (z. B. NGINX) verwenden möchten, erklärt die Flask-SocketIO-Dokumentation, wie dies zu bewerkstelligen ist.
Die Anwendung sollte nun unter http://localhost:8080 erreichbar sein.
⚠️ Warnung: Wenn Sie Mozilla Firefox verwenden, um ThePhish zu nutzen, und aus irgendeinem Grund während der Analyse eine Fehlermeldung erscheint, finden Sie die Lösung möglicherweise hier.
ThePhish kann einen Analysator oder einen Responder nur starten, wenn dieser in Cortex aktiviert und korrekt konfiguriert ist. Dieser Teil der Dokumentation erklärt, wie man sie aktiviert, während dieser Teil die verfügbaren Analysatoren und Responder mit ihren Konfigurationsparametern auflistet. Es sollte beachtet werden, dass viele Analysatoren kostenlos nutzbar sind, einige jedoch speziellen Zugang erfordern und andere eine gültige Serviceabonnement oder Produktlizenz benötigen.
Jeder Analysator gibt einen Bericht im JSON-Format aus, der eine Bösartigkeitsstufe für ein Observable enthält, die "info", "safe", "suspicious" oder "malicious" sein kann. Obwohl die Berichtsstruktur normalerweise einer Konvention folgt, wird diese Konvention nicht immer eingehalten. Darüber hinaus wurden nach der Analyse des Codes vieler Analysatoren und mehreren Tests bei einigen Analysatoren Fehler festgestellt. Aus diesem Grund wurden einige Anpassungen und Workarounds verwendet, um entweder die von diesen Analysatoren gelieferten Bösartigkeitsstufen dennoch zu erhalten oder zu verhindern, dass die Anwendung aufgrund dieser Fehler abstürzt.
Darüber hinaus repräsentieren diese Stufen nicht immer die tatsächliche Bösartigkeitsstufe eines Observables. Da dies davon abhängt, wie die Analysatoren selbst programmiert wurden, wird ThePhish mit einer weiteren Konfigurationsdatei namens analyzers_level_conf.json ausgeliefert, mit der es möglich ist, eine Zuordnung zwischen den tatsächlichen, von einem Analysator gelieferten Bösartigkeitsstufen und den vom Analysten festgelegten Stufen zu erstellen. Darüber hinaus erlaubt diese Datei dem Analysten, die Observablentypen auszuwählen, auf die diese Änderungen angewendet werden sollen. Die Datei muss der Struktur folgen, die im hier gezeigten Beispiel dargestellt ist, wobei die genauen Namen der zu konfigurierenden Analysatoren und die gewünschte Stufe auf der rechten Seite verwendet werden. Wenn ein Analysator nicht in dieser Datei aufgeführt ist, bleiben die von ihm gelieferten Bösartigkeitsstufen unverändert. Die Datei muss der Struktur folgen, die im folgenden Beispiel dargestellt ist, wobei die genauen Namen der zu konfigurierenden Analysatoren und die gewünschte Stufe auf der rechten Seite verwendet werden. Wenn ein Analysator nicht in dieser Datei aufgeführt ist, bleiben die von ihm gelieferten Bösartigkeitsstufen unverändert.```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"
}
}
}
In diesem Beispiel wird der Level "suspicious" für den *MISP_2_1*-Analyzer auf "malicious" hochgestuft, da er anzeigt, dass einige Observablen in der aktuell analysierten E-Mail bereits in einer zuvor analysierten E-Mail gesehen wurden, für die das Urteil "malicious" lautete. Umgekehrt wird der Level "malicious" des *DomainMailSPFDMARC_Analyzer_1_1*-Analyzers auf "suspicious" herabgestuft, da viele legitime Domains keine DMARC- und SPF-Einträge konfiguriert haben.
Sie können nach Belieben Analyzer in dieser Datei hinzufügen oder entfernen, aber ich empfehle, die bereits in der Datei vorhandenen unverändert zu lassen, da diese Änderungen durch viele Tests mit einer großen Anzahl verschiedener E-Mails motiviert wurden.
### Tested analyzers
ThePhish wurde mit den folgenden Analyzern getestet:
- 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
Die in *kursiv* hervorgehobenen Analyzer sind diejenigen, bei denen die Level geändert wurden (aber überschrieben werden können, auch wenn es nicht empfehlenswert ist), während die in **fett** hervorgehobenen Analyzer direkt im Code von ThePhish behandelt werden, entweder weil sie die Konvention für die Berichtsstruktur nicht einhalten oder weil sie Fehler aufweisen. Darüber hinaus werden die folgenden Analyzer im Code von ThePhish behandelt, um sie bestmöglich zu nutzen:
- **DomainMailSPFDMARC_Analyzer_1_1**: Er wird nur auf Domains gestartet, die vermutlich E-Mails senden können.
- **MISP_2_1**: Er wird für die Integration mit MISP verwendet.
- **UnshortenLink_1_2**: Er wird vor jedem anderen Analyzer auf eine URL gestartet, um das Kürzen eines Links zu ermöglichen und die unverkürzte URL als zusätzliche Observable hinzuzufügen.
- **Yara_2_0**: Er ist der einzige, der auf dem EML-Anhang gestartet wird.
### Enable the *MISP* analyzer
Um Cortex in MISP zu integrieren, müssen Sie den *MISP_2_1*-Analyzer aktivieren und ihn mit dem Authentifizierungsschlüssel des in MISP erstellten Benutzers konfigurieren, den Cortex für die Interaktion mit MISP verwenden wird. Das bedeutet, dass zuvor eine Organisation und ein Benutzer mit der Rolle `sync_user` in dieser Organisation in MISP erstellt werden müssen (Sie können lernen, wie das geht und den Authentifizierungsschlüssel erhalten [hier (ThePhish-Dokumentation, empfohlen)](https://github.com/emalderson/ThePhish/tree/master/docker#configure-the-misp-container) oder [hier (MISP-Dokumentation)](https://www.circl.lu/doc/misp/administration/#users).
### Enable the *Yara* analyzer
Wenn Sie den *Yara_2_0*-Analyzer verwenden möchten, müssen Sie auf dem Rechner, auf dem Cortex läuft, einen Ordner erstellen, der Folgendes enthält:
- Die Yara-Regeln, wobei jede Regel eine Datei mit der Erweiterung `.yar` ist
- Eine Datei namens `index.yar`, die für jede Yara-Regel in diesem Ordner eine Zeile enthält, die dieser Syntax entspricht: `include "yara_rule_name.yar"`
Dann müssen Sie den Pfad dieses Ordners in Cortex konfigurieren. Wenn Sie beispielsweise den Ordner `yara_rules` unter `/opt/cortex` erstellt haben, müssen Sie den Pfad `/opt/cortex/yara_rules` in Cortex (über die Weboberfläche) konfigurieren.
## Enable the *Mailer* responder
Um die E-Mails an die Benutzer zu senden, muss der *Mailer*-Responder aktiviert und korrekt konfiguriert sein. Das Verfahren zum Aktivieren eines Responders ist identisch mit dem Verfahren zum Aktivieren eines Analyzers. Wenn Sie eine Gmail-Adresse verwenden, sind dies die korrekten Parameter:
- from: `<YourGmailEmailAddress>`
- smtp_host :`smtp.gmail.com`
- smtp_port: `587`
- smtp_user: `<YourGmailEmailAddress>`
- smtp_pwd: `<YourGmailEmailAddressAppPassword>`
## Use the whitelist
ThePhish ermöglicht die Erstellung einer Whitelist, um die Analyse von Observablen zu vermeiden, die Fehlalarme verursachen könnten oder die der Analyst entscheidet, dass sie während der Analyse nicht berücksichtigt werden sollen. Die Whitelist ist in einer Datei namens `whitelist.json` enthalten und besteht aus vielen verschiedenen Listen, um eine große Flexibilität sowohl hinsichtlich der zu vergleichenden Observable-Typen als auch der Vergleichsmodi zu bieten. Sie unterstützt die folgenden Vergleichsmodi:
- Exakter Zeichenkettenvergleich für E-Mail-Adressen, IP-Adressen, URLs, Domains, Dateinamen, Dateitypen und Hashes
- Regex-Vergleich für E-Mail-Adressen, IP-Adressen, URLs, Domains und Dateinamen
- Regex-Vergleich für Subdomains, E-Mail-Adressen und URLs, die die angegebenen Domains enthalten
Hier wird ein Beispiel für die `whitelist.json`-Datei gezeigt.```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" : []
}
}
Während die Teile, die sich auf exakte Übereinstimmung und Regex-Übereinstimmung beziehen, ohne Änderung verwendet werden, werden die restlichen Teile verwendet, um drei weitere Listen mit regulären Ausdrücken zu erstellen. Es ist nicht erforderlich, komplexe reguläre Ausdrücke zu entwerfen, um diese Funktionen zu aktivieren, sondern Sie müssen nur die Domains zu den richtigen Listen hinzufügen, und ThePhish erledigt den Rest. Beispielsweise wird im obigen Beispiel nicht nur die Domain "paypal.com" gefiltert, sondern auch jede Subdomain, URL und E-Mail-Adresse, die die Domain "paypal.com" enthält. Diese regulären Ausdrücke wurden entwickelt, um unerwünschtes Verhalten zu vermeiden – zum Beispiel verhindern sie, dass Domains wie "paypal.com.attacker.com" fälschlicherweise auf die Whitelist gesetzt werden.
Hinweis: Wenn Sie eine Domain unter "domainsInSubdomains" hinzufügen, wird die Domain selbst ebenfalls gefiltert. Daher ist es nicht nötig, dieselbe Domain auch zur Liste der Domains unter "exactMatching" hinzuzufügen. Die Unterscheidung wird für Fälle getroffen, in denen nur die Domain selbst, nicht aber ihre Subdomains auf die Whitelist gesetzt werden sollen. In diesem Beispiel ist es also redundant, "paypal.com" in beide Listen aufzunehmen.
Die Whitelist-Datei, die in diesem Repository bereitgestellt wird, enthält bereits einige auf die Whitelist gesetzte Observablen, ist aber nur ein Beispiel. Sie können (und sollten) sie nach Ihren Bedürfnissen bearbeiten, indem Sie Elemente entfernen oder hinzufügen.
ThePhish nutzt eine großartige Funktion von TheHive – die Möglichkeit, einen Fall als Ereignis nach MISP zu exportieren. Dies ermöglicht es, den Analyzer MISP_2_1 zu verwenden, um nach einer Übereinstimmung zwischen einem Observablen in einem Fall und einem Attribut eines dieser Ereignisse auf MISP zu suchen. Leider war während der ersten Entwicklungsstadien von ThePhish eine Funktion, die dies per API in Python ermöglicht, noch nicht in TheHive4py verfügbar. Aus diesem Grund wurde ein Pull-Request (#187) an TheHive4py gestellt, um diese Funktionalität hinzuzufügen. Der Pull-Request wurde angenommen, und die Funktion export_to_misp() wurde dem Meilenstein 1.8.0 von TheHive4py hinzugefügt.
ThePhish ist stark auf die von Cortex bereitgestellten Analyzer angewiesen. Um sicherzustellen, dass sie weiterhin wie vorgesehen funktionieren, werden Pull-Requests an das Repository gestellt, das sie enthält. Hier ist eine aktualisierte Liste dieser Pull-Requests:
ThePhish ist eine Open-Source- und freie Software, die unter der AGPL (Affero General Public License) veröffentlicht wird.
Dieses Projekt begann im Jahr 2020, und eine frühe, unvollständige Version davon wurde als meine Abschlussarbeit für den Cybersecurity HackAdemy der Universität Neapel Federico II präsentiert. Dafür möchte ich Roberto Celletti für die ursprüngliche Idee und meinem Team danken, das aus gianpor, MrFelpon und xdinax bestand, die mir in den frühen Phasen der Entwicklung der Anwendung bei der ersten Bereitstellung und den ersten Tests halfen.
Dann habe ich das Werkzeug in Bezug auf Funktionalität, Logo und Benutzeroberfläche vollständig neu gestaltet, die Unterstützung für Docker hinzugefügt und eine ausführliche Dokumentation verfasst, um es als Abschlussarbeit für meinen Masterabschluss in Computertechnik im Jahr 2021 an der Universität Neapel Federico II unter der Betreuung von Simon Pietro Romano (spromano) vorzustellen.
Ich möchte auch Xavier Mertens (xme) dafür danken, dass er IMAP2TheHive entwickelt und auf GitHub veröffentlicht hat, da dies der ursprüngliche Funken war, der zur Entwicklung dieses Projekts führte und von dem der Code von ThePhish inspiriert wurde.
Konfiguration
Die Datei configuration.json ist die globale Konfigurationsdatei, die das Festlegen der Parameter für die Verbindung zum Postfach und zu den Instanzen von TheHive, Cortex und MISP ermöglicht. Sie ermöglicht auch das Festlegen von Parametern in Bezug auf die Fälle, die in TheHive erstellt werden.
{
"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"]
}
}
Wie Sie eine Organisation und einen Benutzer mit der Rolle org-admin in dieser Organisation in TheHive erstellen und dessen API-Key erhalten, erfahren Sie hier (ThePhish-Dokumentation, empfohlen) oder hier (TheHive-Dokumentation). Ähnlich können Sie lernen, wie Sie eine Organisation und einen Benutzer mit den Rollen read, analyze in dieser Organisation in Cortex erstellen und dessen API-Key erhalten hier (ThePhish-Dokumentation, empfohlen) oder hier (Cortex-Dokumentation).
Die URLs und IDs, die in dieser Datei festgelegt sind, müssen mit denen übereinstimmen, die in der Konfigurationsdatei von TheHive mit dem Namen application.conf festgelegt sind, die einen Teil zu Cortex und einen Teil zu MISP enthält. Die Parameter, nach denen Sie suchen sollten, sind name und url in beiden Teilen, die den IDs und URLs der Cortex- und MISP-Instanzen entsprechen. Die IDs finden Sie auch im Fenster About auf der Weboberfläche von TheHive. Ein Beispiel, bei dem die Cortex-ID die Zeichenfolge local und die MISP-ID die Zeichenfolge MISP THP ist, wird in der folgenden Abbildung gezeigt:
Die Datei application.conf dient zur Integration von TheHive mit Cortex und MISP. Informationen zum Einrichten der Integration mit Cortex finden Sie hier (ThePhish-Dokumentation, empfohlen) oder hier (TheHive-Dokumentation), für die Integration mit MISP gehen Sie hier (ThePhish-Dokumentation, empfohlen) oder hier (TheHive-Dokumentation).Die URLs, unter denen die Instanzen von TheHive, Cortex und MISP erreichbar sind, sollten ebenfalls in der Datei templates/index.html ersetzt werden, damit die Schaltflächen in der Weboberfläche sie erreichen können. Dazu ersetzen Sie die letzten drei href in diesem Codeabschnitt: