Homoglyphen Angriff

reinhard@finalmedia.de Mon 20 Jan 2025 11:15:52 PM CET

Dies ist eine kleine Awareness/Cybersicherheits-Schulung über Phishing mittels Homoglyphen Angriff, wie ich sie auch hier demonstriere.

Was sind Homoglyphen?

Homoglyphen sind Zeichen, die sich zum Verwechseln ähnlich sehen. Es sind technisch völlig andere Zeichen mit anderem Zeichencode und anderer Bedeutung, obwohl sie optisch oft nur winzige Unterschiede aufweisen, die man in der Eile leicht übersieht. Für einen Computer haben sie daher aber eine ganz andere Bedeutung, denn dieser "sieht" nicht die optische Repräsentation sondern immer nur den Code.

Warum sind diese potentiell gefährlich?

Als Angreifer kann man sich diese Täuschung zu nutze machen, indem man Links erzeugt, die dem eigentlich Link sehr ähnlich sehen, aber auf eine völlig andere Webseiten-Atrappe führen. Auf so einer Webseiten-Atrappe hat man dann z.B. ein Login-Portal nachgebaut, um Daten abzugreifen. Also man nutzt dies im klassischen Phishing. Ziel des Angriffs ist also nicht der Computer, sondern der Mensch.

Hier ein Beispiel:

Das Original

Ein Homoglyphen Nachbau

Es sieht für den Otto-Normal-Nutzer so aus, als wäre da unterhalb des n einfach ein kleiner Dreckfussel am Bildschirm. Ist es aber nicht. Es kein "n", sondern das Unicode Zeichen "ņ", also der lateinische Kleinbuchstabe N mit Cedille, codiert in 0xC5 0x86.

Und damit lässt sich dank punycode und IDN die Domain xn--fialmedia-wvb.de encodieren und separat registrieren. Natürlich lässt sich dann auch X509 Zertifikat erstellen und damit mehr Sicherheit suggerieren.

Dem unachtsamen Nutzer fällt dies nicht auf. Er sieht das vermeintlich sichere Schloß neben dem Domain-Namen und findet "Alles ist in Ordnung". Es ist doppelt gefährlich, da man den Link auch noch verschleiern kann, indem man im Link-Text die korrekte Domain angibt, und nur im Ziel die IDN Homoglyphen Domain. Dann sieht man zwar die Linkvorschau, achtet jedoch in den seltensten Fällen darauf, dass dort ein kleines Zusatzpixel an Dreck zu sehen ist. Siehe an diesem Phishing Beispiel https://finalmedia.de - Fahre mit der Maus darüber und beachte die Statusleiste.

Wenn dein Browser sicherheitstechnisch optimiert ist, zeigt er dir im Hover den Link als punycode an und du siehst direkt die Falle. Ansonsten zeigt dein Browser dir den Link mit dem kleinen Cedille an - und das kannst du sehr leicht übersehen.

Mitigation im Browser

Also was tun, sprach Zeus? Einfach im Browser (Hier beispielsweise Firefox) die IDN Interpretation abschalten und stattdessen den Punycode "plain" anzeigen lassen. Denn dann fällt es sofort auf. Also unter about:config nach "idn" suchen und dann Feld auf "true" stellen:

Danach sieht man alle IDN Domains direkt als punycode und erkennt auch einen Angriffsversuch, da auch die Linkvorschau den Punycode anzeigt und nicht den bereits interpretierten IDN Namen:

Das Ergebnis

Solved?

Zumindest für IDN Homoglyphen ist es damit gelöst. Allerdings kannst du auch konventionell mit ASCII Zeichen täuschen, Vertipp-Domains verwenden, also z.B. statt finalmedia.de ein finalnedia.de die sich zudem sehr ähnlich sehen. Dies ist auch im obigen Awareness Schulungs-Beispiel genannt.

Details

Kann ich bei DE Domains alle Unicode Zeichen in punycode in Domains codieren?

