Aula 2 - Análise Estática e Engenharia Reversa de Aplicativos Android
3.88k views6165 WordsCopy TextShare
Solyd Offensive Security
Aprenda a encontrar falhas em uma aplicação Android com nosso workshop gratuito. São três aulas em q...
Video Transcript:
fala pessoal sou o Luiz vima da Sens secur e seja muito bem-vindo à segunda aula do nosso workshop 100% gratuito de Pain Test em aplicações Android se você estivesse assistindo esse vídeo pelo YouTube recomendo que você passa a matrícula pela plataforma de ensino da Solid workshop é 100% gratuito e por lá você vai ter a lista das aulas o link para download do aplicativo que a gente tá invadindo durante esse workshop Solid Bank e também ao final do workshop você vai conseguir Um certificado de conclusão na última aula a gente montou um ambiente completo de pay testes em aplicativos mobile a gente configurou o Android emulada totalmente virtual a gente instalou as ferramentas necessárias para iniciar o p teste só que aí a gente se deparou com uma proteção anti root no aplicativo Solid Bank então o objetivo dessa aula é dar um passo para trás e passar para uma etapa essencial no ptest de aplicativos mobile que é a análise estática Então se prepare que a aula Vai ser longa a gente vai decompiler engenharia reversa na prática para burlar essas proteções e identificar várias outras vulnerabilidades só que para isso a gente precisa instalar algumas ferramentas bom então vamos lá decompiled Bank então para isso eu vim até aqui pro meu C Linux porque a gente vai precisar instalar essas ferramentas para fazer essa decompilation e análise desse código inclusive se você não tem o cal Linux instalado ou não sabe instalar o cal Linux eu vou deixar na plataforma de ensino da Solid aqui desse workshop um link pra nossa aula de instalação do cali Linux lá do curso de introdução a hacking Pain test que também é um curso totalmente gratuito e você pode fazer caso você se sinta um pouco perdido aqui nesse workshop bom então vamos lá primeiro eu queria passar para vocês uma base do que que é o apk e o apk é basicamente um instalador é um pacote utilizado para instalar aplicativos no sistema operacional Android ele é como se fosse um um executável um MSI do Windows ou um dmg do macos ele é utilizado basicamente para instalar um aplicativo no sistema operacional do dispositivo Android só que por trás dos panos o APK é basicamente um arquivo compactado como se fosse um zip tanto que dentro aqui do meu cli se eu utilizar o comando file no arquivo Solid bank. apk eu transferi o apk aqui pro meu cal Linux e com o comando file eu consigo ver qual é o tipo desse Arquivo ele é do tipo Android package né Android package kit né são as siglas do APK só que se eu utilizar a ferramenta unzip eu consigo basicamente descompactar esse arquivo compactado como se fosse um zip e ter acesso a divers arquivos desse aplicativo inclusive o código fonte desse aplicativo Então agora eu tenho todo o aplicativo aqui parcialmente decompiler o LS traço la eu consigo ver todos os arquivos dentro daquele package dentro daquele pacote então aqui a gente vai ter o Android Manifest que é o XML o arquivo que vai descrever as informações essenciais daquele aplicativo o nome do aplicativo a versão né as permissões que o aplicativo vai precisar se ele vai precisar utilizar a câmera se ele vai precisar utilizar o microfone os componentes desse aplicativo e outras configurações então o Android Manifest vai ser utilizado para eh dizer pro Android como que ele vai de fato instalar aquele aplicativo corretamente no metain você vai ter informações de assinatura desse APK desse aplicativo então originalidade integridade daquele aplicativo e nesses classes pdex né a extensão Dex significa D viic Execute né então é todo byte code todo o código já compilado desse aplicativo é o byte code que vai ser utilizado pelo Art né o Android runtime né para ser executado no dispositivo Android Então dentro desses decs tá ali todo o código que o desenvolvedor desse aplicativo programou toda a comunicação com backend as variáveis enfim tá tudo ali inclusive por exemplo tá ali né programado a proteção anti root a gente consegue analisar como que isso é feito só que como Eu mencionei o Dex tá em bite code Ou seja é código de máquina a gente não consegue ler isso aqui se eu der um catch no classes pdex eu não consigo entender nada isso aqui é byte mas assim como no caso de e executáveis você consegue sim ter uma uma representação legível daquilo no caso de binários de computador né um executável ou um binário elf do Linux a gente consegue traduzir aquilo ali né e vê aquilo ali no formato de assembly no formato legível E no caso dos aplicativos dos códigos pdex a gente consegue sim também ter uma visão de baixo nível daquele código daquele bte code né que são os códigos smile que a gente vai falar um pouco mais à frente então analisando um pouco mais da estrutura de diretórios e arquivos aqui do APK a gente tem o Lib onde vai guardar ali os pacotes né as bibliotecas nativas utilizadas por esse aplicativo o res que são os resources ou seja as imagens as Strings tudo né que aquele aplicativo utiliza e enfim temos outros arquivos aqui de propriedades do Google Play Services né e do firebase que é basicamente um banco de dados com o aplicativo consulta né Então a partir daqui a gente já consegue ter uma uma ideia né do do app né inclusive dentro desse Dex a gente já tem acesso a todo o código a gente só não consegue ler e é por isso que a gente vai utilizar uma ferramenta agora que basicamente traduz tenta traduzir esse bte code para uma linguagem legível Java né então a gente vai traduzir isso para um pacote jar um pacote onde a gente vai conseguir ler né esse código em Java e com certeza com isso a gente vai conseguir entender né e pegar muito mais informação desse aplicativo Então beleza para instalar essa ferramenta eu vou utilizar o APT update aqui no meu C Linux para atualizar os pacotes de e os repositórios né do do APT aqui no meu cali e vou utilizar o PT install d2j Dex to jar então eu vou realmente traduzir arquivo Dex o bite code que é executado ali no Android runtime para um pacote jar ou seja vou conseguir utilizar né um por exemplo um editor né de código JAVA para ler o código desse aplicativo de uma forma muito mais legível é óbvio que essa tradução não é 100% né durante esse processo de decompiler e colocar pra gente ali uma representação do código eh legível a gente pode perder muita coisa e muita coisa pode ficar muito eh muito confusa mas com certeza é muito melhor do que ler eh todo o código ali em no formato smile por exemplo que é um formato de leitura mais de baixo nível Então vamos instalar a ferramenta na verdade instalação PT install Dex to jar sem o d2j né d2j É como você chama a ferramenta depois já de ter instalado Então beleza no meu caso que já tava instalado então não precisou passar por todo o processo no seu caso aí vai carregar ali fazer o download a instalação e você vai ter a ferramenta dando um Clear aqui eu vou utilizar o d2j traço Dex toar e vou passar o apk né então eu poderia também passar o arquivo Dex mas no caso caso aqui eu posso passar o apk ele já vai fazer o a processo ali de decompiled aquele APK de todos os decks Beleza então vou passar aqui Solid bank. apk dando um enter vou esperar um pouquinho e ele vai fazer a tradução beleza e ele criou aqui para mim pacote chamado Solid Bank Dex toar pon jar e esse ponto jar é um pacote né onde ali dentro existem né todos os componentes de um código JAVA de um pacote jar então eu consigo utilizar uma ideia para ler esse código então vou instalar aqui o APT install JD traço Gu e utilizando Esse comando JD TR gu no Solid Bank Dex to jar.
jar eu vou ter aqui com no Java de compiler todo o conteúdo do código desse meu aplicativo aqui em com app Solid Bank Eu tenho todas as classes todos os arquivos desse aplicativo Então olha só eu tenho aqui Bank login né Bank adapter approve beneficiary dashboard olha só o que a gente encontrou aqui Emulator detector test ou seja onde é feito a detecção se o aplicativo tá rodando no ambiente emulado enfim eu vou ter aqui Basic ente todo o código desse meu aplicativo mas vocês podem ver que o código não é tão legível assim né então alguns códigos você consegue ler de melhor forma Olha só esse aqui foi muito bem traduzido ele me mostra até os parâmetros que ele passa para pii Olha só balance account Number username is admin olha só que interessante Então isso aqui vai nos ajudar muito quando a gente tiver fazendo uma análise dinâmica desse aplicativo tiver de fato analisando do app ali em funcionamento e tentando burlar suas funcionalidades e encontrar vulnerabilidades Beleza agora a gente tem boa parte do código totalmente legível pra gente conseguir analisar e entender mais como que funciona esse aplicativo só que para modificar esse aplicativo e Bur lá essas proteções de ot e qualquer outra proteção criada por esse código a gente precisa ir um pouco além para modificar o aplicativo a gente tem que literalmente alterar os bytes daquele binária então a gente precisa desopilar ele de uma forma com que a gente consiga ver uma representação um pouco mais de baixo nível o código smile seria como se fosse o assemble desse aplicativo e a partir daí a gente vai conseguir de fato modificar esse código para burlar a detecção de Hot ou qualquer outro fluxo de bloqueio do aplicativo beleza então agora vamos instalar e utilizar uma ferramenta onde vai nos permitir decompilation smile a gente vai conseguir ler de fato o que que tá programado ali claro que não vai ser numa linguagem e tão legível assim mas a gente vai conseguir modificar aquilo e recompilar esse APK no APK novo assinado onde a gente vai utilizar no nosso emulador e conseguir fazer o bypass dessas proteções contra ambiente e emulados contra ambientes fados Então vamos lá APT instal apk2 no meu caso aqui já tá instalado e eu vou utilizar o apk2 d de decompile passando o caminho pro meu APK que é Solid Bank pon APK dando um enter ele já vai criar uma pasta com todo o código então entrando nessa pasta eu tenho aqui todo o código do meu aplicativo na versão smile então se eu entrar aqui nas pastas Olha só no caso não é essa smile classes TR vamos ver aqui CD app CD Solid Bank olha só só eu tenho aqui todos aqueles arquivos ali né com as funções do aplicativo Eu tenho aqui na sua versão smile então se eu dar um Cat aqui no get transactions P smile eu vou ver de fato o código do aplicativo só que numa versão bem menos legível né de mais baixo nível olha só só que né levando como referência o código em Java que a gente já obteve acesso a gente a gente consegue né e chegando ali eh nos pontos onde a gente quer modificar e modificar diretamente lá no código smile para depois recompilar o aplicativo Então vamos lá nosso objetivo aqui é fazer o bypass da proteção contra ambientes roteados né então preciso entender Em que momento no código o aplicativo tá fazendo essa verificação entendendo como que ele faz essa modificação eu vou conseguir entender também uma forma né vou conseguir achar uma forma de modificar o Smiley para que com que ele não consiga de fato identificar que é um ambiente emulado o ambiente rooteado Beleza então primeiro a gente precisa entender como que o aplicativo inicia até porque Logo no início ele já faz essa verificação e com o código decompiler ao Android Manifest Se eu der um catch aqui no Android Manifest eu tenho acesso a esse código totalmente eh totalmente legível né então vou até abrir ele deixi Open vou abrir ele com um editor de texto pra gente conseguir entender melhor naé sua estrutura então aqui dentro ele vai definir como que o aplicativo eh vai ser instalado E também como que o aplicativo vai iniciar né Quais que são as activities ali daquele aplicativo Quais que são as telas desse aplicativo né então aqui no Android Manifest você pode ver que ele já Define um monte de telas né então tem reset password View beneficiary approve beneficiary Essas são as activities e a activity e principal né é a que existe aqui no intent Filter o act Main né então descendo aqui embaixo eu tenho essa activity como a inicial Então ela é Main activity ela vai ser executada assim que eu abri o aplicativo e o nome dela é Splash screen que é justamente aquela tela que abre ali quando eu clico para iniciar o aplicativo aqui embaixo a gente tem outras configurações também olha só configurações do Google Fair base inclusive aqui no Android Manifest é um ótimo lugar para você verificar sempre se existe e Chaves de api Secrets né então Eh Chaves sensíveis né Isso já configuraria uma vulnerabilidade grave né E isso pode acontecer o desenvolvedor definir uma variável aqui com uma formação de um Secret de uma chave de uma API né para acessar um banco de dados para acessar Algum serviço e isso é realmente grave nesse caso aqui nada relevante mas a gente já sabe né que o principal aqui o Main eh activity né o a atividade Inicial Desse nosso app é o Splash screen e muito Provavelmente depois ele vai pro Main activity né então vamos dar uma olhada nisso aqui pelo Nossa JD Gu então Então vamos lá Splash screen e beleza ele inicia aqui no Create né dá um start activity intent né esse intent aqui é o Main activity né e depois dá um finish no Splash screen Beleza então ele vai pro Main activity vamos dar uma analisada aqui no Main activity o que acontece né e no fluxo de execução então aqui no un Create né ele já começa a fazer algumas verificações e olha só que interessante Logo no início a gente já consegue identificar a api né que é utilizada como backend desse aplicativo então a gente nem conseguiu ainda eh interagir com o app no nosso ambiente emulado mas a gente já consegue algumas informações então tendo api aqui eu já posso elevar esse teste para um teste diretamente nesse servidor web né já posso fazer diretamente um teste fazendo requisições a esse essa ci aos end points a até porque através das outras classes aqui eu consigo entender como que esse App tá fazendo ali as consultas a ess api então por exemplo se eu entrar aqui em send money ó nesse caso aqui ele faz algumas verificações de sensor e tal vamos ver aqui outras funções View balance olha só ele faz uma requisição aqui né na verdade aqui para api balancing View né ele pega o Api URL ali do get shard preference faz uma requisição para ali olha só eu consigo através do código analisar como que ele faz essas consultas enfim para não sair do nosso objetivo aqui vamos voltar a Main activity e identificar como que ele faz a verificação se o sistema tá rodando no ambiente né se o aplicativo tá rodando no sistema roteado Então vamos lá primeiro ele verifica aqui com a função is debugger connected né então ele dá um ele mostra ali na tela né Se tiver ali um debug da VM ele verifica se é um emulador só que o interessante que ele faz essas verificações só que ele não dá um finish ele só vai dar um finish se o ambiente for rotado olha só ele verifica aqui se o debugger tá rodando verifica se o ambiente tá rooteado né ess device rooted Inclusive eu consigo ver o conteúdo dessa função clicando aqui em cima então ele tem diversos métodos e qualquer um retornando true ele retorna true nessa função e né retornando true ele mostra na tela que o telefone é rooteado e dá um finish Então nesse caso aqui se a gente modificar esse código para com que ele não Execute essa função finish a gente consegue fazer o bypass da detecção né se o ambiente é emulado se o ambiente é AD e existem infinitas formas de fazer isso quando a gente tem total controle sobre o aplicativo como Eu mencionei o aplicativo tá rodando na nossa máquina no nosso dispositivo a gente tem acesso ao código é um client então a gente pode modificar esse código de diversas formas então no caso aqui eu posso modificar Por exemplo essa função e device rooted aqui no caso ele tá dando um return no no né se o check method um dois ou três retornar true ele vai é dizer que o device tá rotado dispositivo tá rotado e não vai deixar com que o prossiga no código porque ele vai entrar naquela condição e executar o finish então eu poderia modificar eh implementando aqui um return Antes desse para dizer e que o return é false né ou modificar né Cada função dessa aqui enfim né são diversos cenários ou poderia modificar diretamente o Main activity né modificar diretamente essa condição é uma forma também Então vamos lá pelo código em Java aqui a gente já conseguiu ter uma ideia do que a gente vai fazer então lá no código smile aqui no código decompiled root Olha só encontrei tá aqui root YouTu aqui ele chama a função no dashboard olha só ele verifica também então vou modificar diretamente no ul YouTube só que antes de fazer essa modificação eu vou recompilar esse APK novamente para com que ele não e faça recompilação utilizando os resources né os os as medias né o Android Manifest porque quando eu recompilar ele novamente eu vou ter problema Então essa é uma forma mais fácil de fazer e a modificação do código smile Então vou dar um traço D traço F para forçar ou melhor voltar aqui para para trás tu d paraar táo f para forçar essa vou até pagar na verdade essa pasta tu d f passo r e aqui eu vou passar o aplicativo apc então ele vai fazer todo o processo ali decompiler só que agora ele não fez não decompiler tanto que se der um Cat no Manifest ag só não consigo mais ler mas isso aqui é melhor quando eu for de fato eh recompilar o aplicativo então V dar um grip tá R no is device rooted rooted Olha só então vou modificar diretamente esse smile vou utilizar oo para modificar e aqui eu tento identificar Em que momento eu posso fazer essa modificação então no check m 1 olha só ele faz aquela primeira verificação aqui eu tenho constructor Tenho método do eu tenho o método 3 e aqui no final eu vou ter a função is device rooted bem no finalzinho olha só ele dá um return ele faz toda verificação né Toda condição ali se o se as verificações retorn retornaram true e no final se qualquer um na true ele retorna true no device rter e bloqueia a execução do aplicativo Eu vou fazer aqui uma modificação Logo no início dizendo que a variável v0 con 4 v0 vai receber o valor de fse ou zero e vou dar um return v0 aqui no final ele já tá dando return Zero Só que depois de fazer toda a verificação das funções eu tô adicionando return antes dele fazer essas verificações então ele vai retornar assim que entrar nessa função false Ou seja eu vou conseguirar a proteção anti root desse aplicativo Vou salvar isso aqui e agora vou compilar esse APK então eu vou utilizar o apk2 com a função com parâmetro b e vou passar o caminho da pasta Solid Bank Opa dar um CD para trás aqui APK Tool B Solid Bank e eu vou passar aqui o nome desse arquivo vou chamar ele de Solid Bank PR modified P APK Beleza estou criando um novo do aplicativo com aquele código smile modificado né para burlar o fluxo de execução daquela função de verificação se o ambiente é roteado né e agora eu preciso assinar esse aplicativo por quê Porque é um requisito do sistema Android e que o aplicativo que o apk seja assinado digitalmente né para fazer toda a verificação de integridade por exemplo até versionamento de aplicativos então a gente precisa de fato assinar esse aplicativo seguir todo o padrão ali de assinatura como a gente faria num aplicativo né que a gente estivesse por exemplo desenvolvendo né a gente precisa fazer isso para com que a gente consiga instalar esse aplicativo no nosso ambiente emulado mesmo que ele esteja roteado para aí sim a gente conseguir rodar tudo ali bonitinho e de fato conseguir fazer o bypass daquelas proteções então para assinar o aplicativo a gente tem que criar um keystore uma chave criptográfica uma chave privada para acenar o aplicativo o apk então para isso a gente vai utilizar o Key to Opa key2 traço G Key para gerar né um par de Chaves Key Store a gente vai passar o nome da chave que a gente do que Store que a gente vai criar vou chamar de Solid Bank p jks o algoritmo que alg RSA o algoritmo da chave né da criptografia o tamanho que size 248 padrão e a a validade validity colocar aqui 10. 000 dias né e um als als né que é um apelido dessa Chave Vou chamar de Solid Bank também dando enter ele vai pedir uma senha Vou colocar qualquer senha aqui 1 2 3 4 5 6 por exemplo 1 2 3 4 5 6 ele vai pedir mais algumas informações posso deixar tudo em branco e no final dar um Y aqui para ele aceitar e ele vai criar esse me Key Me Key Store né e logo em seguida a gente vai utilizar essa chave para fazer assinatura do APK então eu vou utilizar o apk signer vou instalar ele aqui ok APK signer sign vou passar a chave no caso Solid b. jk e também vou dar um novo APK assinado vou chamar de signed Solid bank.
apk e vou passar aqui o Solid Bank modified dando um enter vou precisar passar a senha ali do k Store e beleza assou Inclusive eu posso utilizar o apk signer para verificar se foi realmente assinado então verify signed Solid Bank e foi de fato assinado Então agora eu posso pegar esse Sign Solid bank. apk e instalar ele no meu dispositivo modificado para verificar se a gente conseguiu de fato fazer esse bypass Beleza agora é a hora da verdade já transferi o arquivo ali do signed eh Solid Bank APK aqui pra minha máquina principal onde tá rodando o gen motion e no meu gen motion eu tô com o Solid Bank antigo na verdade o Solid Bank original com a proteção anti root ativada Inclusive eu tentei abrir ele aqui e ele já me bloqueou vamos instalar agora o sign de Solid Bank a gente poderia instalar com adb ou então no caso do genen motion só arrastar para cá e ele também vai fazer a instalação dá um ok install anyway seria como se eu tivesse atualizando o aplicativo e olha só conseguimos fazer o bypass da proteção anti root aplicativo fenomenal a gente decompiler código e a gente recompilar o aplicativo no novo app a gente assinou esse App e agora a gente de fato conseguiu burlar essas proteções e agora que a gente consegue interagir com Solid Bank no nosso ambiente mada a gente pode começar a explorar as funcionalidades do aplicativo para identificar mais vulnerabilidades beleza agora a gente já pode interagir com o aplicativo então né vamos entender aqui como é que ele funciona Vamos fazer um signup criar uma conta pra gente username Luiz colocar uma senha qualquer aqui signup beleza criei uma conta já identifiquei que ele tá mostrando na tela né as mensagens ali que ele recebe do backend ou seja isso já é uma vulnerabilidade já é um ponto inseguro de expor pro usuário informações ali sobre o funcionamento sobre a comunicação do app com backend mas tudo certo Luiz 1 2 3 4 5 6 login Beleza estou logado na minha conta e aqui eu já tenho algumas opções Olha só Ten o meu perfil luí Eu Já criei a conta e já tenho $1. 000 olha só que legal eu tenho número da minha conta eu tenho um uma configuração no meu perfil dizendo que eu não sou o admin né meu nome tenho outras opções aqui meu perfil posso resetar minha senha Olha só posso ver os meus beneficiários ou seja os meus contatos posso adicionar um contato posso transferir dinheiro né Mas primeiro preciso adicionar um contato e my balance né o meu saldo aqui no banco esse banco aqui é fenomenal a gente já cria conta já com 10.
000 Olha só o histórico de transação aqui eu posso aprovar os beneficiários ó só que somente os admins conseguem e no currency rates Olha só ele me redireciona aqui para dentro do site do Banco da Coreia do Norte do banco CN que é o laboratório lá do curso de introdução hacking Pain test então Legal tem uma ligação entre os dois Labs aí né um crossover do são hacking Pain Test e do workshop Android Pain tester Beleza agora tendo acesso ao aplicativo né tendo como interagir com o aplicativo a gente pode já começar a identificar outras vulnerabilidades mais sérias quando a gente tá falando de aplicativos Android aplicativos mobile no geral então um ponto que eu já identifiquei assim que a gente fez o login foi aquela mensagem de log que ele me mostrou ali como se fosse o resultado da consulta api então a gente pode utilizar no terminal o adb logcat para saber como que o aplicativo tá tratando os logs né E que do fluxo de execução do app por os logs de um aplicativo aqui como a gente faz eh utilizando o parâmetro log Cat do adb qualquer aplicativo com permissão nos logs consegue ler então se eu tenho o dispositivo por exemplo vamos supor que o Facebook tá passando ali um token de acesso ou as minhas credenciais e via log né pro pro meu dispositivo um outro aplicativo um aplicativo malicioso ou um aplicativo com essa permissão permitiria com que alguém tivesse acesso a essa informação né obviamente alguém que tivesse acesso ao meu dispositivo seja por um ataque ou seja um acesso físico aquele dispositivo Android Então isso é inseguro e por isso se a gente fizer uma busca aqui no adb logcat né e fazer uma ação aqui no app por exemplo vou dar um logout ele vai mostrar aqui um monte de log para mim na tela posso dar um até um um filtro aqui grip Solid Bank para tentar né pegar o ID do processo então por exemplo esse ID aqui 1785 ou melhor a gente pode até iniciar um processo novo pra gente ver como que esse aplicativo tá fazendo autenticação né com a nossa conta vou abrir aqui o adb logcat e Abri o aplicativo logo em seguida ele fez diversas diversos logs aqui né olha só e agora vamos fazer o login para ver como é que ele faz isso Luiz 1 2 3 4 5 6 vou dar um login e olha só ele logou um monte de cois aqui vamos ver se nesse mail tem alguma informação sensível e olha logo de cara a gente já encontra aqui um access token o que que é isso aqui isso aqui é um token de sessão é um token que me D acesso ao ambiente autenticado com a minha conta isso aqui é um jwt inclusive se eu copiar esse jwt e utilizar uma ferramenta por exemplo como jwt i eu consigo colando ele aqui eu consigo ver o conteúdo dele então username Luis is admin false e aqui tem um time stamp n esse iat na verdade é a identificação ali o tempo né o horário a data que eu criei esse token e esse token é Assinado por uma chave lá no servidor de backend né então beleza eu tenho acesso aqui né ao conteúdo desse token só que se eu modificar ele eu não consigo enviar ele pro servidor e autenticar por exemplo com outro usuário modificando isso aqui para por exemplo admin porque e eu não vou conseguir eh criptografar assinar esse esse esse token da forma como o servidor faz com a chave privada então eu tenho acesso às informações que esse token carrega mas não consigo modificar ele e eu só vou conseguir modificar se de alguma forma eu souber o Secret né esse Secret que a gente coloca aqui como assinatura do Token Então não temos muito o que fazer nesse momento aqui porém só desse token está sendo logado aqui no log catch eu sei que algum aplicativo né um outro aplicativo dentro desse dispositivo poderia ter acesso a isso e através desse token principalmente porque esse token não tem tempo de inspiração Aparentemente a gente conseguiria pegar esse valor para fazer um acesso diretamente aquela conta ali através da api ou forçar esse acesso a partir da modificação do aplicativo ou da modificação dos arquivos desse aplicativo lembra que eu falei para vocês que com adb a gente consegue pegar uma Shell dentro do dispositivo Android Esse é um ponto muito importante também no processo de um Pain test num aplicativo se eu utilizar o adb Shell eu consigo uma Shell dentro do aplicativo Android indo na pasta data data eu tenho acesso à lista de todos os aplicativos e o nosso foco aqui obviamente é o aplicativo do Solid Bank com. app psid Bank aqui dentro Opa CD aqui dentro você vai ter todos os arquivos referentes ao aplicativo Android e aqui dentro a gente tem o shared prefs né o shar preference que é uma pasta que guarda arquivo XML com valores Então você consegue guardar valor ali dentro e a o ponto em seguro aqui é se em algum momento o aplicativo guardar um valor sensível dentro da shered pref por quê Porque qualquer aplicativo que tem essa permissão vai conseguir consultar essa informação então por exemplo vamos supor que você perde o celular ou você é assaltado você é roubado Furtado e o cara consegue entrar ali né n pelo seu celular nessas pastas e conseguir acesso aos seus dados de login a a sua sessão ativa dentro dos seus aplicativos né então por isso que informações sensíveis principalmente credenciais de login sessão token de sessão access token né Chaves de api qualquer Secret qualquer informação sensível não pode ser armazenada no Shared prefs Se eu der um LS la aqui eu já vejo alguns arquivos interessantes como por exemplo jwt XML então dando catch nesse arquivo eu tenho em texto plano o access token Ou seja a sessão autenticada com a minha conta né então através esse token aqui eu consigo logar na conta do Luiz independente do dispositivo né se eu copiar isso aqui e fizer uma requisição lá paraa AP para por exemplo fazer uma transferência da conta da do Luiz para uma outra conta eu consigo porque é uma sessão ativa eu não preciso nem da credencial daquele usuário então isso aqui já é uma vulnerabilidade já é uma falha de segurança inclusive um reporte desse em programas de bug bount pode te render aí Alguns milhares de Dólares dependendo do programa então esses pontos que normalmente os desenvolvedores deixam passar acaba sendo um prato cheio para um Pain tester acaba sendo um prato cheio para quem gosta de programas de bug bount também porque né muita gente acaba só focando em aplicações web focando e em domínios né e o aplicativo tá lá cheio de vulnerabilidade é muito comum você ver que dentro do shared presss informações como Chaves de api né Por exemplo Chaves ali de acesso ao firebase Chaves de acesso da WS eh Chaves de acesso api do Google isso acontece né e é algo que tá ali né para qualquer usuário daquele aplicativo aquela informação fica ali se você né colocar um emulador ter acesso ali as informações ou decompiler Acesso aqui pelo dispositivo a a esses arquivos e ter acesso a um a uma chave dessa você encontra uma falha extremamente crítica enfim tem outras configurações aqui a URL da api banco CN na porta 880 né tem aqui o webview Chrome pref também beleza bom a gente já fez o bypass do anot né e agora que a gente consegue interagir com o aplicativo a gente pode testar a interceptação do tráfego desse app com burp sut Então vamos fazer isso agora vou abrir o burp sutch com Edition da mesma forma iniciar o burp beleza já tô interceptando ali vou configurar aqui no meu dispositivo o prox local 10. 0.