O Segundo Fator no Backup: Lendo URIs otpauth em ASCII Decimal

Segurança Mobile Nível 2/4 ~3 min 7 de outubro de 2026

O desafio

Um aparelho voltou no desligamento e a fila de perícia extraiu dele um backup de aplicativo sem criptografia. Dentro, um dos arquivos de preferências do app autenticador guarda um valor que os desenvolvedores armazenaram como uma sequência de números em vez de texto, presumivelmente porque assim parecia menos um segredo. Não está criptografado nem é um hash. Há três contas ali. Recupere o segredo compartilhado que gera os códigos da folha de pagamento.

O que você vai aprender

  • Reconhecer uma sequência de números entre 32 e 126 como pontos de código ASCII
  • Ler os campos de uma URI otpauth e identificar a semente
  • Explicar por que uma semente TOTP vazada é permanente e independente de dispositivo
  • Descrever como backups de aplicativos se tornam um caminho de exfiltração para segredos

Habilidades testadas

Reconhecimento de codificaçãoAnálise de artefatos móveisRaciocínio sobre autenticação

Pré-requisitos

  • O que um aplicativo de código de uso único faz
  • Que o ASCII mapeia caracteres para números

Como funciona

Um código de uso único baseado em tempo não é um segredo em si. É uma função do horário atual e de uma semente compartilhada, calculada de forma idêntica no telefone e no servidor. Escanear um QR code de configuração é como a semente chega ao dispositivo, e o QR codifica uma URI otpauth:// cujo parâmetro secret é a semente em base32.

Isso faz da semente todo o segundo fator. Ela nunca muda, é a mesma em qualquer dispositivo que a possua, e usá-la não deixa rastro que a distinga do usuário legítimo. Um atacante que a copia não precisa mais do telefone, e o dono da conta não tem como perceber. A recuperação depende de o emissor redefinir o cadastro, o que quase ninguém faz depois que um aparelho é simplesmente devolvido.

É no armazenamento que as coisas dão errado. Sementes pertencem ao keystore da plataforma, marcadas para ficarem fora dos backups do dispositivo. Quando um app as guarda em preferências comuns, elas viajam para onde quer que o backup vá, e escrever cada caractere como um número decimal não é proteção alguma: são os mesmos bytes, soletrados de outra forma, legíveis por qualquer um que perceba que os valores nunca passam de 126.

Erros comuns

  • Responder com a semente do Corvid Mail ou da Thornbury VPN. As três linhas parecem iguais. O rótulo pede a folha de pagamento.
  • Enviar a URI inteira. A resposta é o valor de secret, não a linha onde ele está.
  • Tentar base64 ou base32 na entrada. Nenhum dos dois alfabetos contém espaços, e os números já entregam do que se trata antes de você tocar em qualquer botão.
  • Esperar um código de seis dígitos. O código muda a cada trinta segundos. A semente não, e é por isso que a semente é o que importa.

Como se proteger

Mantenha as sementes fora de qualquer coisa que seja copiada.

  • Guarde-as no keystore apoiado em hardware, com a flag de exclusão de backup ativada. Um autenticador que sobrevive a uma restauração em um telefone novo é um autenticador que colocou suas sementes em algum lugar que o backup alcança.
  • Exclua o diretório de dados do app dos backups automáticos, e teste essa exclusão em vez de confiar no manifest.
  • Recadastre o segundo fator no desligamento como rotina. Recolher o aparelho não é o mesmo que revogar o que estava nele.
  • Prefira fatores resistentes a phishing vinculados a um dispositivo, como uma passkey ou uma chave de hardware, onde o material privado não pode ser exportado de forma alguma.

Solução completa

Membros Pro e Max desbloqueiam o passo a passo completo.

Assinar Pro

Estatísticas da comunidade

205 resoluções
86% taxa de sucesso
M2F14M3 Primeiro sangue

Hacks de hoje relacionados

31.000+ Hackers Labs reais Grátis
Comece Grátis ou resolva o hack de hoje, sem conta