Tradução | Missão Impossível: Reforçando o Android para Privacidade e Segurança

Saudações, achou que eu havia morrido? Como diria Sikera Júnior, “Estamos de volta”.

O post de hoje é, na verdade, uma tradução de um excelente artigo publicado originalmente no Tor Blog, o blog oficial do Tor Project. Nele, é descrito um tutorial de como reforçar ao máximo a privacidade e anonimato do Android. De quebra, você acaba cortando fora as garras do Google sobre o seu dispositivo.

Aqui fica um disclaimer: O artigo é de 2014, algumas informações estão desatualizadas como por exemplo o Cyanogenmod foi descontinuado e sucedido pelo Lineage OS. Não lhe recomendo ir fazendo esse tutorial à risca muito menos antes de ler tudo pelo menos duas vezes. Esse tutorial serve principalmente como referência para que cada um crie suas próprias medidas de segurança. Caso queira esclarecer alguma coisa, precisar de ajuda com alguma parte do tutorial ou reportar algum erro ortográfico/de tradução, esse é o meu Twitter.


Missão Impossível: Reforçando o Android para Privacidade e Segurança

Artigo original por mikeperry em 02 de Abril de 2014

Sumário executivo

O futuro chegou, e antes do previsto. Venha conosco, o clima está ótimo. Esse post no blog descreve a instalação e configuração de um protótipo de um dispositivo Android completo e seguro, com pleno suporte ao Tor, firewall individual para cada app, verdadeiramente isolado do baseband de redes móveis, e opcionalmente suportando chamadas de voz e vídeo encriptadas por ZRTP. O ZRTP roda sobre o UDP, que ainda não é possível através do Tor, porém podemos fazer login na conta de SIP e configurar a chamada pelo Tor independentemente.

O cliente SIP que nós recomendamos também suporta discagem normal para números de telefone se vc tiver um provedor SIP que provê serviço de “entroncamento”.

Além de vários binary blobs para gerenciar o firmware e aceleração gráfica do dispositivo, o sistema inteiro pode ser montado (e recompilado) usando apenas componentes “Free and Open Source Software”(FOSS). Porém, como bônus adicional, nós vamos descrever como lidar com a Google Play Store para amenizar os dois infames backdoors da Google Play.

Introdução

O Android é a plataforma mobile mais popular do mundo, com uma grande variedade de aplicações, incluindo várias que auxiliam na comunicação segura, evasão de censura e organização ativista. Mais do que isso, o coração do sistema Android é Open Source, auditável e modificável por qualquer um.

Infelizmente, os dispositivos móveis em geral e os Android em particular não foram projetados tendo em mente a privacidade. De fato, eles parecem que foram projetados com o objetivo contrário: tornar fácil para terceiros, companhias de telecomunicações, adversários grandes e sofisticados como um Estado e até hackers aleatórios extrair de todas as formas informações pessoais do usuário. Isso inclui todo o conteúdo de comunicações pessoais com parceiros de negócios e entes queridos. Pior ainda, por padrão, ao usuário é dado muito pouco em termos de controle ou mesmo consentimento informado sobre quais informações estão sendo coletadas e como.

Esse post visa abordar isso, mas primeiro devemos admitir que estamos nas o costas dos gigantes. Organizações com Cyanogen, F-Droid, o Guardian Project e tantas outras têm feito um grande trabalho para tentar melhorar essa situação para restaurar o controle dos dispositivos Android aos usuários e garantir a segurança das nossas comunicações pessoais. Contudo, todos esses projetos têm deficiências e muitas vezes deixam brechas no que fornecem e protegem. Mesmo esses caso onde os recursos apropriados segurança e privacidade existem, eles tipicamente requerem uma configuração extensiva para serem usados de forma segura e correta.

Esse post no blog enumera e documenta essas brechas,descreve as soluções alternativas para deficiências sérias e dá sugestões para o trabalho futuro.

Também deve servir como um tutorial (HOWTO) para orientar pessoas tecnicamente capazes e interessadas através da instalação e configuração de um dispositivo Android seguro e privado de ponta a ponta, onde o acesso à rede é restrito a uma lista de aplicativos aprovados e todo o tráfego é encaminhado através da rede Tor.

