7 Min

GoPhish: Self-Hosted Phishing-Simulationen

Phishing-Mails sind so alt wie das Internet. Jedoch wird es immer schwieriger, diese von echten Mails zu unterscheiden. Mit der Software "GoPhish" könnt ihr eure Freunde oder eure Kollegen auf die Probe stellen.
GoPhish: Self-Hosted Phishing-Simulationen
Photo by Zulfugar Karimov / Unsplash

Was ist GoPhish?

Eine kurze Erklärung

GoPhish ist eine Software zur Simulation von Phishing-Angriffen. Die Simulationen werden "Kampagnen" genannt und bestehen aus einem "E-Mail-Template", einer "Landing Page" und einem "Sending Profile".

Das E-Mail-Template dient als Vorlage für die Phishing-Mail selbst. In diesen werden die Phishing-Links versteckt. Optional ist es möglich, den Adressaten direkt anzusprechen.
Landing Pages dienen beispielsweise als Fake-Login-Maske, um den Nutzer – wie in einem echten Angriffsszenario – dazu zu verleiten, seine Daten einzugeben. Welche Daten abgegriffen werden sollen, kann auch hier beliebig bestimmt werden.
Sending Profiles sind die Absender, welche in den Phishing Mails angegeben werden. Diese sind aufgrund der Funktionsweise des E-Mail-Protokolls frei wählbar. Somit kann sich jeder auf den ersten Blick als jeden ausgeben.

Vorwort

Wichtige Hinweise für das Vorhaben

Ärger mit Anbietern

Bevor ihr nun fröhlich loslegt, eure eigenen Spam-Simulationen durchzuführen, ist es essenziell zu wissen, dass die großen Mailanbieter natürlich ein Interesse daran haben, ihre Kunden vor solchen Mails zu schützen. Dafür werden sogenannte Blacklists eingesetzt, damit besonders auffällige Absender (speziell Domains oder IPs) blockiert werden können.

💡
Einige dieser Blacklist-Anbieter erlauben das Abfragen der Domain oder der IP mithilfe eines sogenannten "Reputations-Checker", um prüfen zu können, ob man auf diesen – eventuell auch unfreiwillig – geführt wird.

Solltet ihr nun also beginnen, Spam-Mails an diese Anbieter zu schicken, ist es gut möglich, dass ihr früher oder später auf solchen Listen landet. Dann geht der Ärger erst so richtig los, denn ein zuverlässiger Mail-Versand ist dann nicht mehr gewährleistet. Sich von den Listen entfernen zu lassen ist – wenn überhaupt möglich – ein immenser Aufwand und nervig.

Somit wird strengstens empfohlen, den Test auf seinen eigenen Systemen durchzuführen, um der Reputation der IP-Adresse des Servers nicht zu schaden und sich eventuell zukünftige Projekte zu verbauen.

Software

Ein Blick auf GoPhish

Dashboard

GoPhish Dashboard – Leider schon mit "Erfolgen"

Nach dem Login landet man zuerst auf dem Dashboard. Dieses zeigt einen Graphen der vergangenen Kampagnen und deren "Erfolge" an. Direkt darunter befinden sich Zähler der sogenannten Events, welche sich in die folgenden Fälle aufteilen:

  • Email Sent
    Hier wird gezählt, wie viele Mails insgesamt bisher verschickt wurden.
  • Email Opened
    Dieser Zähler zählt, wie oft die E-Mails geöffnet wurden. Dies geschieht durch ein "Zähl-Pixel", welches beim Laden der Bilder mitgeladen wird. Durch das Laden wird eine Ressource von dem Webserver angefordert. Dieser wertet den Download aus und teilt der Software mit, dass die E-Mail geöffnet wurde.
  • Clicked Link
    Hier wird es kritisch. Hier wird gezählt, ob ein Link in der Mail angeklickt wurde. Dies kann im schlechtesten Szenario bereits zu erfolgreichen Angriffen führen (siehe CrossSite-Script Angriffe) und ist schon als heikel anzusehen.
  • Submitted Data
    Hier ist die rote Farbe durchaus angebracht! Dieser Zähler verrät euch, wie oft Daten auf den in Mails verwiesenen Landing Pages eingeben und abgesendet wurden. Was dies im schlimmsten Falle bedeutet, muss ich sicher nicht erläutern.
  • Email Reported
    Der beruhigendste Zähler. Dieser zählt wie oft eure Opfer die Mails als verdächtig bei euch oder einer anderen zuständigen Person gemeldet haben. Sobald eine Meldung erfolgt, ist dies in der Software bequem vermerkbar. Dieser Vorgang ist im übrigen auch automatisierbar, dazu später mehr.

