105 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Homograph / Homoglyph Angriffe im Phishing
{{#include ../../banners/hacktricks-training.md}}
## Übersicht
Ein Homograph (auch Homoglyph) Angriff nutzt die Tatsache aus, dass viele **Unicode-Codepunkte aus nicht-lateinischen Schriften visuell identisch oder extrem ähnlich zu ASCII-Zeichen sind**. Durch das Ersetzen eines oder mehrerer lateinischer Zeichen durch ihre ähnlich aussehenden Gegenstücke kann ein Angreifer:
* Anzeigenamen, Betreffzeilen oder Nachrichteninhalte erstellen, die für das menschliche Auge legitim erscheinen, aber keyword-basierte Erkennungen umgehen.
* Domains, Subdomains oder URL-Pfade erstellen, die Opfer dazu bringen, zu glauben, sie besuchen eine vertrauenswürdige Seite.
Da jedes Glyph intern durch seinen **Unicode-Codepunkt** identifiziert wird, reicht ein einzelnes ersetztes Zeichen aus, um naive String-Vergleiche zu überwinden (z. B. `"Παypal.com"` vs. `"Paypal.com"`).
## Typischer Phishing-Workflow
1. **Nachrichteninhalt erstellen** Ersetzen Sie spezifische lateinische Buchstaben in der impersonierten Marke / dem Schlüsselwort durch visuell nicht unterscheidbare Zeichen aus einer anderen Schrift (Griechisch, Kyrillisch, Armenisch, Cherokee usw.).
2. **Unterstützende Infrastruktur registrieren** Optional eine Homoglyph-Domain registrieren und ein TLS-Zertifikat erhalten (die meisten CAs führen keine visuellen Ähnlichkeitsprüfungen durch).
3. **E-Mail / SMS senden** Die Nachricht enthält Homoglyphen an einem oder mehreren der folgenden Orte:
* Absenderanzeige (z. B. `Ηеlрdеѕk`)
* Betreffzeile (`Urgеnt Аctіon Rеquіrеd`)
* Hyperlink-Text oder vollqualifizierter Domainname
4. **Umleitungs-Kette** Das Opfer wird durch scheinbar harmlose Websites oder URL-Shortener geleitet, bevor es auf dem bösartigen Host landet, der Anmeldeinformationen erntet / Malware liefert.
## Häufig missbrauchte Unicode-Bereiche
| Schrift | Bereich | Beispiel-Glyph | Sieht aus wie |
|--------|-------|---------------|------------|
| Griechisch | U+0370-03FF | `Η` (U+0397) | Latein `H` |
| Griechisch | U+0370-03FF | `ρ` (U+03C1) | Latein `p` |
| Kyrillisch | U+0400-04FF | `а` (U+0430) | Latein `a` |
| Kyrillisch | U+0400-04FF | `е` (U+0435) | Latein `e` |
| Armenisch | U+0530-058F | `օ` (U+0585) | Latein `o` |
| Cherokee | U+13A0-13FF | `` (U+13A2) | Latein `T` |
> Tipp: Vollständige Unicode-Diagramme sind verfügbar unter [unicode.org](https://home.unicode.org/).
## Erkennungstechniken
### 1. Mischschriftinspektion
Phishing-E-Mails, die sich an eine englischsprachige Organisation richten, sollten selten Zeichen aus mehreren Schriften mischen. Eine einfache, aber effektive Heuristik ist es,:
1. Jedes Zeichen des inspizierten Strings zu durchlaufen.
2. Den Codepunkt seinem Unicode-Block zuzuordnen.
3. Eine Warnung auszulösen, wenn mehr als eine Schrift vorhanden ist **oder** wenn nicht-lateinische Schriften an unerwarteten Stellen erscheinen (Anzeigename, Domain, Betreff, URL usw.).
Python Proof-of-Concept:
```python
import unicodedata as ud
from collections import defaultdict
SUSPECT_FIELDS = {
"display_name": "Ηоmоgraph Illusion", # example data
"subject": "Finаniаl Տtatеmеnt",
"url": "https://xn--messageconnecton-2kb.blob.core.windows.net" # punycode
}
for field, value in SUSPECT_FIELDS.items():
blocks = defaultdict(int)
for ch in value:
if ch.isascii():
blocks['Latin'] += 1
else:
name = ud.name(ch, 'UNKNOWN')
block = name.split(' ')[0] # e.g., 'CYRILLIC'
blocks[block] += 1
if len(blocks) > 1:
print(f"[!] Mixed scripts in {field}: {dict(blocks)} -> {value}")
```
### 2. Punycode-Normalisierung (Domains)
Internationalisierte Domainnamen (IDNs) werden mit **punycode** (`xn--`) codiert. Die Umwandlung jedes Hostnamens in Punycode und dann zurück in Unicode ermöglicht das Abgleichen mit einer Whitelist oder das Durchführen von Ähnlichkeitsprüfungen (z. B. Levenshtein-Distanz) **nachdem** der String normalisiert wurde.
```python
import idna
hostname = "Ρаypal.com" # Greek Rho + Cyrillic a
puny = idna.encode(hostname).decode()
print(puny) # xn--yl8hpyal.com
```
### 3. Homoglyph-Wörterbücher / Algorithmen
Tools wie **dnstwist** (`--homoglyph`) oder **urlcrazy** können visuell ähnliche Domain-Permutationen auflisten und sind nützlich für proaktive Abschaltungen / Überwachung.
## Prävention & Minderung
* Strenge DMARC/DKIM/SPF-Richtlinien durchsetzen Spoofing von unautorisierten Domains verhindern.
* Implementieren Sie die oben genannte Erkennungslogik in **Secure Email Gateways** und **SIEM/XSOAR**-Playbooks.
* Nachrichten kennzeichnen oder quarantänisieren, bei denen der Anzeigename-Domain ≠ Absender-Domain.
* Benutzer schulen: Verdächtigen Text in einen Unicode-Inspektor kopieren, Links überfahren, URL-Shortener niemals vertrauen.
## Beispiele aus der Praxis
* Anzeigename: `Сonfidеntiаl ikеt` (Kyrillisch `С`, `е`, `а`; Cherokee ``; lateinisches Kleinbuchstaben ``).
* Domain-Kette: `bestseoservices.com` ➜ kommunales `/templates` Verzeichnis ➜ `kig.skyvaulyt.ru` ➜ gefälschte Microsoft-Anmeldung bei `mlcorsftpsswddprotcct.approaches.it.com`, geschützt durch benutzerdefinierte OTP CAPTCHA.
* Spotify-Imitation: `Sρօtifւ` Absender mit Link, der hinter `redirects.ca` verborgen ist.
Diese Beispiele stammen aus der Forschung von Unit 42 (Juli 2025) und veranschaulichen, wie Homographenmissbrauch mit URL-Umleitung und CAPTCHA-Umgehung kombiniert wird, um automatisierte Analysen zu umgehen.
## Referenzen
- [The Homograph Illusion: Not Everything Is As It Seems](https://unit42.paloaltonetworks.com/homograph-attacks/)
- [Unicode Character Database](https://home.unicode.org/)
- [dnstwist domain permutation engine](https://github.com/elceef/dnstwist)
{{#include ../../banners/hacktricks-training.md}}