A nossa esperança é que esse trabalho possa ser replicado e, eventualmente, totalmente automatizado, dando uma boa interface de usuário e colocado em uma única ROM ou pacote ROM addon para facilidade de uso. Em última análise, não há razão para que esse sistema não se torne um produto completo pronto para uso, dado suporte de hardware adequado e boa interface de usuário para os bits mais técnicos.

O restante deste documento está dividido nas seguintes seções:

1 - Escolha do Hardware 
2 - Instalação e configuração
3 - Configuração do Google Apps
4 - Software recomendado
5 - Procedimento de backup do dispositivo
6 - Removendo o microfone embutido
7 - Trabalho futuro
8 - Mudanças desde a postagem inicial

Seleção de Hardware

Se você realmente deseja proteger seu dispositivo mobile de ser comprometido remotamente, é necessário escolher seu hardware cuidadosamente. Primeiramente, é absolutamente necessário que o baseband firmware da operadora esteja isolado do resto da plataforma. Pois o baseband do seu telefone não autentifica a rede (em parte para permitir roaming), qualquer hacker aleatório com sua própria rede de telefonia pode explorar esse backdoor e usá-lo para instalar malwares no seu dispositivo.

Embora existam projetos em andamento para determinar quais aparelhos realmente fornecem real isolamento do baseband firmware, no momento em que este artigo foi escrito, há muito pouca informação pública disponível sobre este assunto. Consequentemente, a única opção segura que resta é um dispositivo sem suporte a redes móveis (porém essa conexão de redes móveis pode ser feita por um dispositivo separado). Para os propósitos desse post, o dispositivo de referência é a versão apenas WiFi do tablet Google Nexus 7 de 2013.

Para os usuários que desejam acesso completo a redes móveis, nós recomendamos comprar um dispositivo modem de celular que provenha um ponto de acesso WiFi apenas para serviços de dados. Esses dispositivos não possuem microfones e, em alguns casos, nem mesmo têm uma unidade precisa de GPS (porque eles não são capazes de fazer chamadas de emergência). Eles também estão disponíveis com planos pré-pagos, por taxas por volta de 20 ou 30 dólares por mês, para mais ou menos 2GB de dados 4G por mês. Se a cobertura e a confiabilidade são importantes para você, você pode optar por uma operadora um pouco mais cara. Nos EUA, T-Mobile não é ruim, mas Verizon é excelente.

Para prolongar a bateria da sua conexão celular, você pode conectar este ponto de acesso a uma bateria externa, que normalmente fornecerá 36 a 48 horas de uso contínuo com uma bateria de 6000mAh.

O custo total de um tablet Wifi-only com modem celular e bateria é de, aproximadamente, US$50 a mais do que a versão 4G LTE do mesmo dispositivo.

Dessa forma, você obtém um real isolamento do broadband, sem risco de vigilância de áudio ou rede, exploits do baseband ou backdoors no provedor. Efetivamente, este modem celular é apenas mais um roteador não confiável em uma longa e longa cadeia de infraestrutura de Internet não confiável.

No entanto, observe que, mesmo que a unidade celular não contenha um GPS preciso, você ainda sacrifica a privacidade da sua localização enquanto a usa.

Depois de um longo período de tempo, será possível tirar conclusões sobre sua atividade física, comportamento, preferências pessoais e sua identidade, com base apenas no uso da torre de celular.

Instalação e Configuração