DNS unterstützt das, ja. Also für Spoofing sind ganz Tolle Einträge möglich, gerade mit Bindestrich, Geviertelstrich, Gedankenstrich, Minus Zeichen in Domains. Diese sind aber keine von der DENIC gestatteten Zeichen.

Also bei DE Domain kannst du dennoch viele täuschende Domains mit den offiziell von der Denic erlaubten 93 Unicode Zeichen als punycode bauen und registrieren:

à 	224 	00E0 	Latin small letter a with grave 	Kleiner lateinischer Buchstabe a mit Gravis
ă 	259 	0103 	Latin small letter a with breve 	Kleiner lateinischer Buchstabe a mit Brevis
â 	226 	00E2 	Latin small letter a with circumflex 	Kleiner lateinischer Buchstabe a mit Zirkumflex
å 	229 	00E5 	Latin small letter a with ring above 	Kleiner lateinischer Buchstabe a mit Ring oben
ä 	228 	00E4 	Latin small letter a with diaeresis 	Kleiner lateinischer Buchstabe a mit Diärese (= Umlaut ä)
ã 	227 	00E3 	Latin small letter a with tilde 	Kleiner lateinischer Buchstabe a mit Tilde
ą 	261 	0105 	Latin small letter a with ogonek 	Kleiner lateinischer Buchstabe a mit Ogonek
ā 	257 	0101 	Latin small letter a with macron 	Kleiner lateinischer Buchstabe a mit Macron
æ 	230 	00E6 	Latin small letter ae 	Kleiner lateinischer Buchstabe ae
ć 	263 	0107 	Latin small letter c with acute 	Kleiner lateinischer Buchstabe c mit Akut
ĉ 	265 	0109 	Latin small letter c with circumflex 	Kleiner lateinischer Buchstabe c mit Zirkumflex
č 	269 	010D 	Latin small letter c with caron 	Kleiner lateinischer Buchstabe c mit Caron
ċ 	267 	010B 	Latin small letter c with dot above 	Kleiner lateinischer Buchstabe c mit Punkt oben
ç 	231 	00E7 	Latin small letter c with cedilla 	Kleiner lateinischer Buchstabe c mit Cedille
ď 	271 	010F 	Latin small letter d with caron 	Kleiner lateinischer Buchstabe d mit Caron
đ 	273 	0111 	Latin small letter d with stroke 	Kleiner lateinischer Buchstabe d mit Querstrich
é 	233 	00E9 	Latin small letter e with acute 	Kleiner lateinischer Buchstabe e mit Akut
è 	232 	00E8 	Latin small letter e with grave 	Kleiner lateinischer Buchstabe e mit Gravis
ĕ 	277 	0115 	Latin small letter e with breve 	Kleiner lateinischer Buchstabe e mit Brevis
ê 	234 	00EA 	Latin small letter e with circumflex 	Kleiner lateinischer Buchstabe e mit Zirkumflex
ě 	283 	011B 	Latin small letter e with caron 	Kleiner lateinischer Buchstabe e mit Caron
ë 	235 	00EB 	Latin small letter e with diaeresis 	Kleiner lateinischer Buchstabe e mit Diärese
ė 	279 	0117 	Latin small letter e with dot above 	Kleiner lateinischer Buchstabe e mit Punkt oben
ę 	281 	0119 	Latin small letter e with ogonek 	Kleiner lateinischer Buchstabe e mit Ogonek
ē 	275 	0113 	Latin small letter e with macron 	Kleiner lateinischer Buchstabe e mit Macron
ğ 	287 	011F 	Latin small letter g with breve 	Kleiner lateinischer Buchstabe g mit Brevis
ĝ 	285 	011D 	Latin small letter g with circumflex 	Kleiner lateinischer Buchstabe g mit Zirkumflex
ġ 	289 	0121 	Latin small letter g with dot above 	Kleiner lateinischer Buchstabe g mit Punkt oben
ģ 	291 	0123 	Latin small letter g with cedilla 	Kleiner lateinischer Buchstabe g mit Cedille
ĥ 	293 	0125 	Latin small letter h with circumflex 	Kleiner lateinischer Buchstabe h mit Zirkumflex
ħ 	295 	0127 	Latin small letter h with stroke 	Kleiner lateinischer Buchstabe h mit Querstrich
í 	237 	00ED 	Latin small letter i with acute 	Kleiner lateinischer Buchstabe i mit Akut
ì 	236 	00EC 	Latin small letter i with grave 	Kleiner lateinischer Buchstabe i mit Gravis
ĭ 	301 	012D 	Latin small letter i with breve 	Kleiner lateinischer Buchstabe i mit Brevis
î 	238 	00EE 	Latin small letter i with circumflex 	Kleiner lateinischer Buchstabe i mit Zirkumflex
ï 	239 	00EF 	Latin small letter i with diaeresis 	Kleiner lateinischer Buchstabe i mit Diärese
ĩ 	297 	0129 	Latin small letter i with tilde 	Kleiner lateinischer Buchstabe i mit Tilde
į 	303 	012F 	Latin small letter i with ogonek 	Kleiner lateinischer Buchstabe i mit Ogonek
ī 	299 	012B 	Latin small letter i with macron 	Kleiner lateinischer Buchstabe i mit Macron
ı 	305 	0131 	Latin small letter dotless i 	Kleiner lateinischer Buchstabe i ohne Punkt
ĵ 	309 	0135 	Latin small letter j with circumflex 	Kleiner lateinischer Buchstabe j mit Zirkumflex
ķ 	311 	0137 	Latin small letter k with cedilla 	Kleiner lateinischer Buchstabe k mit Cedille
ĺ 	314 	013A 	Latin small letter l with acute 	Kleiner lateinischer Buchstabe l mit Akut
ľ 	318 	013E 	Latin small letter l with caron 	Kleiner lateinischer Buchstabe l mit Caron
ļ 	316 	013C 	Latin small letter l with cedilla 	Kleiner lateinischer Buchstabe l mit Cedille
ł 	322 	0142 	Latin small letter l with stroke 	Kleiner lateinischer Buchstabe l mit Querstrich
ń 	324 	0144 	Latin small letter n with acute 	Kleiner lateinischer Buchstabe n mit Akut
ň 	328 	0148 	Latin small letter n with caron 	Kleiner lateinischer Buchstabe n mit Caron
ñ 	241 	00F1 	Latin small letter n with tilde 	Kleiner lateinischer Buchstabe n mit Tilde
ņ 	326 	0146 	Latin small letter n with cedilla 	Kleiner lateinischer Buchstabe n mit Cedille
ŋ 	331 	014B 	Latin small letter eng 	Kleiner lateinischer Buchstabe Eng
ó 	243 	00F3 	Latin small letter o with acute 	Kleiner lateinischer Buchstabe o mit Akut
ò 	242 	00F2 	Latin small letter o with grave 	Kleiner lateinischer Buchstabe o mit Gravis
ŏ 	335 	014F 	Latin small letter o with breve 	Kleiner lateinischer Buchstabe o mit Brevis
ô 	244 	00F4 	Latin small letter o with circumflex 	Kleiner lateinischer Buchstabe o mit Zirkumflex
ö 	246 	00F6 	Latin small letter o with diaeresis 	Kleiner lateinischer Buchstabe o mit Diärese (= Umlaut ö)
ő 	337 	0151 	Latin small letter o with double acute 	Kleiner lateinischer Buchstabe o mit Doppel-Akut
õ 	245 	00F5 	Latin small letter o with tilde 	Kleiner lateinischer Buchstabe o mit Tilde
ø 	248 	00F8 	Latin small letter o with stroke 	Kleiner lateinischer Buchstabe o mit Querstrich
ō 	333 	014D 	Latin small letter o with macron 	Kleiner lateinischer Buchstabe o mit Macron
œ 	339 	0153 	Latin small ligature oe 	Kleine lateinische Ligatur oe
ĸ 	312 	0138 	Latin small letter kra 	Kleiner lateinischer Buchstabe Kra
ŕ 	341 	0155 	Latin small letter r with acute 	Kleiner lateinischer Buchstabe r mit Akut
ř 	345 	0159 	Latin small letter r with caron 	Kleiner lateinischer Buchstabe r mit Caron
ŗ 	343 	0157 	Latin small letter r with cedilla 	Kleiner lateinischer Buchstabe r mit Cedille
ś 	347 	015B 	Latin small letter s with acute 	Kleiner lateinischer Buchstabe s mit Akut
ŝ 	349 	015D 	Latin small letter s with circumflex 	Kleiner lateinischer Buchstabe s mit Zirkumflex
š 	353 	0161 	Latin small letter s with caron 	Kleiner lateinischer Buchstabe s mit Caron
ş 	351 	015F 	Latin small letter s with cedilla 	Kleiner lateinischer Buchstabe s mit Cedille
ß 	223 	00DF 	Latin small letter sharp s 	Kleiner lateinischer Buchstabe ß
ť 	357 	0165 	Latin small letter t with caron 	Kleiner lateinischer Buchstabe t mit Caron
ţ 	355 	0163 	Latin small letter t with cedilla 	Kleiner lateinischer Buchstabe t mit Cedille
ŧ 	359 	0167 	Latin small letter t with stroke 	Kleiner lateinischer Buchstabe t mit Querstrich
ú 	250 	00FA 	Latin small letter u with acute 	Kleiner lateinischer Buchstabe u mit Akut
ù 	249 	00F9 	Latin small letter u with grave 	Kleiner lateinischer Buchstabe u mit Gravis
ŭ 	365 	016D 	Latin small letter u with breve 	Kleiner lateinischer Buchstabe u mit Brevis
û 	251 	00FB 	Latin small letter u with circumflex 	Kleiner lateinischer Buchstabe u mit Zirkumflex
ů 	367 	016F 	Latin small letter u with ring above 	Kleiner lateinischer Buchstabe u mit Ring oben
ü 	252 	00FC 	Latin small letter u with diaeresis 	Kleiner lateinischer Buchstabe u mit Diärese (= Umlaut ü)
ű 	369 	0171 	Latin small letter u with double acute 	Kleiner lateinischer Buchstabe u mit Doppel-Akut
ũ 	361 	0169 	Latin small letter u with tilde 	Kleiner lateinischer Buchstabe u mit Tilde
ų 	371 	0173 	Latin small letter u with ogonek 	Kleiner lateinischer Buchstabe u mit Ogonek
ū 	363 	016B 	Latin small letter u with macron 	Kleiner lateinischer Buchstabe u mit Macron
ŵ 	373 	0175 	Latin small letter w with circumflex 	Kleiner lateinischer Buchstabe w mit Zirkumflex
ý 	253 	00FD 	Latin small letter y with acute 	Kleiner lateinischer Buchstabe y mit Akut
ŷ 	375 	0177 	Latin small letter y with circumflex 	Kleiner lateinischer Buchstabe y mit Zirkumflex
ÿ 	255 	00FF 	Latin small letter y with diaeresis 	Kleiner lateinischer Buchstabe y mit Diärese
ź 	378 	017A 	Latin small letter z with acute 	Kleiner lateinischer Buchstabe z mit Akut
ž 	382 	017E 	Latin small letter z with caron 	Kleiner lateinischer Buchstabe z mit Caron
ż 	380 	017C 	Latin small letter z with dot above 	Kleiner lateinischer Buchstabe z mit Punkt oben
ð 	240 	00F0 	Latin small letter eth 	Kleiner lateinischer Buchstabe Eth
þ 	254 	00FE 	Latin small letter thorn 	Kleiner lateinischer Buchstabe Thorn

Und natürlich kannst du diese auch registrieren, um deine eigenen Domains vor solchen Angriffen zu schützen. Dann kann sie zumindest kein Dritter registrieren.