mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
105 lines
5.7 KiB
Markdown
105 lines
5.7 KiB
Markdown
# Ataques de Homógrafos / Homoglifos em Phishing
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Visão Geral
|
||
|
||
Um ataque homógrafo (também conhecido como homoglyph) explora o fato de que muitos **pontos de código Unicode de scripts não latinos são visualmente idênticos ou extremamente semelhantes a caracteres ASCII**. Ao substituir um ou mais caracteres latinos por seus equivalentes visualmente semelhantes, um atacante pode criar:
|
||
|
||
* Nomes de exibição, assuntos ou corpos de mensagem que parecem legítimos para o olho humano, mas contornam detecções baseadas em palavras-chave.
|
||
* Domínios, subdomínios ou caminhos de URL que enganam as vítimas, fazendo-as acreditar que estão visitando um site confiável.
|
||
|
||
Como cada glifo é identificado internamente pelo seu **ponto de código Unicode**, um único caractere substituído é suficiente para derrotar comparações de strings ingênuas (por exemplo, `"Παypal.com"` vs. `"Paypal.com"`).
|
||
|
||
## Fluxo de Trabalho Típico de Phishing
|
||
|
||
1. **Criar conteúdo da mensagem** – Substituir letras latinas específicas na marca / palavra-chave impersonada por caracteres visualmente indistinguíveis de outro script (grego, cirílico, armênio, cherokee, etc.).
|
||
2. **Registrar infraestrutura de suporte** – Opcionalmente, registrar um domínio homoglyph e obter um certificado TLS (a maioria das CAs não faz verificações de similaridade visual).
|
||
3. **Enviar e-mail / SMS** – A mensagem contém homógrafos em uma ou mais das seguintes localizações:
|
||
* Nome de exibição do remetente (por exemplo, `Ηеlрdеѕk`)
|
||
* Linha de assunto (`Urgеnt Аctіon Rеquіrеd`)
|
||
* Texto do hyperlink ou nome de domínio totalmente qualificado
|
||
4. **Cadeia de redirecionamento** – A vítima é redirecionada através de sites aparentemente benignos ou encurtadores de URL antes de aterrissar no host malicioso que coleta credenciais / entrega malware.
|
||
|
||
## Faixas de Unicode Comumente Abusadas
|
||
|
||
| Script | Faixa | Glifo de exemplo | Parece com |
|
||
|--------|-------|------------------|------------|
|
||
| Grego | U+0370-03FF | `Η` (U+0397) | Latino `H` |
|
||
| Grego | U+0370-03FF | `ρ` (U+03C1) | Latino `p` |
|
||
| Cirílico | U+0400-04FF | `а` (U+0430) | Latino `a` |
|
||
| Cirílico | U+0400-04FF | `е` (U+0435) | Latino `e` |
|
||
| Armênio | U+0530-058F | `օ` (U+0585) | Latino `o` |
|
||
| Cherokee | U+13A0-13FF | `Ꭲ` (U+13A2) | Latino `T` |
|
||
|
||
> Dica: Gráficos completos de Unicode estão disponíveis em [unicode.org](https://home.unicode.org/).
|
||
|
||
## Técnicas de Detecção
|
||
|
||
### 1. Inspeção de Script Misto
|
||
|
||
E-mails de phishing direcionados a uma organização de língua inglesa raramente devem misturar caracteres de múltiplos scripts. Uma heurística simples, mas eficaz, é:
|
||
|
||
1. Iterar cada caractere da string inspecionada.
|
||
2. Mapear o ponto de código para seu bloco Unicode.
|
||
3. Emitir um alerta se mais de um script estiver presente **ou** se scripts não latinos aparecerem onde não são esperados (nome de exibição, domínio, assunto, URL, etc.).
|
||
|
||
Prova de conceito em 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. Normalização Punycode (Domínios)
|
||
|
||
Nomes de Domínio Internacionalizados (IDNs) são codificados com **punycode** (`xn--`). Converter cada nome de host para punycode e depois de volta para Unicode permite a correspondência contra uma lista de permissões ou a realização de verificações de similaridade (por exemplo, distância de Levenshtein) **após** a string ter sido normalizada.
|
||
```python
|
||
import idna
|
||
hostname = "Ρаypal.com" # Greek Rho + Cyrillic a
|
||
puny = idna.encode(hostname).decode()
|
||
print(puny) # xn--yl8hpyal.com
|
||
```
|
||
### 3. Dicionários / Algoritmos de Homógrafos
|
||
|
||
Ferramentas como **dnstwist** (`--homoglyph`) ou **urlcrazy** podem enumerar permutações de domínios visualmente semelhantes e são úteis para remoção / monitoramento proativo.
|
||
|
||
## Prevenção & Mitigação
|
||
|
||
* Aplique políticas rigorosas de DMARC/DKIM/SPF – previna spoofing de domínios não autorizados.
|
||
* Implemente a lógica de detecção acima em **Secure Email Gateways** e **SIEM/XSOAR** playbooks.
|
||
* Marque ou coloque em quarentena mensagens onde o domínio do nome exibido ≠ domínio do remetente.
|
||
* Eduque os usuários: copie e cole texto suspeito em um inspetor de Unicode, passe o mouse sobre links, nunca confie em encurtadores de URL.
|
||
|
||
## Exemplos do Mundo Real
|
||
|
||
* Nome exibido: `Сonfidеntiаl Ꭲiꮯkеt` (Cirílico `С`, `е`, `а`; Cherokee `Ꭲ`; letra minúscula latina `ꮯ`).
|
||
* Cadeia de domínio: `bestseoservices.com` ➜ diretório municipal `/templates` ➜ `kig.skyvaulyt.ru` ➜ login falso da Microsoft em `mlcorsftpsswddprotcct.approaches.it.com` protegido por CAPTCHA OTP personalizado.
|
||
* Impersonação do Spotify: remetente `Sρօtifւ` com link oculto atrás de `redirects.ca`.
|
||
|
||
Esses exemplos originam-se da pesquisa da Unit 42 (julho de 2025) e ilustram como o abuso de homógrafos é combinado com redirecionamento de URL e evasão de CAPTCHA para contornar a análise automatizada.
|
||
|
||
## Referências
|
||
|
||
- [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}}
|