Unter den Zählern sind noch die vergangenen Kampagnen aufgelistet. Mit einem Klick auf den Statistik-Button könnt ihr detaillierte Informationen zu der einzelnen Kampagne erhalten.


Nutzer und Gruppen

Erstellung einer Gruppe

Vor jeder Kampagne brauchen wir natürlich noch Adressen, um diese dann mit unseren Mails zu testen.
Somit starten wir damit, eine neue "Kontaktliste" zu erstellen. Hilfreich ist hier, dass man diese nicht mühsam über die Eingabemaske einpflegen muss, sondern einfach eine CSV-Vorlage herunterladen kann und diese dann ausgefüllt wieder importieren kann. Mit Excel ist dies dann schnell erledigt.


Landing Pages

Erstellung einer Landing Page

Damit wir die Möglichkeit bekommen zu testen, ob die Nutzer ihre Daten eingeben würden, brauchen wir sogenannte Landing Pages. Diese können beispielsweise aus gefakten Login-Masken oder ähnlichem bestehen. Auf jeden Fall sollten sie vom Design möglichst authentisch wirken.

Vorlagen für Landing Pages gibt es vereinzelt auf GitHub und mehr sind auf Google zu finden. Da diese aber ein heikles Thema ist, findet man dort keine wirklich große Auswahl. Somit ist ein Basis-Wissen in HTML und CSS von Vorteil. Ich persönlich habe meine Vorlagen seit neustem immer mithilfe von KI erstellt. Damit konnte ich bereits sehr gute Ergebnisse erzielen und musste nur wenig Anpassungen vornehmen,

Ist man mit der Seite zufrieden, lässt sich noch festlegen, ob überhaupt Daten gespeichert werden sollen. Wichtig zu erwähnen ist hier, dass die Anwendung Passwörter im Klartext speichert!

Am Ende könnt ihr dann – nachdem Daten eingeben und abgeschickt wurden – eine Weiterleitung zu einer beliebigen Webseite eurer Wahl machen. Um das ganze noch unauffälliger zu gestalten, leite ich die Opfer immer auf die originale Webseite weiter, damit nicht direkt Verdacht geschöpft wird.


E-Mail-Templates

Erstellung einer Vorlage

Nun benötigen wir eine Vorlage für die Generierung der Phishing-Mails. Auch hier gibt es wieder ein sehr hilfreiches Tool. Mit dem "Import Email"-Button, könnt ihr eine bereits erhaltene Mail einfach importieren und im HTML-Editor direkt anpassen.
Optional kann man aber auch einfach mit den bereitgestellten Text- oder HTML-Tools eine eigene Mail bauen. Zusätzlich ist es noch möglich, eigene Bilder oder andere Ressourcen einzubinden, damit diese nicht von fremden Servern geladen werden.

Habt ihr eine E-Mail gebaut oder importiert, geht es daran diese mit den sogenannten "References" zu versehen. Dies sind Platzhalter, welche dann automatisch mit den entsprechenden Werten gefüllt werden. Eine Liste dieser findet ihr hier.
Ich gehe dann immer durch die gesamte Mail und ersetzte alle Links durch die Variable: {{.URL}}. Dies sorgt dafür, dass man in jedem Fall zu unserer Landing Page gelangt.
Die Mails kann man dann beliebig weiter personalisieren. So ist eine direkte Ansprache oder die Erwähnung der Position ebenfalls möglich.
Schlussendlich kann man das oben erwähnte Zähl-Pixel an eine gewünschte Stelle platzieren.


Anhang-Tracking

Eine ganz eigene Funktion ist das Tracking von Anhängen. Durch die Anregungen in der Dokumentation von GoPhish lassen sich hier interessante Szenarien kreieren.
Das erste Beispiel ist eine einfache Textdatei, in welcher lediglich steht, man solle den Link doch in seine Browserzeile kopieren. Zugegeben, darauf fällt sicher nicht mehr jeder herein, aber es gibt ja immer wieder Überraschungen.
Ein anderes Beispiel wäre die .ICS-Datei (Termin-Datei). Mithilfe dieser können Termine direkt in den eigenen Kalender importiert werden. Hier nutzen wir, dass diese ebenfalls mit schädlichen Links versehen werden können.

