Protegendo backups do iPhone

Hoje, quero falar sobre os recursos pouco conhecidos do iOS relacionados à proteção de backups, ignorando essa proteção (recursão) e proteção contra a proteção ignorada (recursão dupla). A cereja no topo do bolo será uma breve instrução que permitirá ignorar a proteção contra o desvio da proteção de backup (por exemplo, recursão de terceira ordem), bem como recomendações que ajudarão a proteger contra o desvio da proteção contra o desvio da proteção de backup (excelente, recursão de quarta ordem - acho ganhou uma medalha!).

Proteção de backup: enquanto tudo é simples


Sistema de backup IOS - verdadeiramente fora de competição. Vimos algo semelhante em termos de backups locais no BlackBerry 10, mas esse sistema está morto e o BlackBerry nunca chegou à nuvem. (A propósito, no BlackBerry 10 OS, os backups eram sempre criptografados e a chave sempre era armazenada na nuvem - no BlackBerry ID do usuário ou na rede corporativa). Era bastante decente fazer backup na "nuvem" e no Windows Phone 8.1, bem como no Windows 10 Mobile - mas esses sistemas agora estão mortos e nunca houve backups locais neles.

O único concorrente do iOS é o sistema Android, cujos backups são criados exclusivamente na nuvem (ignoraremos o comando adb backup: há ainda menos dados realmente salvos por esse comando do que na nuvem). Sim, certos truques ajudarão a obter mais dados, mas os backups no Android estão longe de serem ideais.

Como parte deste artigo, estamos interessados ​​principalmente em backups locais; Eu escrevi sobre o conteúdo deles em nosso blog anteriormente. Eles podem ser criados, por exemplo, no aplicativo iTunes, mas não apenas nele: existem muitos aplicativos de terceiros (incluindo nosso próprio iOS Forensic Toolkit) que, quando conectados ao iPhone, criarão uma cópia de backup dele. A propósito, usando o Toolkit, um backup às vezes pode ser retirado do telefone, mesmo quando a tela está bloqueada e o código de bloqueio é desconhecido (os arquivos de bloqueio são usados ​​para isso).

Uma cópia de backup é uma maneira conveniente, universal e muito simples de extrair uma nova cópia de dados de um dispositivo de armazenamento bem protegido (e, a propósito, criptografado). Quase todas as coisas mais interessantes se enquadram nos backups: os dados da maioria dos aplicativos e os logins com senhas que o usuário salvou no navegador Safari e aplicativos de terceiros, senhas para Wi-Fi e backups de relógio e dados sobre a atividade do usuário (etapas, pulsação em um determinado momento). Faça backups e muitas outras coisas vitais para a investigação de crimes.

Por que preciso de um backup se o código de bloqueio é conhecido?

Muitas vezes nos fazem a pergunta (para ser mais preciso na redação, eles "afirmam"): se o código de bloqueio já é conhecido, por que precisamos de uma cópia de segurança? Posso ver tudo no próprio iPhone?

Não, não todos. Mesmo que o código de bloqueio seja conhecido, nem todos os dados interessantes podem ser visualizados no próprio iPhone. O IPhone faz backup de muitos dados em backups, mesmo além da vontade do usuário. O usuário pode nem saber que esses dados existem! Isso se aplica, por exemplo, ao histórico do navegador Safari - no próprio telefone ou no iCloud, você pode visualizar o histórico nos últimos 30 dias e o backup de todo o histórico durante todo o tempo em que você usa o telefone (se o usuário não limpar o histórico manualmente). A propósito, exatamente o mesmo se aplica ao histórico de chamadas: no aplicativo Telefone, ele é visível apenas nos últimos 30 dias, e as informações sobre todas as chamadas são salvas na cópia de backup. Isso por si só é suficiente para as agências policiais buscarem backups, mas isso não é tudo. O usuário pode excluir algumas das mensagens no programa de mensagens instantâneas - e você não as verá na tela do dispositivo; ao mesmo tempo, um banco de dados no formato SQLite pode conter registros excluídos por um longo tempo - até que o procedimento periódico de coleta de lixo seja iniciado. Coisas importantes são análise, pesquisa, exportação de dados, incluindo dados excluídos (a primeira solicitação policial é “onde estava o usuário em tal e tal data”, tente responder a essa pergunta com interesse, tenha seu próprio telefone em suas mãos e detecte quanto tempo levará e a análise dos dados do backup dará uma resposta em um segundo.) Também há poucas coisas - por exemplo, a data em que o contato foi adicionado ou a data em que o evento foi criado no calendário, que não são visíveis na interface do usuário.

