Autenticação
⏱️ Tempo de leitura: ~7 min
Toda vez que você loga, o sistema precisa responder uma pergunta: "é você mesmo?". Esta página mostra como ele responde — e como um atacante engana essa resposta.
Pré-requisitos
- Ter lido a página anterior, Codificação, Criptografia e Hashing
Autenticação x Autorização
Dois conceitos que vivem juntos e são fáceis de confundir:
- Autenticação — provar quem você é (o login).
- Autorização — depois de autenticado, decidir o que você pode fazer (as permissões).
Esta página é sobre a primeira.
Os três fatores
Você prova quem é de três formas. Sistemas seguros combinam mais de uma:
| Fator | O que é | Exemplo |
|---|---|---|
| Algo que você sabe | um segredo na sua cabeça | senha, PIN |
| Algo que você tem | um objeto com você | celular, token, chave SSH |
| Algo que você é | uma característica física | digital, rosto |
Combinar dois deles é a autenticação de dois fatores (2FA): senha (sabe) + código no celular (tem). Assim, uma senha vazada sozinha não é suficiente pra entrar.
O problema da web: o HTTP não lembra de você
O HTTP é stateless: cada requisição é independente e o servidor te esquece entre uma e outra. Então, depois que você loga, como o site sabe que a próxima requisição ainda é sua?
Ele te dá um comprovante que o navegador reenvia a cada requisição. Há dois modelos comuns: sessão e JWT.
Sessão + cookie
- Você loga. O servidor cria uma sessão e guarda ela do lado dele (em memória ou banco).
- Ele te devolve um cookie com um ID de sessão — uma string aleatória.
- O navegador reenvia esse cookie em toda requisição. O servidor lê o ID e sabe que é você.
O cookie de sessão é como uma pulseira de festa: não diz seu nome, mas prova que você já passou pela portaria.
⚠️ Se alguém copia o seu cookie de sessão, o servidor não percebe diferença — pra ele, o ladrão é você. Isso é o roubo de sessão (session hijacking), e é um dos CTFs desta aula. Uma das formas de roubar esse cookie é via XSS, que você vê na Aula 6.
JWT (JSON Web Token)
O JWT é um modelo mais moderno. Em vez de guardar a sessão no servidor, o próprio token carrega quem você é — assinado pra ninguém conseguir adulterar.
Um JWT tem três partes separadas por ponto:
header.payload.signature
header → {"alg":"HS256"} Base64 · qual algoritmo de assinatura
payload → {"user":"joe",...} Base64 · quem você é e outros dados
signature → HMAC(dados, segredo) o hash que prova que nada foi mexido
- Header e payload são só Base64 — ou seja, qualquer um lê (lembra: Base64 não é segurança).
- Signature é um hash feito com um segredo que só o servidor conhece. É ela que garante que o token não foi alterado.
💡 No jwt.io você consegue ver um exemplo de tudo que foi explicado acima.
Onde o JWT quebra
- Se o servidor não confere a assinatura direito (o clássico
alg: none), dá pra forjar um token e virar admin. - Se o segredo da assinatura é fraco (tipo
secretou123456), dá pra descobrir por força bruta e assinar tokens falsos você mesmo.
Os dois modelos, lado a lado
| Sessão | JWT | |
|---|---|---|
| Onde fica o estado | no servidor | no próprio token |
| O cliente guarda | um ID no cookie | o token inteiro |
| Ataque clássico | roubar o cookie de sessão | forjar ou alterar o token |
Para casa
A tarefa abaixo é prática — ela junta a codificação, a criptografia e o hashing das duas páginas desta aula.
Tarefa 1 — Decodifique e quebre
a) Decodifique. Cole a string abaixo no CyberChef e descubra a mensagem escondida:
b) Quebre os hashes. Os três MD5 abaixo são senhas comuns. Você vai usar o john (ou o hashcat) com a wordlist rockyou.txt:
⚠️ No Kali (principalmente no WSL) a wordlist não vem instalada por padrão. Faça isto uma vez, antes:
sudo apt update && sudo apt install wordlists # instala as wordlists
sudo gunzip /usr/share/wordlists/rockyou.txt.gz # descompacta a rockyou (precisa de sudo)
Depois, salve os três hashes num arquivo hashes.txt e rode:
Próximos passos
A próxima aula é de Redes: IP, portas, protocolos e como a web conversa (HTTP e HTTPS). É a base pra escanear e atacar alvos nas aulas seguintes.
Opcional (pra quem curtir): Criptomoedas e Segurança — a criptografia desta aula aplicada a dinheiro.