GoPhish: Self-Hosted Phishing-Simulationen

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.
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

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

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

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

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:VCALENDARWie 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

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.
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

Optional ist es noch möglich, sich via externer Software über etwaige Events informieren zu lassen.
Account 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.