Ao mesmo tempo, nas mãos do atacante, o backup se transforma em uma arma contra o usuário. Logins e senhas do Keychain permitem "invadir" contas, obter acesso à correspondência e dinheiro do usuário. Para evitar isso, a Apple permite que o usuário defina uma senha para backups.

Se uma senha for definida, o backup inteiro será criptografado com uma chave forte, gerada com base na senha. A criptografia ocorre dentro do dispositivo; se uma senha for definida, os dados não criptografados simplesmente não saem do telefone. Conseqüentemente, não importa qual programa de backup você use, o resultado será o mesmo: backup criptografado.

A criptografia de backups locais em versões relativamente recentes do iOS (10.2 e mais recentes) é tão forte que, mesmo usando a aceleração de hardware com a GPU Nvidia GTX 1080, não conseguimos obter a velocidade de pesquisa de mais de cem senhas por segundo. Consequentemente, um ataque frontal é inútil, mesmo que uma senha simples de apenas 7 caracteres seja usada (média hospitalar). No entanto, mesmo se você tiver uma senha de criptografia forte do seu telefone, poderá extrair fotos e arquivos de mídia se souber a senha ou tiver um bloqueio.

No iOS 10.2 e até o lançamento do iOS 11, uma senha de backup longa e complicada era uma proteção absoluta; não havia como excluir ou alterar a senha sem antes digitar a antiga, nas versões mais antigas do sistema não existia. No iOS 11, a situação mudou.

Primeira recursão: redefinir a senha para backup


Eu já escrevi sobre o que pode ser feito no iOS 11, 12 e 13 usando um código de bloqueio. Entre muitas outras coisas, nessas versões do iOS, um código de bloqueio de tela pode ser usado para redefinir a senha de backup. Agora, se um invasor aprender o código de bloqueio de tela, ele poderá redefinir a senha para um backup local, conectar o telefone ao computador e extrair todos os dados, além de descriptografar todas as senhas do chaveiro.

O site da Apple fornece instruções detalhadas sobre como proceder para redefinir a senha do backup:

No iOS 11 ou posterior, você pode criar um backup criptografado do seu dispositivo redefinindo sua senha. Para fazer isso, execute as seguintes etapas:

  1. No seu dispositivo iOS, selecione Configurações> Geral> Redefinir.
  2. Clique em "Redefinir todas as configurações" e digite a senha do iOS.
  3. Siga as instruções para redefinir. Isso não afetará os dados ou senhas do usuário, mas redefinirá configurações como brilho da tela, posição do programa na tela inicial e papel de parede. A senha para criptografar backups também será excluída. (Entre parênteses: nesse momento, o dispositivo solicitará a inserção de um código de bloqueio de tela).
  4. Reconecte o dispositivo ao iTunes e crie um novo backup criptografado.
  5. Você não pode usar backups criptografados criados anteriormente, mas pode usar o iTunes para fazer backup de dados atuais e definir uma nova senha de backup.

Em um dispositivo com iOS 10 ou anterior, a redefinição de senha não é possível.

Segunda recursão: nos protegemos de tentativas de redefinir a senha para backup


A facilidade com que um invasor pode ignorar sua senha mais complexa e longa, digitando apenas um código de bloqueio de tela, é desagradável. No entanto, você pode tentar se proteger desse flagelo. O mecanismo de proteção aqui será Restrições ao controle dos pais (iOS 11) ou Senha de tempo de tela (iOS 12 e 13). Para simplificar, descreverei exatamente o iOS 12.

Digamos que seu iPhone tenha caído nas mãos de um invasor. Suponha que um invasor tenha conseguido espionar seu código de bloqueio; Agora ele está tentando desatar o telefone da nuvem e, ao mesmo tempo, mesclar uma cópia dos dados, obtendo acesso às senhas do chaveiro. Você pode se proteger desse desenvolvimento de eventos com a ajuda da senha do Screen Time. Você pode ler mais sobre as possibilidades de controlar o tempo da tela no artigo da Apple Usando o controle dos pais nos dispositivos iPhone, iPad e iPod touch de uma criança . Agora estamos interessados ​​em outra possibilidade desse sistema: proteger o telefone de redefinir a senha para backup.

