TLS e o nome do servidor (SNI)
O HTTPS cifra o conteúdo, mas o nome do site vai às claras no primeiro pacote, o ClientHello.
O TLS é a camada que põe o "S" no HTTPS. Depois que ele começa, o conteúdo vai cifrado: na captura, só aparecem registros Application Data com bytes sem sentido. Mesmo assim, a captura não fica muda. Quem observa ainda vê:
- os endereços IP e as portas;
- quando cada conexão aconteceu e quanto tempo durou;
- quantos bytes foram para cada lado, o que diferencia um download de um upload;
- o nome do servidor, no primeiro pacote do TLS.
Esse primeiro pacote é o ClientHello, em que o navegador propõe como cifrar. Um mesmo endereço IP costuma hospedar centenas de sites, então o navegador precisa dizer qual deles quer antes de a cifra começar. Ele faz isso na extensão SNI (Server Name Indication). Nos detalhes do Wireshark aparece assim:
Transport Layer Security
Handshake Protocol: Client Hello
Extension: server_name (len=31) name=www.cooperativa-pampa.test

Para listar todos os nomes de uma captura, filtre tls.handshake.type == 1 (só ClientHello) ou adicione a coluna tls.handshake.extensions_server_name. No terminal: tshark -r arquivo.pcap -Y "tls.handshake.type == 1" -T fields -e tcp.stream -e tls.handshake.extensions_server_name.
Para saber quanto cada conexão transferiu, use Statistics > Conversations, aba TCP, que mostra os bytes de A para B e de B para A. No terminal, tshark -r arquivo.pcap -qz conv,tcp.
Empresas e escolas usam o SNI para bloquear sites sem ver o conteúdo. Uma extensão mais nova, o Encrypted Client Hello (ECH), cifra também esse nome, mas ainda não é usada em todo lugar.