# Subdomain Squatting

### 📌 Classificação

* **Categoria:** Ataques de Rede / Infraestrutura / Engenharia Social
* **Protocolo:** DNS (Domain Name System)
* **Tipo:** Typosquatting / Ocupação de nomes / Phishing
* **Impacto:** 🟡 **Médio-Alto** (phishing, roubo de credenciais, reputação)

***

### 🎯 Descrição Geral

**Subdomain Squatting** (ou ocupação de subdomínio) é uma técnica onde o atacante registra subdomínios semelhantes a domínios legítimos, aproveitando-se de erros de digitação, omissões ou confusões comuns dos usuários. O objetivo é redirecionar vítimas para sites maliciosos (phishing, malware, anúncios) ao tentar acessar o domínio original.

```
Usuário digita: admin.paypal.com (correto)
Usuário digita: admim.paypal.com (erro) → atacante possui admim-paypal.com
                                     ↓
                          Site falso captura credenciais
```

#### Analogia

> *"Subdomain Squatting é como abrir uma loja com nome parecido ao lado de uma marca famosa: clientes distraídos entram na loja errada."*

***

### ⚙️ Como Funciona

#### Conceito Básico

1. Atacante identifica domínio legítimo alvo (ex: `paypal.com`)
2. Atacante registra variações comuns de subdomínios (ex: `paypa1.com`, `paypal-security.com`)
3. Usuário comete erro de digitação ou é enganado
4. Usuário acessa o domínio do atacante
5. Atacante apresenta site falso (phishing) ou redireciona

```
Variações comuns:
- paypal.com (legítimo)
- paypa1.com (atacante) - "L" trocado por "1"
- paypal-security.com (atacante) - adição de palavra
- paypal-login.com (atacante) - hífens
- paypall.com (atacante) - letra extra
```

***

### 🔧 Técnicas de Subdomain Squatting

#### 1. Typosquatting (Erros de Digitação)

Registrar variações com erros comuns de digitação.

| Erro                    | Exemplo Legítimo | Exemplo Malicioso           |
| ----------------------- | ---------------- | --------------------------- |
| **Troca de letras**     | google.com       | goolge.com                  |
| **Letra faltando**      | facebook.com     | facebok.com                 |
| **Letra extra**         | amazon.com       | amazoon.com                 |
| **Caractere adjacente** | youtube.com      | youtubr.com (r próximo a e) |
| **Teclado adjacente**   | netflix.com      | netfloc.com (x vs c)        |

#### 2. Bitsquatting (Erros de Hardware)

Explora erros de memória/CPU que trocam bits em endereços.

```
Exemplo: microsoft.com → micr0soft.com (bit flip)
```

#### 3. Homoglyph Attack (Caracteres Visualmente Similares)

Usar caracteres que se parecem com os originais (Unicode homoglyphs).

| Original | Homoglyph    | Aparência                |
| -------- | ------------ | ------------------------ |
| a        | а (cirílico) | a (idêntico visualmente) |
| o        | о (cirílico) | o (idêntico)             |
| e        | е (cirílico) | e (idêntico)             |
| p        | р (cirílico) | p (idêntico)             |

```bash
# Exemplo: apple.com vs аррӏе.com (caracteres cirílicos)
# Visualmente idêntico, mas DNS diferente
```

#### 4. Subdomain Hijacking (Zona Morta)

Aproveitar subdomínios órfãos que ainda têm registros DNS apontando para serviços desativados.

```
1. Empresa usava subdomínio: blog.empresa.com (apontando para Heroku)
2. Empresa desativou o blog, mas esqueceu o registro CNAME
3. Atacante cria app no Heroku com mesmo nome
4. blog.empresa.com agora aponta para o app do atacante
```

**Cenários comuns:**

* Subdomínios apontando para AWS S3 (bucket deletado)
* Subdomínios apontando para GitHub Pages (repo deletado)
* Subdomínios apontando para Heroku/Azure (app deletado)

#### 5. Domain Squatting (Ocupação de Domínio Pai)

Registrar domínios similares ao original.

```
Legítimo: exemplo.com
Atacante: exemplo.net, exemplo.org, exemplo.co, exemplo.io
```

#### 6. Combosquatting (Adição de Palavras)

Adicionar palavras comuns antes ou depois do domínio.

| Legítimo    | Malicioso                 |
| ----------- | ------------------------- |
| paypal.com  | paypal-login.com          |
| netflix.com | netflix-brasil.com        |
| amazon.com  | amazon-prime-support.com  |
| google.com  | google-account-verify.com |

#### 7. TLD Squatting (Variação de Extensão)

Registrar o mesmo nome em extensões diferentes.

```
Legítimo: exemplo.com
Atacante: exemplo.net, exemplo.org, exemplo.xyz, exemplo.top
```

