Muito bem, pessoal, bem-vindos de volta.
No último vídeo, vimos como podemos contornar a fixação do certificado, que se baseia em uma borda.
Neste vídeo, vamos dar uma olhada na segunda opção de fixação de certificado com base em um certificado retido.
E, para mim, honestamente, isso é muito mais fácil.
Portanto, é como ter um pônei embaixo da árvore de Natal.
Portanto, vamos dar uma olhada nisso.
Está bem.
Então, vamos dar uma olhada nisso.
Eu já fiz o download e ele está aqui.
Faça o download do certificado de pinning underscore cert.
Eu copio isso e vamos para o EPS e criamos um novo diretório e um certificado que fixa o início do sublinhado.
Muito bem, vamos instalar esse aplicativo e mantê-lo em primeiro plano.
Sim.
O ADB instalou o certificado fixando o certificado de sublinhado.
Sim.
Portanto, forneci o mesmo nome de pacote para este aqui e para o anterior.
Portanto, ambos os certificados pinning, underscore, search e hash têm o mesmo nome de pacote e também são
assinados com a mesma chave.
Portanto, substituímos a versão existente.
É por isso que agora temos esse incrível logotipo de pub aqui.
Portanto, isso não tem importância alguma.
Acabamos de substituir o antigo.
Muito bem.
Então, agora vamos abrir este.
E aqui podemos ver que ele está fazendo diretamente uma solicitação ao nosso endpoint de API.
E aqui está o mesmo texto.
E você também vê esse sucesso no final.
Também temos um layout muito bom aqui.
Será que temos?
Com certeza.
Portanto, também temos esse padrão.
Isso significa que podemos acionar essas solicitações com êxito e assim por diante.
O aplicativo está funcionando regularmente, o que significa que, se agora encontrarmos erros após a configuração
do nosso ataque man in the middle, isso pode estar relacionado ao nosso ataque man in the middle.
Então, primeiro vamos executar o pacote burp e, portanto, temos que ir para ferramentas e pacote burp e, em seguida, executar
a comunidade de senhas.
Vamos fechá-los.
Clique em next use verb default.
Está bem.
Sim, não estamos acima da velocidade.
Podemos encerrar esse caso.
Em seguida, nas opções de proxy, editamos essa interface, entramos em um 1040 201 específico e ativamos o proxy
invisível.
Tudo bem, isso parece bom no momento.
Portanto, vamos estabelecer nossas regras de tabela IP.
Portanto, estamos abrindo uma nova rota.
Está bem.
E agora queremos criar uma nova regra de tabela IP.
Talvez devêssemos primeiro imprimi-los.
Não há nada lá até o momento.
Não há tabelas de IP.
Não há.
Em seguida, queremos acrescentar uma nova regra de pré-roteamento.
O protocolo é o destino TCP.
A porta é 80 e queremos alterar o endereço de destino para o destino 1042 zero 188 e também
para https.
Está bem.
E podemos ver o Arrow.
Temos um ataque em andamento?
Então, de repente, apertei o botão ou a solicitação foi acionada novamente?
Não tenho certeza do motivo, mas vamos ver se, se apertarmos esse botão mais uma vez, ele será ativado.
Sim, no painel, obtemos uma seta de desvanecimento do TLS, negociamos uma conexão Telus, por exemplo.
Ponto com.
Nosso certificado é desconhecido.
Tudo bem.
Esse aplicativo parece fixar um certificado.
Não está mais funcionando.
Vamos dar uma olhada nisso.
Vamos fazer a engenharia reversa de como isso está sendo feito.
Muito bem.
Portanto.
Vamos fechá-los.
Em seguida, entramos nesse diretório e, desta vez, estou usando novamente o Shadi X e o Shadi School.
Portanto, o aplicativo está sendo descompilado.
É isso aí.
E nossa primeira olhada é no manifesto do Android.
De.
Aqui está.
Temos permissão da Internet.
É claro que só temos uma atividade.
E vejamos, temos a configuração de segurança de rede.
Sim, nós temos.
Ops.
Desculpe.
É isso aí.
Ele se encontra novamente no diretório XML desse aplicativo.
Portanto.
Ainda assim.
Podemos consultá-lo aqui no XML de recursos.
Temos esse arquivo de configuração e ele agora tem uma âncora de confiança relacionada a um certificado,
que está no diretório raw e se chama server.
Então, vamos dar uma olhada na matéria-prima.
Aqui está o servidor.
Esse é o formato binário desse certificado.
E podemos ver que ele está relacionado a example dot org.
Legal.
Isso parece muito promissor no momento.
Então, como esse certificado está sendo verificado no código do aplicativo?
Portanto, vamos dar uma olhada na atividade principal.
Este aqui.
Também podemos ver que o ajudante de piano cert parece promissor.
Portanto, dentro da atividade humana, temos nosso layout básico.
Depois, temos nossa classe herdada, nossa subclasse.
E este está fazendo algo no certificado de ajuda em segundo plano.
Este está chamando este aqui.
E aqui estamos fornecendo.
Sim.
Parametrizar algum contexto inclinado.
Então, vejamos, estamos abrindo este URL example dot com e tudo acontece depois.
Portanto, nosso certificado foi fixado.
Sim.
Parece estar relacionado a essa classe aqui.
Então, vamos dar uma olhada nesse caso.
Está bem.
Então, aqui estamos com o certificado e vamos dar uma olhada nele.
Nesta linha.
Essa é uma construção de que estamos criando um novo gerente de confiança 509.
Um gerenciador de confiança é simplesmente uma instância que gerencia nossos certificados.
Portanto, esse é um bom ponto aqui.
Vejamos, este está sendo inicializado com esta função e este tem outra função como parâmetro.
Então, vamos começar aqui.
E este está retornando um fluxo de entrada.
E esse fluxo de entrada está relacionado ao nosso servidor bruto de recursos.
Portanto, este é o nosso servidor, o arquivo que está sendo retornado nesse fluxo de entrada.
Legal.
Isso significa que, se você substituir o servidor, o arquivo neste será carregado no gerenciador de confiança
aqui.
Absolutamente perfeito.
Isso significa que não precisamos nos preocupar com outras coisas aqui.
Só precisamos substituir nosso servidor pelo do pacote burp.
Isso deve estar resolvido agora.
Caso contrário, teremos que nos aprofundar no assunto.
Mas, por enquanto, vamos lá.
Vamos dar uma olhada rápida.
Talvez.
Portanto, isso é apenas o retorno do nosso certificado.
Depois, temos esse gerenciador de confiança para certificados.
Este finalmente está retornando ao nosso gerente de confiança.
E este é o nosso certificado como entrada.
Aqui podemos ver essa instância de obtenção de fábrica realmente boa e certificada.
Portanto, aqui estamos gerando um novo certificado com base no nosso.
Se esse estiver vazio, estaremos criando uma nova senha e um novo armazenamento de chaves.
Tudo bem.
Caso contrário, continuaremos com este aqui.
Até o momento, parece muito bom.
Vamos simplesmente adotar a abordagem, substituindo o servidor, o arquivo e, em seguida, vamos ver se isso funciona.
Caso contrário, teremos que voltar ao assunto mais uma vez.
Muito bem.
Está bem.
Portanto, vamos encerrar este caso.
Vamos entrar em nosso diretório de aplicativos e descompilar essa ferramenta APK D.
Tudo bem.
Ele foi compilado.
Och cert pinning cert agora dentro de restos.
Rugir.
Ops.
Todos.
Tudo bem.
Está bem.
Portanto, agora estamos no cert pinning cert rice no diretório raw e aqui temos o servidor,
o cert.
Se clicarmos duas vezes neste, poderemos ver que este é o certificado que pode ser fixado.
Ele se refere a example dot org.
Portanto, estamos bastante confiantes de que esse é o certo.
Está bem.
Portanto, o que precisamos fazer é simplesmente obter nossa certidão de nascimento no formato e substituí-la
por esta aqui.
Isso é tudo.
Vamos para a suíte de arrotos.
Opções de proxy.
Certificado de importação e exportação.
O formato.
Em seguida, selecione-o aqui.
Converta o.
Ah.
Salvar.
E agora vamos entrar nesse diretório.
Basta arrastá-lo e soltá-lo aqui.
Tudo bem.
Vamos verificar isso rapidamente.
Sim, essa é a nossa certeza absoluta.
Ele expira.
A Pretty tem uma data bastante extensa para a expiração.
Tudo bem.
E agora vamos fazer a mágica.
Portanto, o que estamos fazendo agora é excluir o ano seguinte ou renomear este.
Está bem.
E agora podemos excluí-lo e renomear este aqui e pronto.
Portanto, ter um arquivo de certificado diretamente nesse aplicativo é uma boa ideia.
Isso é dinheiro embaixo da árvore de Natal.
Essa é a abordagem mais fácil a ser adotada.
Tudo bem.
A única coisa que precisamos fazer é ajustar a configuração de segurança da rede para confiar no armazenamento
do certificado do usuário.
Podemos encontrar essas informações na documentação do desenvolvedor do Android.
E este aqui.
Aqui está.
Esse é o texto que precisamos aplicar para confiar em nossos backups com certificado.
Então, vamos entrar na configuração de segurança da rede.
Isso está dentro do XML.
Este aqui.
Então, vamos editá-lo.
Está bem.
Acho que apenas copiamos a configuração básica.
Portanto, você precisa dessa tecnologia de configuração de segurança de rede no início e no final.
Muito bem, agora vamos simplesmente criar esse aplicativo novamente.
Talvez a Kate esteja.
Ok, então vamos assinar este aplicativo.
Primeiro, precisamos alinhá-lo em relação aos bytes.
Chamado.
Bem-sucedido E agora estamos usando o EPC para assinar uma senha, altere-a.
Tudo bem.
Primeiro, vamos desinstalar esse aplicativo de aparência incrível.
Vamos encerrar esse caso.
E filho.
E agora vamos instalar nossa versão.
Está bem.
Sucesso.
A abertura do painel de velocidade acima ainda está gerando alguns erros, mas não nos importamos com eles.
Tudo o que nos interessa é a nossa aplicação neste caso.
Vamos abrir isso e ver.
Legal.
Portanto, o interceptador aqui está piscando.
Portanto, eles estão aqui.
Podemos ver a solicitação.
Vamos seguir este.
E temos.
Temos um atacante mais uma vez?
Não, definitivamente não.
Caso contrário, não teríamos visto essa solicitação.
Esse aplicativo abortará definitivamente qualquer conexão antes de enviar a solicitação.
Se dermos uma olhada no histórico, podemos ver novamente que temos a solicitação e a resposta.
Portanto, estamos.
Também é considerado um "whoop".
Vamos dar uma olhada nas opções do projeto HTP e nas configurações padrão.
Então, infelizmente, vamos manter isso um pouco.
Muito bem.
Agora, vamos aplicar nossa regra de resposta para que possamos hackear diretamente esse aplicativo e, assim, entrar nas opções.
Então, desta vez, eu faço isso.
Correto.
Então, as interceptações de nossa resposta nas partidas principais são um trabalho curto?
Está bem.
Intercepte isso na solicitação de envio.
Essa é a solicitação.
Aqui está a resposta.
Hecht Mais uma vez, acho que o título não está sendo exibido, então precisamos colocá-lo aqui.
Hecht Mais uma vez, o certificado de pinagem.
E daí?
Para quê?
Aqui está.
Hecht Mais uma vez, o certificado de pinagem.
E daí?
Legal.
Veja como corrigir a abordagem de fixação de certificado com base em um certificado antigo.
Abordagem mais fácil.
Está bem.
Por último, mas não menos importante, gostaria de lhe mostrar algo aqui.
Pode ser que o desenvolvedor não inicie o próprio certificado.
Em vez disso, o desenvolvedor está usando um armazenamento de chaves antigo que está sendo protegido por senha.
E mesmo isso não seria nada demais para nós.
Poderíamos simplesmente substituir todo o armazenamento de confiança.
Como podemos fazer isso?
Já criamos nosso próprio trust store e ele contém o certificado que está sendo usado para assinar
nossos aplicativos.
E este aqui.
Portanto, se você voltar a este e aqui tivermos nossa própria confiança para nosso armazenamento de chaves.
E, por exemplo, se você quiser exibir esses certificados nesse armazenamento de chaves, podemos fazer isso da seguinte
forma.
Podemos usar a ferramenta chave e depois dizer lista.
Os certificados nesse armazenamento de chaves, e nós fornecemos o armazenamento de chaves, Android App Store.
Agora precisamos digitar a senha correta.
E, caso você esteja digitando uma senha errada e esta, por exemplo, teremos esta tecla de
seta.
Portanto, a senha está incorreta.
Mas se estivermos abrindo com a senha correta, nesse caso, ela será alterada.
E agora podemos ver todos os certificados que foram armazenados aqui, podemos ver que temos um com
o nome de alias, nome de alias com sublinhado e um com a Udemy.
Portanto, tudo o que precisamos fazer é colocar nossa certidão de nascimento em um armazenamento de chaves
próprio aqui, este, ou criar um novo.
E então temos que dar uma olhada no aplicativo.
Qual senha está sendo usada para abrir esse armazenamento de chaves, caso não haja senha, acho que você precisa fornecer
uma senha.
Portanto, haverá algo aqui e, em seguida, temos que escolher a mesma senha para o nosso armazenamento de
chaves ou temos que corrigir a senha aqui.
Portanto, a abordagem é absolutamente a mesma.
Em vez de substituir o ah, estamos substituindo todo o armazenamento de chaves, este aqui.
Portanto, basta arrastar e soltar o arquivo no diretório do aplicativo e, em seguida, aplicar a senha,
e vamos em frente, tudo bem.
Portanto, é assim que você pode lidar com a fixação de certificados.
Se você tiver alguma dúvida sobre erros, sinta-se à vontade para me escrever uma mensagem.
Fico feliz por ter recebido esse feedback e, sim, descobriremos qual é o problema para você e tentaremos
corrigi-lo juntos se você tiver permissão para esse aplicativo.
Muito bem.
Está bem.
No próximo vídeo, concluiremos nossa jornada de aplicação de patches de certificado com um sim.
Mas depois passamos para o próximo tópico.
Realizaremos uma manipulação aleatória.
Portanto, teremos nossa primeira introdução à liberdade, porque existem algumas estruturas incríveis por aí, como a
abstração, que está fazendo uma abordagem de manipulação de tempo de execução para se livrar da fixação de certificados.
Portanto, há algumas correções prévias relacionadas às bibliotecas principais que provavelmente serão três, mas podemos simplesmente
corrigi-las com apenas duas ou três linhas de código.
Tudo bem.
Está bem.
Portanto, sinta-se à vontade para brincar com isso.
E sim, de resto, estou ansioso para vê-lo no próximo vídeo.