# Homographischer Angriff

Homographischer bzw. homografischer Angriff (oder homographisches bzw. homografisches Phishing) ist eine Methode des Spoofing, bei der der Angreifer das ähnliche Aussehen verschiedener Schriftzeichen dazu benutzt, Computernutzern eine falsche Identität vorzutäuschen, insbesondere bei Domains. Der Angreifer lockt den Nutzer zu einem Domainnamen, der fast genauso aussieht wie ein bekannter Domainname, aber woanders hin führt, zum Beispiel zu einer Phishing-Website.
Mit der Einführung internationalisierter Domainnamen steht außer dem ASCII-Zeichensatz eine Vielzahl von Schriften für Domainnamen zur Verfügung, die zum Teil eine Reihe ähnlicher Schriftzeichen enthalten. Damit vervielfachen sich die Möglichkeiten für homographische Angriffe.

## Homographen in ASCII

ASCII enthält Zeichen, die einander ähnlich sehen: Die Ziffer 0 ähnelt dem Buchstaben O, und die Buchstaben l (kleines L) und I (großes i) und die Ziffer 1 ähneln einander. (Solche einander ähnliche oder gleich aussehende Schriftzeichen nennt man Homoglyphen, sie können dazu verwendet werden Homographen zu schreiben, Wörter, die gleich aussehen und doch nicht dasselbe bedeuten.)
Beispiele denkbarer Spoofing-Angriffe sind die Domains G00GLE.COM, die GOOGLE.COM in einigen Fonts ähnlich sieht, oder googIe.com mit großem i, anstelle des kleinen L, das google.com recht ähnlich sieht. PayPal war tatsächlich Ziel eines Phishing-Angriffs, bei dem die Domain PayPaI.com mit großem i verwendet wurde.
Bei manchen Proportionalschriften wie Tahoma (Voreinstellung der Adresszeile bei Windows XP) werden Homographen erzeugt, wenn man ein c vor ein j, l oder i stellt. Das Ergebnis cl ähnelt d, cj ähnelt g, und ci ähnelt a. Das lange s (ſ) ist leicht mit dem f zu verwechseln, aber es wird nun in URLs als „s“ ausgewertet.

## Homographen in internationalisierten Domainnamen

In mehrsprachigen Computersystemen können logisch unterschiedliche Zeichen gleich aussehen. Zum Beispiel kann das Unicode-Zeichen U+0430, der kleine kyrillische Buchstabe a („а“), gleich aussehen wie das Unicode-zeichen U+0061, der kleine lateinische Buchstabe a („a“).
Das Problem entsteht aus der unterschiedlichen Art und Weise, wie die Zeichen vom Bewusstsein des Anwenders und von der Software verarbeitet werden. Aus Anwendersicht ist das kyrillische „а“ innerhalb einer lateinischen Zeichenkette das lateinische „a“. Zwischen den Glyphen für diese Schriftzeichen gibt es in den meisten Fonts keinen Unterschied. Der Computer behandelt die Zeichen jedoch unterschiedlich, wenn er die Zeichenkette als Bezeichner verarbeitet. Die Annahme des Anwenders, dass zwischen dem visuellen Erscheinungsbild des Namens und dem benannten Gegenstand eine eins-zu-eins-Beziehung bestünde, versagt hier.
Mit den internationalisierten Domainnamen steht ein rückwärtskompatibles Verfahren zur Verfügung, um den vollen Unicode-Zeichensatz für Domainnamen zu nutzen. Dieser Standard ist bereits weitgehend umgesetzt. Allerdings erweitert dieses System den Zeichenvorrat von ein paar Dutzend auf viele Tausend Schriftzeichen, wodurch der Spielraum für homographische Angriffe beträchtlich vergrößert wird.
Evgeniy Gabrilovich und Alex Gontmakher vom Technion in Haifa veröffentlichten 2001 einen Aufsatz mit dem Titel The Homograph Attack. Sie beschreiben darin einen Spoofing-Angriff mit Unicode-URLs. Um die Machbarkeit dieser Angriffsmethode zu demonstrieren, registrierten sie erfolgreich eine Abwandlung der Domain microsoft.com, die russische Buchstaben enthielt.
Dass solche Probleme entstehen würden, wurde schon vor der Einführung der IDN vorausgesehen. Es wurden Richtlinien herausgegeben, die die Registries anleiten sollten, das Problem zu vermeiden oder zu verringern. So wurde z. B. empfohlen, dass die Registries nur Schriftzeichen aus dem lateinischen Alphabet und dem ihres eigenen Landes akzeptieren sollten und nicht den kompletten Unicode-Zeichenvorrat. Diese Empfehlung wurde jedoch von bedeutenden Top-Level-Domains missachtet.
Am 7. Februar 2005 berichtete Slashdot, dass dieser Exploit auf dem Hackertreffen Shmoocon offengelegt wurde. Die URL http://www.pаypal.com/, bei der das erste a durch ein kyrillisches а ausgetauscht ist, lenkte Webbrowser, die IDNA unterstützten, zum Schein auf die Website des Bezahldienstes PayPal, dabei wurde in Wirklichkeit aber eine andere Website angesteuert.