Curiosamente, limitar a capacidade de redefinir a senha para o backup local do iOS é bastante simples: tudo o que você precisa fazer é definir a senha do Screen Time como tal. A complexidade dessa senha é baixa: a única opção disponível é um código PIN de quatro dígitos. No entanto, essa proteção é geralmente bastante confiável. Como essa senha é usada muito raramente e difere do código de bloqueio do dispositivo, não pode ser espionada acidentalmente. Esse código é necessário em casos extremamente raros quando você deseja alterar as configurações ou desativar as restrições. Você pode definir um código aleatório escrevendo-o em um pedaço de papel deixado em casa - e será completamente seguro.

O que acontece se eu tentar redefinir minha senha para backup agora? Na primeira etapa, não há diferenças: o sistema solicitará a senha de bloqueio do dispositivo. Porém, logo em seguida, será solicitada uma senha adicional de tempo de tela com 4 dígitos. Essa medida de segurança é capaz de repelir não apenas os curiosos, mas também proteger o iPhone contra tentativas de hackers bastante sérias.

Recursão Três: Como descobrir a senha do Tempo de Tela


A senha de tempo da tela é armazenada no próprio dispositivo. É impossível buscá-lo em um período de tempo razoável: um pequeno espaço de 10.000 combinações é protegido por atrasos progressivos entre as tentativas de entrada. Após várias tentativas malsucedidas, o sistema limitará a velocidade de enumeração de senhas do tempo da Tela, introduzindo atrasos progressivos de 1, 5, 15 e 60 minutos. Após 10 tentativas malsucedidas, cada tentativa subsequente pode ser feita não antes de uma hora após a anterior; reiniciar o dispositivo não ajudará a acelerar o processo. Assim, todas as 10.000 combinações podem ser classificadas em 416 dias.

No entanto, existem maneiras mais interessantes. Farei uma reserva imediatamente: a primeira funcionará apenas quando a senha da cópia de backup não estiver definida ou conhecida e a segunda se você puder fazer o jailbreak do iPhone (ou seja, a versão do iOS nele não é mais nova que o iOS 12.2). Para o iPhone com uma senha desconhecida para o backup em execução na versão mais recente do iOS (hoje é 12.4), não há maneira de descobrir a senha do Screen Time (por enquanto).


Método 1: extrair do backup

No iOS 7-11, essa senha (chamada Restrições) é armazenada como um hash. O algoritmo é relativamente robusto (pbkdf2-hmac-sha1, mas o número de iterações é relativamente pequeno). Como essa senha sempre consiste em apenas 4 dígitos, uma pesquisa completa do hash no computador leva alguns segundos. O próprio hash é armazenado no arquivo com.apple.restrictionspassword.plist, que se enquadra no backup. Consequentemente, a senha de restrições pode ser aberta se tivermos (um de):

  • backup sem senha
  • backup com senha, além da senha dele

No iOS 12 (aqui está a senha do Screen Time, ou Screen Time) é armazenada de forma clara. Não, a segurança não piorou: a senha foi movida para o chaveiro. No entanto, a classe de proteção para a senha do Screen Time foi atribuída no mínimo: ela não está vinculada ao dispositivo. A classe de proteção mínima é atribuída intencionalmente. Isso é feito para que, ao restaurar um novo iPhone a partir do backup, a senha do Screen Time seja definida automaticamente (portanto, a Apple fechou o potencial de remover a senha do Screen Time criando um backup, redefinindo o dispositivo e restaurando a partir do backup). Os registros de chaveiro com classes de proteção mais altas não terminam em backups nem acabam, mas são protegidos pela chave de hardware do dispositivo (ou seja, eles podem ser restaurados apenas no mesmo dispositivo).

Para obter a senha de tempo da tela, você precisa:

  • backup com senha mais senha dele

Método 2: através do jailbreak

Obviamente, o primeiro método funcionará apenas quando a senha do backup não for definida ou conhecida. Se a senha do backup estiver definida, mas não for conhecida, a única maneira restante de descobrir a senha do Screen Time é obter acesso ao Keychain. Para versões mais antigas do iOS, você precisa de uma cópia do sistema de arquivos.

Para o iOS 7-11, você precisa:

  • imagem de um sistema de arquivos filmado por EIFT (precisa de um jailbreak) ou GrayKey (o jailbreak não é necessário, um código de bloqueio de dispositivo é suficiente, mas o produto em si está disponível apenas para as agências policiais de alguns países)

Para iOS 12:

  • Chaveiro extraído por EIFT ou GrayKey

