Install Burp Certificate
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
Em uma Máquina Virtual
Primeiro de tudo, você precisa baixar o certificado Der do Burp. Você pode fazer isso em Proxy --> Options --> Importar / Exportar certificado CA
Exporte o certificado no formato Der e vamos transformá-lo em uma forma que o Android vai conseguir entender. Note que para configurar o certificado burp na máquina Android no AVD você precisa executar esta máquina com a opção -writable-system
.
Por exemplo, você pode executá-la assim:
Então, para configurar o certificado do burp:
Uma vez que a máquina terminar de reiniciar, o certificado burp estará em uso por ela!
Usando Magisc
Se você rootou seu dispositivo com Magisc (talvez um emulador), e você não consegue seguir os passos anteriores para instalar o certificado Burp porque o sistema de arquivos é somente leitura e você não pode remontá-lo como gravável, há outra maneira.
Explicado em este vídeo, você precisa:
Instalar um certificado CA: Basta arrastar e soltar o certificado Burp DER mudando a extensão para
.crt
no celular para que ele seja armazenado na pasta Downloads e ir paraInstalar um certificado
->Certificado CA
Verifique se o certificado foi armazenado corretamente indo para
Credenciais confiáveis
->USUÁRIO
Torná-lo confiável pelo sistema: Baixe o módulo Magisc MagiskTrustUserCerts (um arquivo .zip), arraste e solte no telefone, vá para o aplicativo Magics no telefone na seção
Módulos
, clique emInstalar do armazenamento
, selecione o módulo.zip
e, uma vez instalado, reinicie o telefone:
Após reiniciar, vá para
Credenciais confiáveis
->SISTEMA
e verifique se o certificado Postswigger está lá
Pós Android 14
Na última versão do Android 14, uma mudança significativa foi observada no manuseio de certificados de Autoridade Certificadora (CA) confiáveis pelo sistema. Anteriormente, esses certificados estavam localizados em /system/etc/security/cacerts/
, acessíveis e modificáveis por usuários com privilégios de root, o que permitia aplicação imediata em todo o sistema. No entanto, com o Android 14, o local de armazenamento foi movido para /apex/com.android.conscrypt/cacerts
, um diretório dentro do caminho /apex
, que é imutável por natureza.
Tentativas de remontar o caminho APEX cacerts como gravável falham, pois o sistema não permite tais operações. Mesmo tentativas de desmontar ou sobrepor o diretório com um sistema de arquivos temporário (tmpfs) não contornam a imutabilidade; os aplicativos continuam a acessar os dados do certificado original, independentemente das mudanças no nível do sistema de arquivos. Essa resiliência se deve ao montagem /apex
ser configurada com propagação PRIVADA, garantindo que quaisquer modificações dentro do diretório /apex
não afetem outros processos.
A inicialização do Android envolve o processo init
, que, ao iniciar o sistema operacional, também inicia o processo Zygote. Este processo é responsável por lançar processos de aplicativos com um novo namespace de montagem que inclui uma montagem privada /apex
, isolando assim as mudanças neste diretório de outros processos.
No entanto, existe uma solução para aqueles que precisam modificar os certificados CA confiáveis pelo sistema dentro do diretório /apex
. Isso envolve remontar manualmente /apex
para remover a propagação PRIVADA, tornando-o gravável. O processo inclui copiar o conteúdo de /apex/com.android.conscrypt
para outro local, desmontar o diretório /apex/com.android.conscrypt
para eliminar a restrição de somente leitura e, em seguida, restaurar o conteúdo ao seu local original dentro de /apex
. Essa abordagem requer ação rápida para evitar falhas no sistema. Para garantir a aplicação em todo o sistema dessas mudanças, é recomendável reiniciar o system_server
, que efetivamente reinicia todos os aplicativos e traz o sistema a um estado consistente.
Bind-mounting through NSEnter
Configurando um Diretório Gravável: Inicialmente, um diretório gravável é estabelecido montando um
tmpfs
sobre o diretório de certificados do sistema não-APEX existente. Isso é alcançado com o seguinte comando:
Preparando Certificados CA: Após a configuração do diretório gravável, os certificados CA que se pretende usar devem ser copiados para este diretório. Isso pode envolver a cópia dos certificados padrão de
/apex/com.android.conscrypt/cacerts/
. É essencial ajustar as permissões e os rótulos SELinux desses certificados de acordo.Montagem Bind para Zygote: Utilizando
nsenter
, entra-se no namespace de montagem do Zygote. O Zygote, sendo o processo responsável por iniciar aplicativos Android, requer esta etapa para garantir que todos os aplicativos iniciados a partir de agora utilizem os novos certificados CA configurados. O comando utilizado é:
Isso garante que cada novo aplicativo iniciado seguirá a configuração atualizada dos certificados CA.
Aplicando Mudanças em Aplicativos em Execução: Para aplicar as mudanças em aplicativos já em execução,
nsenter
é novamente usado para entrar no namespace de cada aplicativo individualmente e realizar um bind mount semelhante. O comando necessário é:
Abordagem Alternativa - Reinicialização Suave: Um método alternativo envolve realizar o bind mount no processo
init
(PID 1) seguido por uma reinicialização suave do sistema operacional com os comandosstop && start
. Essa abordagem propagaria as mudanças por todos os namespaces, evitando a necessidade de abordar individualmente cada aplicativo em execução. No entanto, esse método é geralmente menos preferido devido ao inconveniente de reinicializar.
Referências
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2Fpentest.eu%2FRENDER_WebSec_10fps_21sec_9MB_29042024.gif&width=768&dpr=4&quality=100&sign=bc0743d1&sv=1)
Last updated