### Kyrillisch

Das kyrillische Alphabet wird am häufigsten für homographische Angriffe benutzt. Die kyrillischen Buchstaben а, с, е, о, р, х und у sehen fast oder völlig genau so aus wie die lateinischen Buchstaben a, c, e, o, p, x und y. Die kyrillischen Buchstaben З, Ч und б ähneln den Ziffern 3, 4 und 6.
Kursive Schrifttypen erzeugen weitere Verwechslungsmöglichkeiten: дтпи (дтпи in Normalschrift) ähnelt gmnu (In vielen Fonts ähnelt д jedoch dem Zeichen für partielle Ableitung, ∂).
Wenn Großbuchstaben berücksichtigt werden, dann können ВНКМТ mit BHKMT verwechselt werden, außerdem die großen Versionen der obengenannten kleinen kyrillischen Homographen.
Nichtrussische kyrillische Buchstaben und ihre zur Vertauschung geeigneten Gegenstücke sind һ und h, і und i, ј und j, ѕ und s, Ғ und F. ё und ї können benutzt werden, um ë und ï vorzutäuschen.

### Griechisch

Aus dem Griechischen Alphabet gleichen nur das Omikron ο und manchmal das ny ν einem lateinischen Kleinbuchstaben, wie er in URLs benutzt wird. In kursiven Fonts ähnelt das lateinische a dem griechischen alpha α.
Wenn auch ungefähre Ähnlichkeit zählt, erweitert kommen die griechischen Buchstaben εικηρτυωχγ hinzu, die mit eiknptuwxy verwechselt werden können. Sofern Großbuchstaben verwendet werden, erweitert sich die Liste beträchtlich: Griechisch ΑΒΕΗΙΚΜΝΟΡΤΧΥΖ sieht identisch aus wie lateinisch ABEHIKMNOPTXYZ.
Das griechische beta β kann in einigen Fonts mit dem deutschen „scharfen s“ ß verwechselt werden. Die Codepage 437 von MS-DOS verwendet tatsächlich das ß anstelle des β. Das griechische kleine Sigma ς kann mit dem kleinen lateinischen C mit Cedille ç verwechselt werden.
Die akzentuierten griechische Buchstaben όίά sehen in vielen Fonts óíá täuschend ähnlich, wobei allerdings der dritte Buchstabe, das Alpha, wieder nur bei einigen Kursivfonts dem lateinischen a ähnelt.

### Armenisch

Auch das armenische Alphabet enthält Buchstaben, die sich zum homographischen Angriff eignen: ցհոօզս sieht aus wie ghnoqu, յ ähnelt j (wenngleich es keinen Punkt hat), und ք kann ähnlich wie p oder f aussehen, je nach verwendetem Font. Zwei armenische Buchstaben (Ձշ) können auch der Ziffer 2 ähnlich sehen, und einer (վ) ähnelt manchmal der Ziffer 4.
Allerdings ist die Verwendung des armenischen Alphabets nicht einfach. Die meisten Standardfonts enthalten zwar griechische und kyrillische, aber keine armenischen Zeichen. Deshalb werden armenische Zeichen unter Windows normalerweise in einem besonderen Font (Sylfaen) wiedergegeben, so dass die Vermischung sichtbar wird. Darüber hinaus sind in diesem Font das lateinische g und das armenische ց voneinander verschieden gestaltet.

### Hebräisch

