105 lines
5.4 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 napadi u phishingu
{{#include ../../banners/hacktricks-training.md}}
## Pregled
Homograf (poznat i kao homoglif) napad koristi činjenicu da su mnoge **Unicode tačke kodova iz ne-latinskih pisama vizuelno identične ili ekstremno slične ASCII karakterima**. Zamenom jednog ili više latiničnih karaktera sa njihovim vizuelno sličnim ekvivalentima, napadač može kreirati:
* Imena prikazivanja, teme ili sadržaje poruka koji izgledaju legitimno ljudskom oku, ali zaobilaze detekciju zasnovanu na ključnim rečima.
* Domene, poddomene ili URL putanje koje obmanjuju žrtve da veruju da posećuju pouzdanu stranicu.
Pošto je svaki glif interno identifikovan svojom **Unicode tačkom kodova**, jedna zamenjena karaktera je dovoljna da pobedi naivne poređenja stringova (npr., `"Παypal.com"` naspram `"Paypal.com"`).
## Tipičan phishing radni tok
1. **Kreirajte sadržaj poruke** Zamenite specifična latinična slova u imitujućem brendu / ključnoj reči sa vizuelno neodvojivim karakterima iz drugog pisma (grčko, ćirilično, armensko, čeroki itd.).
2. **Registrujte podržavajuću infrastrukturu** Opcionalno registrujte homoglif domenu i dobijte TLS sertifikat (većina CA ne vrši vizuelne provere sličnosti).
3. **Pošaljite email / SMS** Poruka sadrži homoglife na jednom ili više od sledećih mesta:
* Ime pošiljaoca (npr., `Ηеlрdеѕk`)
* Tema (`Urgеnt Аctіon Rеquіrеd`)
* Tekst hiperveze ili potpuno kvalifikovano ime domena
4. **Lanac preusmeravanja** Žrtva se preusmerava kroz naizgled benigni veb sajtove ili skraćivače URL-a pre nego što stigne na zloćudni host koji prikuplja akreditive / isporučuje malver.
## Unicode opsezi koji se često zloupotrebljavaju
| Pismo | Opseg | Primer glifa | Izgleda kao |
|---------|--------------|---------------|-------------|
| Grčko | U+0370-03FF | `Η` (U+0397) | Latinski `H` |
| Grčko | U+0370-03FF | `ρ` (U+03C1) | Latinski `p` |
| Ćirilično| U+0400-04FF | `а` (U+0430) | Latinski `a` |
| Ćirilično| U+0400-04FF | `е` (U+0435) | Latinski `e` |
| Armensko| U+0530-058F | `օ` (U+0585) | Latinski `o` |
| Čeroki | U+13A0-13FF | `` (U+13A2) | Latinski `T` |
> Savet: Puni Unicode grafikoni su dostupni na [unicode.org](https://home.unicode.org/).
## Tehnike detekcije
### 1. Inspekcija mešanih pisama
Phishing emailovi usmereni na organizacije koje govore engleski jezik retko bi trebali mešati karaktere iz više pisama. Jedna jednostavna, ali efikasna heuristika je:
1. Iterirati kroz svaki karakter inspektovanog stringa.
2. Mapirati tačku koda na njen Unicode blok.
3. Podignuti alarm ako je prisutno više od jednog pisma **ili** ako se ne-latinska pisma pojavljuju gde se ne očekuju (ime prikazivanja, domen, tema, URL itd.).
Python dokaz koncepta:
```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 Normalizacija (Domeni)
Međunarodni domeni (IDN) su kodirani sa **punycode** (`xn--`). Konvertovanje svake hostname u punycode i zatim nazad u Unicode omogućava upoređivanje sa belom listom ili izvođenje provere sličnosti (npr., Levenshtein razdaljina) **nakon** što je string normalizovan.
```python
import idna
hostname = "Ρаypal.com" # Greek Rho + Cyrillic a
puny = idna.encode(hostname).decode()
print(puny) # xn--yl8hpyal.com
```
### 3. Homoglyph Rječnici / Algoritmi
Alati kao što su **dnstwist** (`--homoglyph`) ili **urlcrazy** mogu enumerisati vizuelno slične permutacije domena i korisni su za proaktivno uklanjanje / praćenje.
## Prevencija i Ublažavanje
* Sprovodite stroge DMARC/DKIM/SPF politike sprečite lažiranje sa neovlašćenih domena.
* Implementirajte logiku detekcije iznad u **Secure Email Gateways** i **SIEM/XSOAR** priručnicima.
* Obeležite ili karantinišite poruke gde se domen prikazanog imena ≠ domen pošiljaoca.
* Obrazujte korisnike: kopirajte i nalepite sumnjiv tekst u Unicode inspektor, pređite mišem preko linkova, nikada ne verujte skraćenicama URL-a.
## Primeri iz Stvarnog Sveta
* Prikazano ime: `Сonfidеntiаl ikеt` (Ćirilica `С`, `е`, `а`; Čeroki ``; Latinska mala velika ``).
* Lanac domena: `bestseoservices.com` ➜ opštinski `/templates` direktorijum ➜ `kig.skyvaulyt.ru` ➜ lažni Microsoft prijavni ekran na `mlcorsftpsswddprotcct.approaches.it.com` zaštićen prilagođenim OTP CAPTCHA.
* Impersonacija Spotify-a: `Sρօtifւ` pošiljalac sa linkom skrivenim iza `redirects.ca`.
Ovi uzorci potiču iz istraživanja Unit 42 (jul 2025) i ilustruju kako se zloupotreba homografa kombinuje sa preusmeravanjem URL-a i izbegavanjem CAPTCHA kako bi se zaobišla automatska analiza.
## Reference
- [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}}