mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
105 lines
5.4 KiB
Markdown
105 lines
5.4 KiB
Markdown
# 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а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. 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 Ꭲiꮯkе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}}
|