mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
105 lines
5.6 KiB
Markdown
105 lines
5.6 KiB
Markdown
# 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
|
||
|
||
1. **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.).
|
||
2. **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).
|
||
3. **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
|
||
4. **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](https://home.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 è:
|
||
|
||
1. Iterare ogni carattere della stringa ispezionata.
|
||
2. Mappare il punto di codice al suo blocco Unicode.
|
||
3. 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:
|
||
```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.
|
||
```python
|
||
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 su `mlcorsftpsswddprotcct.approaches.it.com` protetto da CAPTCHA OTP personalizzato.
|
||
* Impersonificazione di Spotify: mittente `Sρօtifւ` con link nascosto dietro `redirects.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](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}}
|