Módulo 3 · 3.2
Ler domínios e ligações
Módulo 3: Reconhecer phishing · Tempo de leitura: 13 minutos
Objetivo de aprendizagem: Depois desta lição, saberá determinar o verdadeiro destino de qualquer ligação: encontrará o domínio registável com a lista pública de sufixos e reconhecerá truques de subdomínio, caminho e @, lookalikes, punycode, encurtadores e redirecionamentos abertos.
Conceitos-chave: URL, esquema, host, domínio registável, sufixo público, subdomínio, caminho, lookalike, typosquatting, homógrafo, punycode (xn--), encurtador de URL, redirecionamento aberto
As partes de uma ligação
Um endereço web chama-se URL. É composto por partes fixas:
https://inlog.mijnbank.example:443/klant/overzicht?taal=nl#saldo| Parte | Neste exemplo | O que faz |
|---|---|---|
| Esquema | https | Como o browser estabelece a ligação |
| Host | inlog.mijnbank.example | Com que servidor está a comunicar |
| Porta (raramente visível) | 443 | O "número de porta" nesse servidor |
| Caminho | /klant/overzicht | Que página nesse servidor |
| Query | ?taal=nl | Dados adicionais para a página |
| Fragmento | #saldo | Um local na página |
O host é a única parte que determina a quem pertence o site. O caminho, a query e o fragmento são escolhidos pelo próprio proprietário desse host. Por isso, aí pode estar qualquer coisa, incluindo o nome de outra organização.
O host lê-se da direita para a esquerda, rótulo a rótulo. O final é a parte mais importante.
O domínio registável e a lista pública de sufixos
Não é todo o host que indica quem é o proprietário, mas sim uma parte dele: o domínio registável. É o nome que alguém registou junto de um registrar. Tudo o que está à esquerda disso são subdomínios, que o proprietário cria livremente, tantos quantos quiser.
Para encontrar o domínio registável, é preciso saber onde é possível registar um nome próprio. Essa parte chama-se sufixo público. Exemplos são com, nl e example, mas também co.uk: no Reino Unido, uma empresa regista um nome sob co.uk. O domínio registável é então o sufixo público mais um rótulo antes dele.
| Host | Sufixo público | Domínio registável |
|---|---|---|
www.example.com | com | example.com |
inlog.mijnbank.example | example | mijnbank.example |
www.shop.[naam].co.uk | co.uk | [naam].co.uk |
mijnbank.co.uk.example | example | uk.example |
A regra prática "pegue nos últimos dois segmentos" está, portanto, errada. Em www.shop.[naam].co.uk obteria co.uk, que não pertence a ninguém em especial. E o último exemplo mostra que co.uk no meio de um nome não significa nada: aí o proprietário é uk.example.
Quais os sufixos que são públicos consta na Public Suffix List (publicsuffix.org), uma lista iniciada pela Mozilla e atualmente mantida pela comunidade. Os browsers utilizam-na, entre outras coisas, para determinar quais os sites que podem partilhar cookies e para destacar a parte importante de um endereço. A lista tem também uma secção de sufixos "privados": serviços onde os clientes recebem o seu próprio subdomínio, como certos alojamentos de blogues e páginas de projetos. Cada cliente nessa situação conta como um proprietário distinto.
Se um sufixo não constar da lista, aplica-se a regra padrão: o último rótulo é o sufixo. Por isso, em .example, o domínio registável corresponde sempre aos dois últimos rótulos.
Truques com subdomínio, caminho e @
Agora que sabe onde se encontra o proprietário, consegue perceber como os atacantes enganam a sua vista. Colocam o nome que você espera noutro sítio da ligação.
Truque do subdomínio.
https://mijnbank.example.inlog-check.example/loginVê mijnbank.example no início. Mas lendo da direita: o sufixo é example, o domínio registável é inlog-check.example, e esse pertence ao atacante. O atacante comprou esse domínio e colocou lá o subdomínio mijnbank.example.
Truque do caminho.
https://inlog.example/mijnbank.example/klant/loginO host é inlog.example e nada mais. Tudo o que vem depois do primeiro / é o caminho, e é o proprietário de inlog.example quem o escolhe.
Truque do @.
https://mijnbank.example@aanvaller.example/inloggenUma URL pode conter antes do host uma parte de utilizador, terminada em @ (a norma para URL's, RFC 3986, chama-lhe userinfo). Tudo o que está antes do @ não é, portanto, o host. O browser vai para aanvaller.example e para mais lado nenhum. Alguns browsers avisam ou removem a parte de utilizador, mas não conte com isso.
Um método prático e fiável: procure a primeira / depois de https://. O que está antes é o host (eventualmente com uma parte de utilizador e @). Se houver um @, o host só começa depois dele. Leia o host da direita para a esquerda até obter o domínio registável.
Lookalikes, typosquatting e punycode
Um lookalike é um domínio próprio que se assemelha ao de outra entidade:
| Lookalike | Truque |
|---|---|
rnijnbank.example | rn parece, em muitos tipos de letra, um m |
mijnbnak.example | duas letras trocadas (typosquatting: aposta num erro de digitação) |
mijnbank-veilig.example | uma palavra adicional com hífen: um domínio completamente diferente |
mijnbank-example.example | o ponto substituído por um hífen |
mijnbank.example.inlog-check.example | o domínio verdadeiro como subdomínio (ver acima) |
Um passo mais além é o homógrafo: um domínio com letras de outro alfabeto que têm o mesmo aspeto. O а cirílico parece-se com o a latino, mas para o computador é um carácter diferente. Os nomes de domínio com estes caracteres chamam-se nomes de domínio internacionalizados. O DNS só reconhece as letras de a a z, algarismos e o hífen, por isso esse nome é convertido para punycode (RFC 3492): uma forma que começa por xn--.
mijnbаnk.example (com um а cirílico)
xn--mijnbnk-6fg.example (o mesmo nome em punycode)Se vir xn-- num endereço, esse nome contém caracteres fora do intervalo a-z. Isso pode ser perfeitamente normal (muitas línguas têm acentos ou um alfabeto próprio), mas numa palavra que, de resto, parece neerlandesa ou inglesa, é um sinal muito forte. Os browsers têm regras para mostrar combinações suspeitas em punycode; o Chrome, por exemplo, mostra como xn-- um nome que misture alfabeto latino e cirílico. Mas essas regras não apanham tudo, e num e-mail ou chat vê muitas vezes apenas as letras "normais".
Encurtadores e redirecionamentos abertos
Os encurtadores de URL transformam uma ligação longa numa curta, como https://kort.example/a8Xk2. Prático, mas não vê o destino. O domínio registável da ligação pertence ao encurtador, não à organização que espera. Um banco ou fornecedor que lhe peça para iniciar sessão através de uma ligação encurtada: não o faça.
Um redirecionamento aberto é uma página de um site real que reencaminha os visitantes para qualquer endereço indicado na ligação:
https://mijnbank.example/doorsturen?naar=https://aanvaller.example/inloggenO host é realmente mijnbank.example, mas depois de um clique acaba em aanvaller.example sem se aperceber. Também com um encurtador ou uma ligação de rastreio de um serviço de newsletter pode acabar num sítio diferente do domínio inicial. A lição: volte a verificar a barra de endereço depois de clicar, antes de preencher seja o que for. E o cadeado? Isso diz apenas que a ligação está encriptada. Também os sites falsos têm um certificado válido.
Na prática: é assim que se vê
Num computador, passe o rato sobre uma ligação sem clicar; o verdadeiro destino aparece no canto inferior esquerdo da janela ou numa pequena janela. Na maioria dos programas de e-mail e webmail isso também funciona. Num telemóvel, mantenha o dedo sobre a ligação: aparece um menu com o endereço por cima. Nesse caso, não escolha "abrir".
Tenha atenção a duas armadilhas:
- O texto visível não é o destino. Num e-mail, o botão ou o texto pode mostrar
https://mijnbank.example, enquanto a ligação por baixo aponta para um endereço completamente diferente. Só conta o que vê ao passar o rato ou ao manter o dedo premido. - Os endereços longos são cortados. Os telemóveis mostram muitas vezes apenas o início. É precisamente o final importante que fica de fora. Percorra ou toque no endereço para o ver por inteiro.
Se tiver dúvidas, escreva você mesmo o endereço que conhece ou utilize os marcadores. O centro nacional de cibersegurança também remete, no caso neerlandês, para uma ferramenta de verificação de ligações antes de se clicar.
Resumo
- Só o host determina a quem pertence um site. O caminho, a query e tudo o que está antes de um
@são escolhidos pelo próprio atacante. - O domínio registável é o sufixo público mais um rótulo. Utilize a Public Suffix List, não "os últimos dois segmentos" (pense em
co.uk). - Leia o host da direita para a esquerda. O domínio verdadeiro colocado à frente como subdomínio é um truque clássico.
- Lookalikes: troca de letras, palavras adicionais, homógrafos.
xn--significa caracteres fora do intervalo a-z. - Os encurtadores escondem o destino, os redirecionamentos abertos reencaminham-no. Depois de clicar, volte a verificar a barra de endereço.
Questionário
Exercício
Exercício A3.2: Encontrar o domínio registável. Recebe oito ligações. Preencha, para cada ligação, o domínio registável e indique se a ligação corresponde à organização verdadeira. O programa verifica a sua resposta com base na Public Suffix List.
Exercício A3.2b: Ligações complicadas. Oito ligações com truques de @, punycode, encurtadores e páginas de reencaminhamento. Indique, para cada ligação, a que domínio chega, ou escolha "não é possível determinar".
Para saber mais
Os passos nos artigos da WebOké aplicam-se ao ambiente da WebOké; noutros fornecedores o funcionamento é semelhante.
- Este email é mesmo da WebOké? Como reconhecer phishing e utilizar o código de promoção
- Curso de DNS, sobre nomes de domínio e como os ler: https://www.weboke.nl/pt/dns-cursus
- O centro nacional de cibersegurança (neerlandês), Spoofing: https://www.ncsc.nl/phishing/spoofing
- Public Suffix List: https://publicsuffix.org/
- RFC 3986, a estrutura de uma URL (incluindo userinfo): https://www.rfc-editor.org/rfc/rfc3986
- RFC 3492, Punycode: https://www.rfc-editor.org/rfc/rfc3492
- Chromium, quando o browser mostra um nome internacionalizado em punycode: https://chromium.googlesource.com/chromium/src/+/main/docs/idn.md