BEGIN:VCALENDAR
DTSTAMP:20210306T182251Z
DTSTART;TZID=Europe/London:20210306T183000
DTEND;TZID=Europe/London:20210306T190000
SUMMARY:Gophish Test Calendar
TZID:Europe/London
DESCRIPTION:Glenn  is inviting you to a Zoom meeting.
 n\nJoin Zoom Meeting\n{{.URL}}
LOCATION:{{.URL}}
END:VCALENDAR

Wie man sehen kann, befindet sich in der Beschreibung des Termins der GoPhish-Platzhalter für unser Link.

Die Spitze des Anhang-Trackings sind aber die Office-Dokumente. Es ist bereits seit Jahren bekannt, dass Office-Dokumente aus dem Netz durchaus Schadware enthalten können. Neben dem Tracken, ob diese geöffnet wurden, ist es möglich das Ausführen von Makros zu überwachen. Mehr dazu hier.


Kampagnen

Erstellung der Kampagne

Jede Kampagne beginnt mit einer Bezeichnung. Mein Benennungs-Schema habe ich wie folgt festgelegt:
[Name der Kampagne] - [Betreffende Gruppe]

Dann wählt ihr das entsprechende E-Mail-Template aus, bestimmt die dazu passende Landing Page und gebt die URL oder IP ein, auf welcher die Landing Page gehostet wird.

⚠️
Hier wird es etwas komplexer:
Wenn ihr eine IP angebt, werden eure Opfer auf diese weitergeleitet und sehen diese in ihrer Browser-Leiste. Als wäre dies nicht schon ein wenig auffällig, kommen dann noch diverse Browser-Warnmeldungen dazu, die das ganze nicht seriöser aussehen lassen.

Für diese Art von Tests lohnt sich dann schon eine Domain, damit ihr ein SSL-Zertifikat für die sichere Verbindung erhaltet. Hier sollte man aber noch erwähnen, dass SSL für IPs langsam anläuft und Let's Encrypt bereits anfängt, die ersten IP-Zertifikate auszustellen. Mehr dazu hier. Trotzdem sieht die Domain – je nach Wahl – doch unauffälliger aus. Davon abzuraten ist, einen markenrechtlich geschützten Namen nachzuahmen, da dies zu bösen rechtlichen Konsequenzen führen könnte.

Dann wird festgelegt, wann die Kampagne startet und optional über welchen Zeitraum die E-Mails versendet werden. Ich wähle hier meistens 48h, damit sich die Opfer nicht sofort austauschen.

Zum Schluss wird noch das passende Sending Profile ausgewählt und die Zielgruppe bestimmt. Nun ist die Kampagne fertig und bereit für den Start.


WebHooks

Erstellung eines WebHooks

Optional ist es noch möglich, sich via externer Software über etwaige Events informieren zu lassen.


Account Settings

Versteckt in den Account Settings verbergen sich die "Reporting Settings"

In den Account Settings verbirgt sich neben der Neuvergabe des Passworts und dem Auslesen des API-Keys noch eine interessante Funktion:
Die "Reporting Settings" ermöglichen die Eingabe von IMAP-Daten für einen Mail-Account. Das Postfach dieses Accounts wird dann nach den versendeten Spam-Mails durchsucht. Wird eine solche erkannt, wird die meldende Person in der Software markiert. Dazu lässt sich noch festlegen, ob diese nach Erkennung automatisch gelöscht werden sollen.

Fazit

Etwas eingerostet, aber in seinem Umfang überzeugend

GoPhish ist eines von vielen Projekten dieser Art, aber eines der Letzten, die noch aktiv (aber langsam) entwickelt werden. Sie mag etwas alt und in die Jahre gekommen sein, funktioniert aber noch einwandfrei. Für die Zukunft wäre es schön, wenn die UI mal ein Update bekommen würde. Da es ja auf GitHub bereitgestellt wird, findet sich dafür vielleicht eines Tages mal jemand.

Schlussendlich ist die Software für diesen nischigen Zweck ziemlich umfangreich und bietet die passende selbst-hostbare Lösung.


🙋‍♂️
Ich würde mich sehr freuen, wenn du den Artikel über das Feedback-Tool unten rechts bewertest. Deine Anregungen, Kritik oder sonstige Hinweise sind herzlich willkommen und helfen mir, die Inhalte weiter zu verbessern.