Attacchi Homograph / Homoglyph nel Phishing
Reading time: 5 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Panoramica
Un attacco homograph (noto anche come homoglyph) sfrutta il fatto che molti punti di codice Unicode di script non latini sono visivamente identici o estremamente simili ai caratteri ASCII. Sostituendo uno o più caratteri latini con i loro omologhi visivamente simili, un attaccante può creare:
- Nomi di visualizzazione, soggetti o corpi di messaggi che sembrano legittimi all'occhio umano ma eludono le rilevazioni basate su parole chiave.
- Domini, sottodomini o percorsi URL che ingannano le vittime facendole credere di visitare un sito fidato.
Poiché ogni glifo è identificato internamente dal suo punto di codice Unicode, un singolo carattere sostituito è sufficiente per sconfiggere confronti di stringhe naïve (ad es., "Παypal.com"
vs. "Paypal.com"
).
Flusso di Lavoro Tipico del Phishing
- Creare il contenuto del messaggio – Sostituire lettere latine specifiche nel marchio / parola chiave impersonata con caratteri visivamente indistinguibili di un altro script (greco, cirillico, armeno, cherokee, ecc.).
- Registrare l'infrastruttura di supporto – Registrare facoltativamente un dominio homoglyph e ottenere un certificato TLS (la maggior parte delle CA non esegue controlli di somiglianza visiva).
- Inviare email / SMS – Il messaggio contiene homoglyph in uno o più dei seguenti luoghi:
- Nome visualizzato del mittente (ad es.,
Ηеlрdеѕk
) - Oggetto (
Urgеnt Аctіon Rеquіrеd
) - Testo del collegamento ipertestuale o nome di dominio completamente qualificato
- Catena di reindirizzamento – La vittima viene reindirizzata attraverso siti web apparentemente benigni o accorciatori di URL prima di atterrare sull'host malevolo che raccoglie credenziali / distribuisce malware.
Intervalli Unicode Comunemente Sfruttati
Script | Intervallo | Glifo di esempio | Sembra |
---|---|---|---|
Greco | U+0370-03FF | Η (U+0397) | Latino H |
Greco | U+0370-03FF | ρ (U+03C1) | Latino p |
Cirillico | U+0400-04FF | а (U+0430) | Latino a |
Cirillico | U+0400-04FF | е (U+0435) | Latino e |
Armeno | U+0530-058F | օ (U+0585) | Latino o |
Cherokee | U+13A0-13FF | Ꭲ (U+13A2) | Latino T |
Suggerimento: Le tabelle Unicode complete sono disponibili su unicode.org.
Tecniche di Rilevamento
1. Ispezione di Script Misti
Le email di phishing destinate a un'organizzazione di lingua inglese dovrebbero raramente mescolare caratteri di più script. Un'euristica semplice ma efficace è:
- Iterare ogni carattere della stringa ispezionata.
- Mappare il punto di codice al suo blocco Unicode.
- Sollevare un avviso se è presente più di uno script o se appaiono script non latini dove non sono attesi (nome visualizzato, dominio, soggetto, URL, ecc.).
Prova di concetto in Python:
import unicodedata as ud
from collections import defaultdict
SUSPECT_FIELDS = {
"display_name": "Ηоmоgraph Illusion", # example data
"subject": "Finаnꮯiа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. Normalizzazione Punycode (Domini)
I nomi di dominio internazionalizzati (IDN) sono codificati con punycode (xn--
). Convertire ogni nome host in punycode e poi tornare a Unicode consente di confrontare con una lista bianca o eseguire controlli di somiglianza (ad es., distanza di Levenshtein) dopo che la stringa è stata normalizzata.
import idna
hostname = "Ρаypal.com" # Greek Rho + Cyrillic a
puny = idna.encode(hostname).decode()
print(puny) # xn--yl8hpyal.com
3. Dizionari / Algoritmi di Omoglyph
Strumenti come dnstwist (--homoglyph
) o urlcrazy possono enumerare permutazioni di dominio visivamente simili e sono utili per azioni proattive di rimozione / monitoraggio.
Prevenzione e Mitigazione
- Applicare politiche DMARC/DKIM/SPF rigorose – prevenire lo spoofing da domini non autorizzati.
- Implementare la logica di rilevamento sopra in Secure Email Gateways e SIEM/XSOAR playbook.
- Segnalare o mettere in quarantena i messaggi in cui il dominio del nome visualizzato ≠ dominio del mittente.
- Educare gli utenti: copiare e incollare testo sospetto in un ispezionatore Unicode, passare il mouse sui link, non fidarsi mai degli accorciatori di URL.
Esempi del Mondo Reale
- Nome visualizzato:
Сonfidеntiаl Ꭲiꮯkеt
(CirillicoС
,е
,а
; CherokeeᎢ
; maiuscolo latinoꮯ
). - Catena di dominio:
bestseoservices.com
➜ directory municipale/templates
➜kig.skyvaulyt.ru
➜ falso login Microsoft sumlcorsftpsswddprotcct.approaches.it.com
protetto da CAPTCHA OTP personalizzato. - Impersonificazione di Spotify: mittente
Sρօtifւ
con link nascosto dietroredirects.ca
.
Questi campioni provengono dalla ricerca di Unit 42 (luglio 2025) e illustrano come l'abuso di omografi sia combinato con la redirezione URL e l'evasione CAPTCHA per bypassare l'analisi automatizzata.
Riferimenti
- The Homograph Illusion: Not Everything Is As It Seems
- Unicode Character Database
- dnstwist – domain permutation engine
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.