Phishing: Wie Angreifer Webseiten fälschen & du dich schützt

Note:
This is a republished blog post written in German and published by me on
April 25, 2017. I originally published this piece on a German company website of which I was a co-owner. Since neither the company nor the website exists anymore, I have republished this piece on my personal blog.

An image displaying symbolic browser windows with the title "Phishing Attacks Misusing Punycode"

Die Fälschung von Webseiten: Ein lukratives Geschäft für Angreifer

Das Fälschen von Webseiten ist ein lukratives Geschäft für Angreifer. Denn wenn es ihnen gelingt, einen Besucher von der Legitimität einer solchen Seite zu überzeugen, können sie Besucher auch dazu verleiten, sensible Informationen wie z.B. Zugangsdaten dort preiszugeben.

Wie manche Angreifer vorgehen

Eine „einfache“ Variante eine Webseite zu fälschen, ist eine Webadresse zu registrieren, die fast genau so geschrieben ist, wie die der zu fälschenden Seite. Im Anschluss kann der Angreifer dann seine gefälschte Webseite optisch so gestalten, dass sie mit der originalen identisch zu sein scheint.

Nehmen wir an, ein Angreifer möchte die Webseite der Sparkasse „sparkasse.de“ fälschen. Um dies zu erreichen, könnte er die Webadresse „sparkase.de“ registrieren und das Design von „sparkasse.de“ kopieren. Im Anschluss kann der Angreifer z.B. darauf warten, dass Sparkassen-Kunden sich bei der Eingabe vertippen und auf seiner Seite landen. Wenn diese den Fehler nicht bemerken und die Zugangsdaten von ihrem Online-Bankkonto dort eingeben, kann der Angreifer die eingegebenen Zugangsdaten speichern und hat damit vollen Zugriff auf das Konto des Besuchers.

Es gibt viele Variationen dieses Vorgehens, aber die meisten teilen denselben Nachteil: Ein wachsamer und vorsichtiger Besucher kann die Fälschung leicht erkennen.

Kaum zu erkennende Fälschungen

Es gibt aber eine Variante dieses Vorgehens, das sich Funktionalitäten von Webbrowsern wie z.B. Google Chrome oder Firefox zu Nutze macht, mit der selbst technikaffine oder sicherheitsbewusste Menschen leicht in die Irre geführt werden können. Diese Variante setzt auf die Tatsache, dass manche Sprachen ähnliche, aber nicht identische Buchstaben haben. Zum Beispiel sieht der lateinische kleine Buchstabe „a“ fast genau so aus wie der kyrillische Buchstabe „а“. Das ist bereits so schon schwer zu erkennen für das bloße Auge, aber erschwerend kommt hinzu, dass manche große Webbrowser eine Schriftart verwenden, welche beide Buchstaben identisch darstellt.

Dies ermöglicht es Angreifern, eine Webadresse zu registrieren, die für den Besucher aussieht wie die offizielle Webadresse „apple.com“ von Apple. Wenn dann noch das Design der beiden Webseiten identisch ist, können auch die erfahrendsten Besucher kaum noch feststellen, welche der beiden nun die offzielle Webadresse ist.

Die Angriffe auf Basis von ähnlich aussehenden Buchstaben verschiedener Sprachen sind bereits seit vielen Jahren unter dem Namen „homographischer Angriff“ bzw. „homographisches Phishing“[1] bekannt. Aber vor wenigen Tagen wurde der breiten Öffentlichkeit ein Beispiel offeriert[2], in dem der Webentwickler Xudong Zheng eine Webadresse registriert hat, die in Google Chrome und Firefox genau so aussieht wie die offizielle Webadresse „apple.com[3] von Apple.

Der technische Hintergrund des homographischen Phishings

Als die Grundsteine des Internets gelegt wurden, waren die Systeme nur darauf ausgelegt, mit den lateinischen Buchstaben oder Satzzeichen und einigen Sonderzeichen auf Basis der Zeichenkodierung ASCII[4] zu arbeiten. Oder gar nur einer Untermenge davon, wie z.B. das Domain Name System (DNS), welches Webadressen zu IP-Adressen auflöst. Im Rahmen der Einführung von internationalisierten Webadressen (wie z.B. münchen.de) auf Basis des internationalen Standards Unicode[5], musste ein Weg gefunden werden, wie internationalisierte Webadressen in bestehenden Systemen dargestellt werden können.

Dies führte zu der Standardisierung des Kodierungsverfahrens „Punycode“[6]. In diesem Verfahren werden Zeichen, die nicht durch die 26 lateinischen Zeichen, die arabischen Ziffern 0-9 oder einem Bindestrich dargestellt werden können, durch eine spezielle Zeichenkette ersetzt. Zum Beispiel wird „München“ mittels Punycode als Zeichenkette „Mnchen-3ya“ kodiert. Damit Systeme erkennen können, ob es sich um eine Punycode-kodierte Zeichenkette handelt, wird solchen Zeichenketten der Präfix „xn--“ vorangestellt. Damit ist die Webadresse „xn--mnchen-3ya.de“ die technische Darstellung der Webadresse „münchen.de“. Beide Varianten führen zur Webadresse „muenchen.de“.

