5.6 KiB
Attacchi Homograph / Homoglyph nel Phishing
{{#include ../../banners/hacktricks-training.md}}
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.comprotetto 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
{{#include ../../banners/hacktricks-training.md}}