Existe alguma necessidade de fazer isso? Não tenho certeza: se foi possível instalar um jailbreak, primeiro, todas as senhas podem ser extraídas sem um intermediário na forma de um backup. Em segundo lugar, você pode descobrir a senha do backup descriptografando o Keychain: a senha do backup (assim como a senha do Screen Time) é armazenada lá em branco. No entanto, se o objetivo é remover as restrições do tempo de tela, essa abordagem é bastante adequada.

Mais uma coisa

Curiosamente, a senha do Screen Time também é armazenada na nuvem do iCloud, mas somente se você habilitar a autenticação de dois fatores e ativar a opção Screen Time “Share across devices”. A chave em si não cai no Keychain da nuvem, mas é armazenada separadamente (aproximadamente da mesma forma que a chave para restaurar o acesso aos volumes criptografados do FileVault 2). Atualmente, não há mecanismos para extraí-lo do iCloud e visualizá-lo. Estamos trabalhando nisso; No outono, está planejado o lançamento da versão mais recente do Elcomsoft Phone Breaker, que terá esse recurso (se nada mudar no mecanismo de armazenamento com o lançamento do iOS 13; existe essa possibilidade: o iOS 13 já alterou o local de armazenamento dessa senha).

De qualquer forma, para retirar a senha do Screen Time do iCloud, você precisará de todos os seguintes itens:

  • nome de usuário e senha do usuário Apple ID (iCloud)
  • código de bloqueio da tela do dispositivo
  • acesso ao segundo fator de autenticação (é o próprio dispositivo, se o código de bloqueio for conhecido; no entanto, um cartão SIM com um número de telefone confiável é suficiente)

Mas não verificamos o cenário ao redefinir o dispositivo e depois restaurá-lo a partir do backup em "nuvem", por isso não posso ter certeza se a senha do Screen Time está ativada se eu criar um backup no iCloud, redefinir o iPhone e recuperar a partir da nuvem. Além disso, o sistema pode se comportar de maneira diferente nos casos em que o mesmo iPhone ou novo dispositivo é restaurado a partir do backup.

Quarta recursão, última: como proteger o acesso à senha do Screen Time


Então chegamos ao último ponto. Se seu objetivo é proteger o dispositivo o máximo possível, é de seu interesse garantir que a senha do Screen Time não seja redefinida nem reconhecida. Como na parte anterior, tenho duas notícias: boas e más.

A boa notícia é que proteger a senha do Screen Time da pessoa comum e até de um cracker profissional é bastante simples: basta definir uma senha longa e forte para uma cópia de backup e manter o dispositivo atualizado instalando as versões mais recentes do iOS logo após a saída. Os jailbreak para novas versões do iOS não saem imediatamente. Às vezes, decorrem meses entre o lançamento de uma atualização do iOS e a aparência de um jailbreak viável.

Você pode ter medo de um cenário em que um dispositivo roubado (com um código de bloqueio conhecido por um invasor) é colocado em uma prateleira aguardando o aparecimento de um jailbreak. Aqui, no entanto, o “Apagar [dispositivo]” padrão feito no portal Find my iPhone pode ajudar. O fato é que, para instalar o jailbreak, você deve primeiro assinar o arquivo IPA e confirmar a assinatura digital diretamente no próprio iPhone. A assinatura digital é verificada no servidor Apple; isto é, o invasor terá que permitir que o iPhone roubado fique online. Neste momento, o comando para apagar o dispositivo provavelmente funcionará.

Os invasores podem resolver esse problema usando configurações especiais de roteador, nas quais o acesso aos nós responsáveis ​​pela funcionalidade Localizar meu iPhone será negado. Além disso, em vez do certificado usual, eles podem usar um certificado de desenvolvedor para assinar o jailbreak, o que não exige que o iPhone fique online para confirmar a assinatura digital.
A má notícia é que, por mais que você tente, você não poderá proteger seu iPhone contra o acesso via sistemas GrayKey ou UFED Premium: seus desenvolvedores conseguiram contornar a maioria dos mecanismos de segurança do iPhone. Se o código de bloqueio da tela for conhecido, os usuários desses complexos poderão acessar o sistema de arquivos e descriptografar o chaveiro sem problemas especiais. Por outro lado, esses complexos estão disponíveis apenas para órgãos policiais e de maneira alguma em nenhum país (por exemplo, eles não são fornecidos à Rússia). Colocá-los nas mãos de atacantes é praticamente excluído. Portanto, é improvável que você seja exposto a esse perigo.

Source: https://habr.com/ru/post/pt463083/


All Articles