Beide Varianten? Ja. Die Webadresse „münchen.de“ kann ebenfalls im Webbrowser eingegeben werden. Im Hintergrund wandelt der Webbrowser diese Adresse dann in die technische Darstellung um. Webbrowser unterstützen sogar die automatische Umwandlung in beide Richtungen. D.h. wenn die Webadresse „xn--mnchen-3ya.de“ eingegeben wird, zeigen manche Webbrowser stattdessen „münchen.de“ an.

Und genau dieses Verhalten mancher Webbrowser führt dazu, dass identisch aussehende Webadressen registriert werden können. Xudong Zheng demonstrierte dies mit der Webadresse „https://www.xn--80ak6aa92e.com, welche in Google Chrome bis Version 58 und in der aktuellen Version vom Firefox als „https://www.apple.com“ angezeigt wird. Seit Version 58 von Google Chrome wird die o.g. technische Darstellung nicht mehr automatisch umgewandelt[7]. In Version 59 sind weitere Änderungen geplant, um solche Angriffe zu erschweren[8].

Beim Firefox hingegen sieht es aktuell schwieriger aus. Die leitenden Entwickler wollen das Verhalten des Webbrowsers vorerst nicht ändern[9][10].

Die meisten Windows-Nutzer, welche den Internet Explorer oder Microsoft Edge verwenden, sind von diesem Angriff nicht betroffen. Denn diese wandeln die technische Darstellung nur dann um, wenn die zugehörige Sprache (z.B. russisch) installiert ist.

Wie können sich Benutzer von betroffenen Webbrowsern schützen?

Für die meisten Nutzer ist es schwer sich gegen solche Angriffe zu schützen. Am einfachsten ist es, niemals auf Links in unerwarteten E-Mails zu klicken und die Webadresse in die Google-Suche einzugeben und so indirekt die gewünschte Webseite aufzurufen. Google's Suche ist intelligent genug, um häufige Tippfehler zu erkennen. Auch wird gefälschten Webseiten erschwert, eine prominente Position in der Suche zu erhalten.

Ein weitere Möglichkeit ist es, Webadressen vorher in einen Texteditor (z.B. Notepad) zu kopieren und zu prüfen, ob manche Buchstaben ungewöhnlich aussehen. Dieser Ansatz sollte aber nur dann gewählt werden, wenn man Erfahrung mit unterschiedlichen Schriftarten hat und abschätzen kann, wann Zeichen „ungewöhnlich“ aussehen könnten.

Technisch versierte Nutzer haben weiterhin die Möglichkeit, sich die SSL- bzw. TLS-Zertifikate einer Webseite anzuschauen, um die Authentizität einer Webseite zu prüfen. Diese geben Aufschluss darüber, welche Organisation - eine sogenannte Certificate Authority (CA) - die Zertifikate für die Webseite ausgestellt hat. Bei TLS (und seinem Vorgänger SSL) handelt es sich um ein Protokoll zur Verschlüsselung der Kommunikation zwischen Webbrowser und Server. Den meisten Menschen ist dies bekannt als „HTTPS“ oder durch den Begriff „Sicher“ in der Adresszeile des Webbrowsers. Wichtig aber ist zu beachten, dass das bloße Vorhandensein von einem solchen Zertifikat noch nicht die Legitimität einer Webseite beweist.

Solltest du - oder jemanden den du kennst - sich nicht sicher sein, ob eine Webadresse eine Fälschung ist oder nicht, kannst du, diejenige oder derjenige gerne die Webadresse an mich senden und ich prüfe diese kostenfrei.

Stay safe on the internet, and happy coding!

fn1. "Homographischer Angriff": https://de.wikipedia.org/wiki/Homographischer_Angriff

fn2. "Chrome, Firefox, and Opera users beware: This isn’t the apple.com you want": https://arstechnica.com/security/2017/04/chrome-firefox-and-opera-users-beware-this-isnt-the-apple-com-you-want

fn3. "Phishing with Unicode Domains": https://www.xudongz.com/blog/2017/idn-phishing

fn4. "American Standard Code for Information Interchange": https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange

fn5. "Unicode": https://de.wikipedia.org/wiki/Unicode

fn6. "[RFC3492] Punycode": https://tools.ietf.org/html/rfc3492

fn7. "IDN in Google Chrome": https://www.chromium.org/developers/design-documents/idn-in-google-chrome

fn8. "Google Chrome: Bug 683314": https://bugs.chromium.org/p/chromium/issues/detail?id=683314

fn9. "Firefox: Bug 1332714": https://bugzilla.mozilla.org/show_bug.cgi?id=1332714

fn10. "Firefox: IDN Display Algorithm": https://wiki.mozilla.org/IDN_Display_Algorithm

Powered by wisp

Published at 24. April 2017

Share

Tags

Related Posts

Phishing: How Attackers Forge Websites & How to Stay Safe

Phishing: How Attackers Forge Websites & How to Stay Safe

Discover how attackers exploit IDN homograph attacks to spoof websites and steal your data. Learn the risks of similar letters across different languages.

Read more
Discover My New Blog Focused on Coding & Technology!

Discover My New Blog Focused on Coding & Technology!

Explore software development with insights, tutorials, and tools from an experienced developer. Discover resources to enhance your skills at any level!

Read more

For my blog, there is an RSS feed that allows you to easily follow my latest posts. To use the feed, you will need an RSS reader.

Subscribe to my feed and never miss any of my exciting posts again!