***

### 🎯 Exemplos Práticos

#### Exemplo 1 – Typosquatting para Phishing

```bash
# Atacante registra: paypa1.com (L trocado por 1)
# Configura site idêntico ao PayPal

# Vítima digita rapidamente: paypa1.com
# Acredita estar no PayPal legítimo
# Insere usuário e senha → atacante captura
```

#### Exemplo 2 – Subdomain Hijacking (Heroku)

```bash
# 1. Empresa tinha subdomínio: api.empresa.com CNAME para api.herokuapp.com
# 2. Empresa deletou app do Heroku (esqueceu de remover CNAME)
# 3. Atacante cria app no Heroku com mesmo nome: api.herokuapp.com
# 4. Atacante configura site malicioso
# 5. api.empresa.com agora aponta para atacante
```

#### Exemplo 3 – Homoglyph Attack (Unicode)

```python
# Caracteres cirílicos visualmente idênticos
dominio_legitimo = "apple.com"
dominio_malicioso = "аррӏе.com"  # letras cirílicas

# Visualmente: apple.com (indistinguível)
# Na verdade: xn--80ak6aa92e.com (Punycode)

# Ferramenta: evilurl.com para gerar homoglyphs
```

#### Exemplo 4 – Combosquatting para Suporte Falso

```
Legítimo: microsoft.com
Atacante: microsoft-support.com

# Vítima pesquisa "microsoft suporte"
# Clica no link microsoft-support.com (primeiro resultado pago)
# Site falso oferece "suporte técnico" (golpe)
```

***

### 🚨 Consequências do Ataque

| Impacto                     | Descrição                                       |
| --------------------------- | ----------------------------------------------- |
| **Phishing em massa**       | Captura de credenciais de usuários desatentos   |
| **Roubo de dados**          | Informações pessoais, financeiras, corporativas |
| **Distribuição de malware** | Drive-by downloads, trojans bancários           |
| **Danos à reputação**       | Marca associada a fraudes                       |
| **Perda financeira**        | Clientes enganados perdem dinheiro              |
| **SEO negativo**            | Sites maliciosos competem por palavras-chave    |
| **Confiança do cliente**    | Usuários perdem confiança na marca              |

***

### 🕵️ Detecção de Subdomain Squatting

#### Técnicas de Detecção

| Método                         | Descrição                                               |
| ------------------------------ | ------------------------------------------------------- |
| **Monitoramento de registros** | Alertar quando domínios similares são registrados       |
| **Análise de tráfego DNS**     | Detectar consultas para domínios suspeitos              |
| **Web crawling**               | Buscar sites que imitam a marca                         |
| **Certificados SSL**           | Monitorar certificados emitidos para domínios similares |
| **User Agent logs**            | Analisar erros de digitação nos logs                    |

#### Ferramentas de Deteção

```bash
# DNSTwist - Gera variações de domínio e verifica registros
dnstwist --registered paypal.com

# URLcrazy - Similar ao dnstwist
urlcrazy -r paypal.com

# CertSpotter - Monitora certificados SSL
certspotter --domain paypal.com

# SecurityTrails - Busca domínios similares
curl "https://api.securitytrails.com/v1/domains/list?domain=paypal.com&similar=true"
```

#### Exemplo com DNSTwist

```bash
# Instalar dnstwist
git clone https://github.com/elceef/dnstwist
cd dnstwist
pip install -r requirements.txt

# Gerar variações e verificar registros
python dnstwist.py --registered paypal.com

# Saída (exemplo):
# paypal.com          (original)
# paypa1.com          registered (ATACANTE!)
# paypal-security.com registered (ATACANTE!)
# paypal-login.com    registered (ATACANTE!)
# paypall.com         registered (ATACANTE!)
```

***

### 🛡️ Mitigações e Defesas

#### Para Empresas

**1. Registro Defensivo**

Registrar variações comuns do domínio **antes** de atacantes.

```bash
# Exemplo: Google registra centenas de variações
google.com
google.net
google.org
gogle.com
gooogle.com
google-secure.com
...
```

**2. Monitoramento Contínuo**

```bash
# Script para monitorar novos registros similares
#!/bin/bash
DOMAIN="suaempresa.com"
dnstwist --registered $DOMAIN > /tmp/similar_$(date +%Y%m%d).txt

if [ -s /tmp/similar_$(date +%Y%m%d).txt ]; then
    cat /tmp/similar_$(date +%Y%m%d).txt | mail -s "Novos domínios similares" security@empresa.com
fi
```

**3. Subdomain Takeover Prevention**

```bash
# Verificar subdomínios órfãos
#!/bin/bash
# Extrair todos os subdomínios
subfinder -d empresa.com | tee subdomains.txt

# Verificar se ainda resolvem
while read sub; do
    if ! dig +short $sub | grep -q .; then
        echo "Possível subdomain takeover: $sub"
    fi
done < subdomains.txt
```

