Über dieses Projekt
Hintergrund
Wir bei 0xda7a werden immer wieder gefragt, wie einfach es eigentlich ist, eine Webseite zu "klonen" um dann nach Zugangsdaten zu phishen. Die Fragen kommen meist von Führungskräften, deren Fokus nicht in der IT liegt. Auf unsere Antwort hin, dass es ziemlich einfach ist, das Loginportal der eigenen Plattform zu klonen, entgegnen uns Viele dann mit: "wir haben ja Multi-Faktor, dann kommt der Angreifer ja auch mit gephishtem Passwort noch nicht rein".
Doch dass Einmalcodes per SMS oder E-Mail, TOTP (zeitbasierte Einmalpasswörter, welche meistens in Authenticator Apps generiert werden) oder eigens gebaute Lösungen, bei denen man QR-Codes in der Webseite mit der selbst-programmierten Authenticator-App einscannt, nicht resistent gegen Phishing sind, ist nur den Wenigsten bekannt.
Viele Entwickler wissen mittlerweile, dass Rate-Limiting bei Login-Versuchen sowie bruteforce-resistente Algorithmen beim Hashing von Passwörtern und vernünftige Richtlinien beim Erstellen von Passwörtern eingebaut werden müssen.
Sobald es dann um "Multifaktor-Authentifizierung" geht - entweder, weil es marketingtechnisch gut klingt oder man einen Punkt in der Checkliste eines Frameworks abhaken muss - wird meist die einfachste Lösung eingebaut.
Man greift dann eben zu jenen nicht-phishingresistenten Methoden. Also Methoden, bei denen der zweite Faktor entweder direkt in die Webseite eingegeben wird oder auf einem anderen Gerät bestätigt wird.
Genau da liegt das Problem: diese MFA-Methoden sind komplett unabhängig von der Domain der Webseite. Dadurch kann ein Angreifer einfach einen Proxy auf einer ähnlichen eigenen Domain aufsetzen und das Opfer verleiten, die Seite aufzurufen.
Der Proxy leitet alle Anfragen an die echte Webseite weiter und wartet darauf, dass das Opfer sich einloggt und den MFA-Schritt durchgeführt hat. Die echte Webseite erstellt dann eine authentifizierte Sitzung und schickt Sitzungscookies über den Proxy zum Browser des Opfers. Der Angreifer muss nur die Sitzungscookies mit dem Proxy aufzeichnen und kann diese dann später verwenden, um eine eingeloggte Sitzung des Opfers auf der echten Webseite aufzurufen.
Weitere technische Erklärungen sind hier zu finden: Adversary-in-the-Middle Kits: Was sie sind und was sie so gefährlich macht
Eine Demonstration sagt mehr als tausend Worte - deshalb haben wir dieses Tool programmiert um Webseitenentwicklern und nicht-technischen Personen eine einfache Möglichkeit zur Verfügung zu stellen, um zu testen wie resistent die eigene Webseite gegen moderne Phishing-Methoden ist.
Implementierung
Das gesamte Projekt ist in Rust geschrieben - sowohl der Proxy als auch diese Website.
Als Framework für den Reverse-Proxy kommt Pingora von Cloudflare zum Einsatz.
Sobald ein Nutzer eine Domain zum Testen eingibt, wird eine Sitzung erstellt und die Zielseite über den Proxy ausgeliefert.
Dabei werden Hostnamen on-the-fly aus den HTTP-Responses extrahiert und automatisch auf Subdomains von this-is-not-the-real-web.site gemappt -
also z.B. 1.this-is-not-the-real-web.site auf example.com2.this-is-not-the-real-web.site auf cdn.example.com,
und so weiter.
Dieses Domain-Mapping wird dann verwendet, um die Domains in den Anfragen und Antworten zwischen dem Browser und dem Proxy, sowie zwischen dem Proxy und der echten Website, zu ersetzen.
Zusätzlich werden diverse sicherheitsrelevante Header entfernt oder angepasst, damit der Browser die geproxte Seite auch tatsächlich anzeigt.
Um Missbrauch zu verhindern, ist jede Proxy-Sitzung an einen Cookie, die Client-IP und den TLS-Fingerprint (JA4) des Besuchers gebunden.
Auf diese Weise können wir den Client eindeutig identifizieren und immer das richtige Domain-Mapping auswählen.
Alle Subdomains von this-is-not-the-real-web.site werden so über die einzelnen Sitzungen gemultiplext:
Bei einem Nutzer kann 1.this-is-not-the-real-web.site auf google.com zeigen, während dieselbe Subdomain bei einem anderen Besucher auf duckduckgo.com verweist.
Die Website selbst ist mit Leptos gebaut - einem Webframework für Rust.
Kontakt
Fragen, Feedback oder Sicherheitsbedenken? Schreiben Sie an hello@0xda7a.com.