Nós iremos focar na instalação do Cyanogenmod 11 usando o Team Win Recovery Project (TWRP), ambos para dar a esse tutorial uma vida útil, e porque o Cyanogenmod 11 oferece suporte completo ao SELinux (Querida NSA: O que aconteceu com vocês cara? Vocês costumavam ser legais. Bem, alguns de vocês. Algumas vezes. Talvez. Ou talvez não.

O uso do Google Apps e da Google Play não são recomendados devido a problemas de segurança com a Google Play. No entanto, fornecemos alternativas para atenuar esses problemas, se o uso da Google Play for necessário para o seu caso.

Instalação da ROM e do Core App

Com o tablet Nexus 7, a instalação é bastante simples. De fato, atualmente é possível instalar e usar o dispositivo antes de vinculá-lo a uma conta do Google de qualquer maneira. Essa é uma propriedade desejável, porque, por padrão, o processo de configuração inicial da Google ROM envia o endereço MAC do dispositivo diretamente para o Google e vincula-o à sua conta do Google (tudo isso sem usar o Tor, é claro).

As instruções de instalação oficiais do Cyanogenmod estão disponíveis online, porém com um dispositivo novo fora da caixa, aqui estão os passos para instalação sem ativar o código ROM padrão em tudo (usando o TWRP em vez do ClockWorkMod).

Primeiramente, no seu computador ou notebook (de preferência Linux), faça o seguinte:

  1. Faça o download da última versão do Cyanogenmod (nós usamos a cm-11–20140504-SNAPSHOT-M6)
  2. Faça o download da última imagem do TWRP (nós usamos a 2.7.0.0)
  3. Faça o download da última versão do F-Droid package (nós usamos a 0.66)
  4. Faça o download da última versão do pacote Orbot a partir do F-Droid (nós usamos a 13.0.7)
  5. Faça o download da última versão do pacote Droidwall a partir do F-Droid (nós usamos a 1.5.7)
  6. Faça o download dos scripts do Droidwall Firewall anexados a esse post
  7. Faça o download do Google Apps para o Cyanogenmod (opcional e não recomendado

Por que a integridade do download de todos esses pacotes é extremamente ruim, aqui está um conjunto assinado de hashes SHA256 que eu guardei para esses pacotes.

Uma vez que você tenha todos esses pacotes, dê boot no modo fastboot de seu tablet apertando o botão de Ligar/Desligar e abaixar o volume ao mesmo tempo enquanto o aparelho está desligado. Depois, plugue-o no seu computador ou notebook com um cabo USB e digite os seguintes comandos no terminal do Linux/Unix:

$ apt-get install android-tools-adb android-tools-fastboot 
$ fastboot devices
$ fastboot oem unlock
$ fastboot flash recovery SUA-IMAGEM-TWRP.img

Depois que o recovery firmware for gravado com sucesso, use os botões de volume para selecionar a opção “Recovery” e use o botão de Ligar/Desligar para reiniciar o dispositivo(ou então desligue-o e ligue segurando os botões Ligar/Desligar e abaixar volume ao mesmo tempo).

Uma vez que o TWRP inicialize, vá para “Wipw” e selecione “Advanced Wipe”. Marque toda as opções exceto USB-OTG e deslize para limpar o dispositivo. Uma vez que a limpeza foi feita, clique em “Format Data”. Depois que a formatação estiver completa, insira esses comandos a partir do terminal:

$ adb server start 
$ adb push SUA-IMAGEM-ROM-CYNOGENMOD-OU-LINEAGE-OS.zip /sdcard/
$ adb push PACOTE-DO-GOOGLE-APPS.zip /sdcard/ # Optional

Depois que esse processo de envio for concluído, vá para o menu “Install” e selecione o .zip do Cyanogenmod e, opcionalmente, o .zip do GApps para instalação. Em seguida, clique em “Reboot” e selecione “System”.

Após reiniciar a sua nova instalação, pule todas as configurações iniciais do CyanogenMod e do Google, desative “location reporting” e desabilite imediatamente o Wi-Fi e ative o modo Avião.

Depois, vá para Settings -> About Tablet, role até a parte inferior e clique em “Build Number” em cinza 5 vezes até que o modo de desenvolvedor esteja ativado. Então, vá em Settings -> Developer Options e ative a opção “USB Debugging”.

Após isso, rode os seguintes comandos no terminal:

$ adb install FDroid.apk 
$ adb install org.torproject.android_86.apk
$ adb install com.googlecode.droidwall_157.apk

Você precisará permitir a conexão ADB para o primeiro pacote e, em seguida, eles devem ser instalados normalmente.

[!] IMPORTANTE: Sempre que você terminar de usar o adb, lembre-se sempre de desabilitar o USB Debugging e restaurar “Root Access to Apps only”. Embora as ROMs Android 4.2 ou superiores agora solicitem a autorização de uma impressão digital da chave RSA antes de permitir uma conexão de debugging (diminuindo as ferramentas de exploitação adb que ignoram o bloqueio de tela e podem instalar aplicativos root), você ainda arrisca uma superfície de vulnerabilidade adicional deixando o debugging ativado.

Configuração Inicial

Depois que os pacotes básicos estão estalados, vá para o aplicativo de configurações, e faça as seguintes mudanças:

Wireless & Networks More... =>

Temporariamente ative o modo avião
NFC -> Desativado
Reative o modo avião

Acesso de localização -> Off
Security =>

PIN na tela de bloqueio
Permitir fontes desconhecidas (Para o F-Droid)

Language & Input =>

Verificador ortográfico -> Verificador ortográfico do Android -> Desativar nomes de contatos
Desativar a detecção do Google Voice Typing / Hotword
Android Keyboard (AOSP) =>
Desative a sugestão de palavra seguinte do AOSP (faça isso primeiro!)
Auto-correction -> Off

Backup & reset =>

Permitir o Backup automático (apenas temporariamente, para o próximo passo)
Desmarque a restauração automática
Desative o Backup automático

About Tablet -> Cyanogenmod Statistics -> Desativar relatórios
Opções de desenvolvedor -> Nome do dispositivo -> localhost
SuperUser -> Configurações (três pontos) -> Notificações -> Notificações (not toast)
Privacy -> Privacy Guard =>

Ativado por padrão
Configurações (três pontos) -> Mostrar aplicativos incorporados
Ative o Privacy Guard para todos os aplicativos com as seguintes exceções:
Calendar
Config Updater
Google Account Manager (pressione por um tempo)
Modify Settings -> Off
Wifi Change -> Off
Data Change -> Off
Google Play Services (pressione por um tempo)
Location -> Off
Modify Settings -> Off
Draw on top -> Off
Record Audio -> Off
Wifi Change -> Off
Google Play Store (pressione por um tempo)
Location -> Off
Send SMS -> Off
Modify Settings -> Off
Data change -> Off
Google Services Framework (pressione por um tempo)
Modify Settings -> Off
Wifi Change -> Off
Data Change -> Off
Trebuchet

Agora, é hora de encriptar o seu tablet. É importante fazer esse passo antecipadamente, eu notei que apps e ajustes adicionais podem fazer esse processo falhar mais tarde.

Nós também podemos fazer isso a partir da linha de comando, a fim de definir uma senha diferente do PIN da tela de desbloqueio. Isso é feito para reduzir o risco de comprometimento dessa senha, e para permitir o uso de uma senha muito mais longa (e não-numérica) que você deve não preferir digitar toda hora para desbloquear a tela.

Para fazer isso, abra o app Terminal, e escreva os seguintes comandos:

$ su 
$ vdc cryptfs enablecrypto inplace NOVA-SENHA-MAIS-SEGURA

Preste atenção para erros de digitação! Esse comando não pede que você redigite a senha para confirmação.

Desabilitando apps e serviços invasivos

Antes que você configure o Firewall ou ative a rede, provavelmente desejará desabilitar pelo menos um subconjunto dos seguintes aplicativos e serviços internos, usando Configurações -> Aplicativos -> Todos e clique em cada aplicativo e pressionando o botão Desativar:

com.android.smspush
com.google.android.voicesearch
Face Unlock
Google Backup Transport
Google Calendar Sync
Google One Time Init
Google Partner Setup
Google Contacts Sync
Google Search
Hangouts
Market Feedback Agent
News & Weather
One Time Init
Picasa Updater
Sound Search for Google Play
TalkBack

Configurações do Tor e do Firewall

Ok, agora vamos instalar os scripts do firewall e suporte ao TOR. Volte para Configurações -> Opções de Desenvolvedor e ative o USB Debugging e mude o acesso root para Apps and ADB. Depois, descompacte o android-firewall.zip no seu PC, e rode o script de instalação: https://gist.github.com/c28fdbdb8d1f1d9b7d84d371f863ec30

Essa instalação do firewall vai fornece vários scripts principais que fornecem funcionalidade que atualmente é impossível de alcançar com qualquer aplicativo (incluindo o Orbot):

  1. Instale um userinit script para bloquear todo acesso a rede durante o boot.
  2. Desativa a “Detecção de portal cativo do Google”, que envolve tentativas de conexão com servidores do Google por meio da associação Wi-Fi (essas solicitações são feitas pelo configurações de UID do Android, que normalmente deve ser bloqueado da rede, a menos que você se registre na Google Play).
  3. Ele contém o script do Droidwall que configura regras do Tor transproxy para enviar todo seu tráfego através do Tor. Essas regras incluem uma correção para um problema de vazamento de pacote transproxy do kernel Linux.
  4. O script principal do Droidwall, firewall-torify-all.sh, também inclui um firewall de entrada, para bloquear todas as conexões que entram no dispositivo. Ele também corrige a vulnerabilidade nas permissões do Droidwall.
  5. Ele instala um script opcional para permitir o Browser “pular” o Tor para fazer login em alguns sites de login roteadores WiFi.
  6. Ele instala um script opcional para permitir a rede adb acessar quando você precisar dela (se você é paranóico com exploits USB, e você deveria ser).
  7. Ele instala um script opcional para permitir que a atividade UDP do LinPhone “pule” o Tor, para permitir ZRTP-encrypted Voice e chamadas de vídeo SIP/VoIP. O login/cadastro em contas SIP e configuração/sinalização de chamadas podem ser feitos sobre o TCP, e a atividade TCP do Linphone continua enviando através do Tor com esse script.

Note que com a exceção do script de bloqueio de rede userinit, instalar esses scripts não os ativa. Nós ainda precisamos configurar o Droidwall para usá-los.

Nós usamos o Droidwall em vez do Orbot ou AFWall+ por cinco motivos:

  1. O aplicativo baseado em firewall Droidwall e o transproxy do Orbot são desconhecidos por conflitarem e reiniciarem um ao outro.
  2. O Droidwall não descarta aleatoriamente as regras do transproxy ao trocar de rede (o Orbot já teve vários erros desse tipo).
  3. Diferentemente do AFWall+, o Droidwall pode ser automaticamente inicializado no “boot” (embora não antes da rede e dos Serviços Android ficarem on-line e façam conexões).
  4. A “solução” do AFWall+ para o problema de vazamento de dados na inicialização não funciona no Cyanogenmod (daí usamos nosso userinit script).
  5. Além do problema de permissões corrigido pelo nosso script firewall-torify-all.sh, o AFWall + não fornece correções de segurança adicionais sobre o Droidwall padrão.

Para fazer uso dos scripts de firewall, abra o Droidwall e clique no botão de configurações (os três pontos veticais), vá para More -> Set Custom Script. Digite o seguinte:

https://gist.github.com/4fe94bdb89751d25b6b3f647c9ea83eb

IMPORTANTE: não se esqueça de desabilitar o “USB Debugging”, bem como a exceção do Adb Droidwall quando terminar o backup!

Removendo o Microfone Embutido

Tem mais uma modificação quase-de-hardware ou “semi-hardware mod” que você pode desejar fazer.

Acontece que o Wifi Nexus 7 de 2013 tem realmente uma partição que contém um firmware baseband, localizado no sistema de arquivos como o dispositivo de bloco /dev/block/platform/msm_sdcc.1/by-name/radio. Se você executar strings nesse dispositivo de bloco a partir do shell, poderá ver que todos os tipos de mensagens de log, comentários e símbolos de CDMA e GSM estão presentes nessa partição.

De acordo com os logs do ADB, o CyanogenMod 11 realmente tenta criar uma de rede celular de rádio na inicialização do meu Nexus 7 somente Wifi, mas falha devido a ele estar desativado. Há também um forte incentivo econômico para a Asus e o Google tornarem extremamente difícil ativar o baseband mesmo se o hardware for idêntico por razões de fabricação, já que eles vendem a versão somente Wi-Fi por US$ 100 a menos. Se fosse fácil reativar a banda de base, os HOWTOs existiriam (o que eles não aparecem, pelo menos ainda não), e eles parariam suas vendas de dispositivos LTE (com rede celular).

Mesmo assim, como não temos os projetos públicos do Nexus 7 para verificar se os componentes das células estão realmente ausentes ou desativados por hardware, convém limpar esse firmware de rádio também, como defesa profunda.

Para fazer isso, abra o Terminal e execute:

https://gist.github.com/fb250c1330f9b5405f80cbd6af66a688

Limpei essa partição enquanto o dispositivo estava em execução sem qualquer problema ou quaisquer erros adicionais nos logs do ADB.

Observe que um comentador anônimo também sugeriu que é possível desativar o baseband de um dispositivo cell-enabled usando uma série de comandos de desativação de serviço do Android e limpando esse dispositivo de bloqueio de rádio. Eu não testei isso em um dispositivo que não seja o Nexus 7 somente com WiFI, portanto, continue com cautela. Se você tentar essas etapas em um dispositivo cell-enabled, deverá arquivar primeiro uma cópia do firmware do seu rádio, fazendo o seguinte, a partir do diretório dev que contém o dispositivo de bloqueio do firmware do rádio.

https://gist.github.com/e2153c39e385c7e0d3d84fb57966398d

Se algo der errado, você poderá restaurar a imagem com:

https://gist.github.com/d05f1eb8c794aac48ed233abaf31f977

Trabalho Futuro

Além de simplificar o conteúdo deste post em um único arquivo zip adicional para instalação do CyanogenMod ou ROM alternativa, os seguintes problemas permanecem sem solução.

Melhor usabilidade

Embora indiscutivelmente muito seguro, este sistema está obviamente longe de ser utilizável. Aqui estão algumas melhorias possíveis para a interface do usuário, com base em uma sessão de brainstorming que tive com outro desenvolvedor interessado.

Em primeiro lugar, a interface do usuário AFWall + / Droidwall deve ser alterada para um estado triplo: ela deve permitir que você envie o tráfego do aplicativo por meio do Tor, sobre sua conexão normal com a Internet ou bloqueie-o completamente.

Em seguida, durante a instalação do aplicativo do F-Droid ou Google Play (este é um objetivo que outro addon pode suprir de uma vez), o usuário deve ter a chance de decidir se gostaria que o tráfego desse aplicativo fosse roteado por Tor, use a conexão normal com a Internet ou bloquear totalmente o acesso à rede. Atualmente, o padrão Droidwall para novos aplicativos é “sem rede”, que é um ótimo padrão, mas seria bom perguntar aos usuários o que eles gostariam de fazer durante a instalação real do aplicativo.

Além disso, os usuários também devem ter a chance de editar as permissões do aplicativo após a instalação, caso desejem fazê-lo.

A situação do Google Play também pode ser amplamente melhorada, caso o próprio Google ainda não se mostre disposto a melhorar a situação. O Google Play pode ser agrupado em um aplicativo inicializador que concede automaticamente acesso à rede antes do lançamento e, em seguida, o desativa ao sair da janela.

Uma interface semelhante poderia ser adicionada ao LinPhone. Como o transporte real de voz e vídeo para o LinPhone não usa o Tor, é possível que um adversário saiba seu ID de SIP ou número de telefone e, em seguida, ligue para você apenas para fins de aprendizado do seu IP. Como lidamos com a configuração de chamadas pelo Tor, podemos impedir que o LinPhone realize qualquer atividade do UDP ou divulgue seu IP para o chamador antes da aprovação da chamada pelo usuário. Idealmente, também gostaríamos de informar ao usuário que as chamadas recebidas podem ser usadas para obter informações sobre elas, pelo menos antes de aceitar sua primeira ligação de uma parte desconhecida.

Encontre Hardware com Basebands Realmente Isolados

Relacionado à usabilidade, seria bom se pudéssemos ter um sério esforço da comunidade para auditar as propriedades de isolamento de baseband dos telefones celulares existentes, para que todos nós não tenhamos que carregar essas ridículas baterias e construir wi-fi bridges. Não há nenhuma razão de engenharia porque esse protótipo não poderia ser tão seguro se fosse um único hardware. Nós só precisamos encontrar o hardware certo.

Um comentarista aleatório alegou que o Galaxy Nexus poderia ter exatamente o tipo de isolamento de baseband que queremos, mas o comentário veio da memória e baseado em esforços de engenharia reversa em software que não foram documentados publicamente. Precisamos fazer melhor que isso.

Programa de Bug Bounty

Se houver interesse suficiente neste protótipo, e / ou se for transformado em um addon utilizável ou ROM, podemos considerar a execução de um programa de recompensas de erros onde aceitamos doações para um endereço de Bitcoin dedicado e concedemos o conteúdo dessa carteira para qualquer um que descubra um problema de desvio de proxy Tor ou vulnerabilidade de execução remota de código em qualquer um dos aplicativos habilitados para rede mencionados nesta postagem (exceto o aplicativo Navegador, que não recebe atualizações de segurança).

Levar o Tor Browser para o Android

O The Guardian Project está desenvolvendo uma versão do Tor Browser para Android como parte do projeto OrFox. Isso melhorará muito a privacidade da experiência de navegação Web em dispositivos Android tanto no Firefox quanto no Chrome. Estamos ansiosos para ajudá-los de qualquer maneira com esse esforço.

Randominzação de endereços MAC em WiFi

Na verdade, é possível aleatorizar o endereço MAC WiFi no Google Nexus 7. O aplicativo root de código fechado Mac Spoofer é capaz de modificar o endereço MAC do dispositivo usando métodos específicos da Qualcomm, de modo que todo o sistema operacional Android fique convencido de que é o seu MAC atual.

No entanto, para isso, é necessário instalar um aplicativo de código fechado com privilégios root na Google Play Store, o que acreditamos ser extremamente imprudente em um dispositivo no qual você precisa confiar. Além disso, este aplicativo não pode ser executado automaticamente na inicialização, e seu endereço MAC também será redefinido toda vez que você desativar a interface WiFi (o que é fácil de fazer acidentalmente). Ele também suporta o uso de um único endereço MAC inserido manualmente.

Técnicas independentes de hardware (como o comando “busybox ifconfig wlan0 hw ether “) parecem interferir no sistema de gerenciamento WiFi e impedir sua associação. Além disso, eles não fazem com que o sistema Android relate o novo endereço MAC (visível em “Settings -> About Tablet -> Status”).

Obviamente, um aplicativo F-Droid de código aberto que redefine corretamente (e randomiza automaticamente) o MAC toda vez que a interface WiFi é ativada é extremamente necessário.

Desabilite sondagem para redes Wi-Fi configuradas

O sistema operacional Android atualmente investiga todas as suas redes Wi-Fi configuradas enquanto procura por wi-fi aberto para se conectar. As redes configuradas não devem ser investigadas explicitamente, a menos que a atividade de seu BSSID seja vista. O fórum de desenvolvedores xda tem soluções limitadas para alterar o comportamento de varredura, mas os usuários relatam que ele não desabilita o comportamento de sondagem ativo para qualquer rede “oculta” que você tenha configurado.

Senha de proteção no TWRP

Uma ROM de recuperação desbloqueada é uma enorme superfície de vulnerabilidade para o Android. Enquanto a criptografia de disco protege seus aplicativos e dados, ela não protege muitos binários do sistema principal e programas de inicialização. Com o acesso físico, é possível modificar esses binários através da sua ROM de recuperação.

A capacidade de definir uma senha para o TWRP em vez de uma simples “fastboot flash recovery” ajudaria muito a melhorar a segurança do dispositivo. Pelo menos ficaria evidente para você se sua ROM de recuperação foi substituída, neste caso (devido à ausência da senha).

Também pode ser possível restaurar o bootloader bloqueado como alternativa, mas você perde a capacidade de fazer backups de seu sistema usando o Team Win.

Criptografia de Disco via TPM ou Hacks Inteligentes

Infelizmente, até mesmo a criptografia de disco e um firmware de recuperação seguro não são suficientes para se defender totalmente de um adversário com acesso físico ao seu dispositivo porum longo período.

Cold Boot Attacks ainda são uma realidade contra qualquer forma de criptografia de disco, e a melhor maneira de eliminá-los é através do armazenamento seguro de chaves assistido por hardware, como através de um chip TPM no próprio dispositivo.

Também pode ser possível atenuar esses ataques colocando o material da chave em locais da memória SRAM que serão sobrescritos como parte do processo de boot ARM. Se esses locais de memória física forem estáveis (e para sistemas ARM que usam o SoC SRAM para inicializar, eles serão), a reinicialização do dispositivo para extrair o material da chave sempre acabará sobrescrevendo-o. Defesas de criptografia baseadas em CPU ARM semelhantes também foram exploradas na literatura científica.

Integridade do Processo de Download e Build

Além das questões de integridade de download mencionadas acima, a melhoria da segurança de construção também é profundamente necessária para todos esses projetos. Um “Gitian descriptor” que seja capaz de construir pacotes Cyanogenmod e F-Droid arbitrários de uma forma reproduzível é uma maneira de alcançar essa propriedade.

Removendo Blobs

Se você ler de perto as instruções de compilação do CyanogenMod, verá que é necessário extrair os blobs binários de algum telefone aleatório e enviá-los para fora. Este é o caso da maioria das ROMs. Na verdade, apenas o Replicant Project parece preocupado com essa prática, mas, lamentavelmente, eles não suportam nenhum dispositivo somente wifi. Isso é bastante lamentável, porque não importa o que eles façam com o Android em dispositivos existentes habilitados para redes celulares, eles sempre ficarão presos a um baseband fechado, que tem acesso direto ao microfone, se não à RAM e ao Android inteiro.

Parabéns a eles por encontrarem um dos backdoors, pelo menos.

Mudanças desde a postagem inicial

  1. Scripts de firewall atualizados para corrigir a vulnerabilidade de permissões do Droidwall.
  2. Lista atualizada de aplicativos para recomendar o VLC como um media player gratuito.
  3. Menção a versão planejada do Tor Browser do PGuardian Project (chamada OrFox) como Trabalho Futuro.
  4. Mencione a desativação da configuração da auto-pesquisa da rede WiFi como Trabalho Futuro
  5. Atualizado o script de instalação do firewall (e o android-firewall.zip que o contém) para desabilitar as conexões de “Captive Portal detection” no Google mediante associação WiFi. Essas conexões são feitas pelo serviço de configurações do usuário, que normalmente deve ser bloqueado, a menos que você esteja ativando o Google Play pela primeira vez.
  6. Atualizada a seção Resumo executivo para deixar claro que nosso cliente SIP também pode fazer chamadas telefônicas normais.
  7. Documento de remoção do microfone embutido, para o povo verdadeiramente paranoico lá fora.
  8. Documento removendo os remanescentes do baseband ou desabilitando um baseband existente.
  9. Atualizar SHA256SUM do FDroid.apk para 0,63
  10. Remover o uso de várias portas do script firewall-torify-all.sh (e atualizar android-firewall.zip).
  11. Adicione a dica à seção de remoção de microfone: não remova suas câmeras. A fita isolante preta funciona bem e pode ser removida e reaplicada muitas vezes sem manchas.
  12. Atualize a instalação e documentação do android-firewall.zip para usar “/data/local” em vez de “/etc”. Atualizações do CM limparão o “/etc”, é claro. Woops. Se isso aconteceu com você durante a atualização para o CM-11-M5, faça o download desse novo android-firewall.zip e execute o install-firewall.sh novamente conforme as instruções acima, e atualize seus locais de script personalizado do Droidwall para usar “/data/local”.
  13. Atualize a seção de trabalho Futuro para descrever algumas melhorias específicas da interface do usuário.
  14. Atualize a seção de trabalho Futuro para mencionar que precisamos encontrar hardware com basebands realmente isolados. Duh. Isso deveria ter acontecido muito antes.
  15. Atualize as versões de tudo.
  16. Sugira a habilitação da criptografia de disco diretamente do shell, para evitar vazamentos de SSD do material da chave do dispositivo originalmente criptografado por PIN.
  17. O acesso à rede do GMail parece ser necessário para a inicialização da App Store agora. Mencione isso na seção do Google Apps.
  18. Mencione K-9 Mail, APG e Plumble na seção Apps Recomendados.
  19. Atualize as instruções do Firewall para esclarecer que você precisa garantir que não há erros de digitação nos scripts e, na verdade, clique no botão Droidwall UI para ativar o firewall Droidwall (caso contrário, a rede não funcionará devido a userinit.sh).
  20. Desativar NFC na configuração.