**4. Políticas de Segurança**

| Medida               | Descrição                         |
| -------------------- | --------------------------------- |
| **CNAME hardening**  | Remover registros DNS órfãos      |
| **DMARC**            | Proteger contra spoofing de email |
| **BIMI**             | Logotipos verificados em emails   |
| **Marca registrada** | Processar cybersquatters          |

**5. Monitoramento de Certificados SSL**

```bash
# Monitorar certificados emitidos para domínios similares
curl -s "https://crt.sh/?q=%25.suaempresa.com&output=json" | jq '.[].name_value' | sort -u
```

#### Para Usuários

| Dica                   | Descrição                                   |
| ---------------------- | ------------------------------------------- |
| **Verifique a URL**    | Sempre olhe a barra de endereços            |
| **Favoritos**          | Use favoritos para sites importantes        |
| **Certificado SSL**    | Verifique o cadeado na barra de endereços   |
| **Digite manualmente** | Evite clicar em links de emails suspeitos   |
| **Autocomplete**       | Deixe o navegador completar URLs conhecidas |

***

### 🔧 Ferramentas para Teste

| Ferramenta             | Função                        | Comando Exemplo                                                                            |
| ---------------------- | ----------------------------- | ------------------------------------------------------------------------------------------ |
| **dnstwist**           | Gerar variações de domínio    | `dnstwist --registered paypal.com`                                                         |
| **urlcrazy**           | Gerar e testar variações      | `urlcrazy -r paypal.com`                                                                   |
| **subjack**            | Detectar subdomínios tomáveis | `subjack -w subdomains.txt -t 100 -ssl`                                                    |
| **takeover**           | Detectar takeover             | `takeover -l subdomains.txt`                                                               |
| **crt.sh**             | Buscar certificados           | `curl "https://crt.sh/?q=%25.paypal.com"`                                                  |
| **SecurityTrails API** | Buscar domínios similares     | `curl -H "APIKEY: key" "https://api.securitytrails.com/v1/domains/list?domain=paypal.com"` |

***

### 📜 Casos Reais

| Ano      | Alvo      | Técnica                                      | Impacto                                     |
| -------- | --------- | -------------------------------------------- | ------------------------------------------- |
| **2013** | Google    | Homoglyph (google.com cirílico)              | Phishing via URL visualmente idêntica       |
| **2017** | Amazon    | Subdomain hijacking (S3 bucket)              | Dados expostos de clientes                  |
| **2018** | Uber      | Subdomain takeover (CNames órfãos)           | Redirecionamento para site malicioso        |
| **2020** | Microsoft | Combosquatting (teams-login.com)             | Phishing em massa de credenciais Office 365 |
| **2021** | PayPal    | Typosquatting (paypa1.com)                   | Roubo de credenciais bancárias              |
| **2022** | Tesla     | Subdomain hijacking (tesla.s3.amazonaws.com) | Site malicioso servido de bucket S3         |

***

### 🛡️ Caso Prático: Proteção Ativa

#### Empresa Exemplo: "bancox.com"

```bash
# 1. Registrar variações críticas
domains=(
    "bancox.net"
    "bancox.org"
    "bancox.com.br"
    "banco-x.com"
    "bancoxx.com"
    "bankox.com"
)

for domain in "${domains[@]}"; do
    whois $domain || echo "Disponível: $domain - REGISTRAR!"
done

# 2. Monitorar novos registros
while true; do
    dnstwist --registered bancox.com | grep "registered" | mail -s "Alerta: novo domínio similar" security@bancox.com
    sleep 86400  # 1 dia
done

# 3. Verificar subdomínios órfãos
subfinder -d bancox.com | while read sub; do
    if ! dig +short $sub | grep -q .; then
        echo "ALERTA: $sub não resolve - possível takeover"
    fi
done

# 4. Monitorar certificados
curl -s "https://crt.sh/?q=%25.bancox.com&output=json" | jq '.[].name_value' | grep -v "bancox.com" | mail -s "Certificados suspeitos" security@bancox.com
```

***

### 🔗 Links Úteis

* [DNSTwist - GitHub](https://github.com/elceef/dnstwist)
* [Subdomain Takeover - Guide](https://0xpatrik.com/subdomain-takeover-basics/)
* [crt.sh - Certificate Search](https://crt.sh/)
* [Homoglyph Attack - Unicode Security](https://www.unicode.org/reports/tr36/)
* [OWASP - Domain Squatting](https://owasp.org/www-community/attacks/Domain_Squatting)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://0xmorte.gitbook.io/bibliadopentestbr/tecnicas/rede-and-infraestrutura/dns/subdomain-squatting.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