Das hebräische Alphabet wird selten für Spoofing verwendet. Drei seiner Zeichen eignen sich hinreichend dafür: Samech (ס) kann einem o ähneln, Waw mit diakritischem Punkt (וֹ) ähnelt einem i, und Chet (ח) ähnelt einem n. Einige hebräische Buchstaben ähneln anderen Zeichen weniger deutlich und eignen sich daher eher für Foreign Branding als für homographische Angriffe.
Da die hebräische Schrift von rechts nach links geschrieben wird, können Schwierigkeiten auftreten, wenn man sie in bidirektionalem Text mit Zeichen kombiniert, die von links nach rechts geschrieben werden.

### Cherokee

Die Cherokee-Silbenschrift beinhaltet Zeichen, die lateinischen Buchstaben und arabischen Ziffern ähneln. So sind die Zeichenketten ᎠᎡᎢᎥᎩᎪᎫᎬᎳᎵᎷᎻᏀᏃᏎᏒᏔᏚᏞᏟᏢᏦᏭᏮᏴ und DRTiYAJEWPMHGZ4RWSLCPK96B ohne direkte Gegenüberstellung vergleichsweise schwer zu unterscheiden.

## Schutz

Die einfachste Schutzmaßnahme ist die, dass ein Webbrowser IDNA und ähnliche Funktionen nicht unterstützt, bzw., dass der Anwender diese Funktionen seines Browsers abschaltet. Das kann bedeuten, dass der Zugang zu Websites mit internationalisierten Domainnamen (IDN) versperrt wird. Normalerweise ermöglichen die Browser den Zugriff und stellen die URLs in Punycode dar. In beiden Fällen ist die Verwendung von Domainnamen mit Nicht-ASCII-Zeichen versperrt.
Opera stellt IDNs in Punycode dar, es sei denn, die Top-Level-Domain (TLD) wehrt homographische Angriffe dadurch ab, dass sie die in Domainnamen zulässigen Schriftzeichen einschränkt. Der Browser gestattet dem Anwender, von Hand TLDs zur erlaubten Liste hinzuzufügen.
Firefox stellt ab Version 22 (2013) IDNs dar, wenn entweder die TLD die in Domainnamen zulässigen Schriftzeichen einschränkt oder Labels nur aus jeweils einem Schriftsystem stammen. Anderenfalls werden IDNs in Punycode dargestellt.
Internet Explorer 7 lässt IDNs zu, jedoch keine Labels, die Schriftsysteme verschiedener Sprachen miteinander mischen. Solche gemischten Labels werden in Punycode dargestellt. Ausnahmen sind Locales, wo es üblich ist, ASCII-Buchstaben mit lokalen Schriftsystemen vermischt zu verwenden.
Als zusätzliche Schutzvorkehrung enthalten Internet Explorer 7, Firefox 2.0 und darüber, sowie Opera 9.10 Phishing-Filter, die den Anwender zu warnen versuchen, wenn schädliche Websites besucht werden.
Eine mögliche Schutzmethode, die im englischen Sprachraum vorgeschlagen wurde, wäre die, dass Webbrowser Nicht-ASCII-Zeichen in URLs kennzeichnen, etwa durch andersfarbigen Hintergrund. Das würde nicht davor schützen, dass ein Nicht-ASCII-Zeichen durch ein anderes ähnliches Nicht-ASCII-Zeichen ausgetauscht wird (z. B. ein griechisches ο durch ein kyrillisches о). Eine weitergehende Lösung, die diese Schwäche vermeidet, wäre die, für jedes auftretende Schriftsystem eine andere Farbe zu verwenden.
Bestimmte Fonts stellen Homoglyphen unterschiedlich dar und können so dabei helfen, Zeichen zu erkennen, die nicht in eine URL gehören. Zum Beispiel werden in Courier New einige Zeichen unterscheidbar, die in anderen Fonts gleich aussehen. Allerdings ist es bisher für den typischen Anwender noch nicht leicht möglich, den Font der Adresszeile zu wechseln.
Beim Safari ist der Ansatz der, problematische Zeichensätze in Punycode darzustellen. Das kann durch Setzen der Einstellungen in den Systemdateien des Mac OS X geändert werden.
Durch die Einführung der Länderspezifischen Top-Level-Domains (ccTLD) wird das Spoofing erschwert werden. Zum Beispiel wird die zukünftige russische TLD „.рф“ nur kyrillisch geschriebene Domainnamen akzeptieren und keine Vermischung mit lateinischen Buchstaben zulassen. Bei allgemeinen TLDs wie „.com“ bleibt das Problem jedoch bestehen.