Linkedin-in Youtube Twitter Facebook-f Instagram
  • +55 (11) 3255 -3926
  • contato@ibliss.com.br
  • Home
  • A IBLISS
    • Responsabilidade Social
  • Nossos Serviços
    • Consultoria em Cibersegurança
    • Teste de Intrusão
    • Conscientização & Cultura
    • Serviços Gerenciados
    • Compliance & Governança
    • AppSec & DevSecOps
  • Conteúdos
    • Blog
    • Materiais Ricos
    • Boletins de vulnerabilidades
  • Oportunidades
  • Contato
IBLISS Digital Security
  • A IBLISS
    • Nossa Equipe
    • Responsabilidade Social
  • Aviso de Privacidade
  • Blog Minuto Proteção
  • Boletins de vulnerabilidades
  • Contato
  • E-book Programa de Conscientização em Segurança da Informação
  • Home
  • IBLISS + GAT Security score
  • Infográfico Gestão de Vulnerabilidades – um passo em direção a um caminho seguro
  • Infográfico Por que investir em um Programa de Conscientização?
  • Infográfico RESILIÊNCIA CIBERNÉTICA
  • Materiais Ricos
  • Nosso Propósito
  • Nossos Serviços
    • AppSec & DevSecOps
      • Análise SAST e DAST
      • Revisão de Segurança (ASVS)
    • Compliance & Governança
    • Conscientização & Cultura
    • Consultoria em Cibersegurança
      • Teste de Intrusão
    • Serviços Gerenciados
  • Oportunidades
  • Parceiros tecnológicos
  • Política de Cookies
  • Política de segurança da informação – fornecedores, parceiros e prestadores de serviços
  • Política de Segurança de Alto Nível

Blog Minuto Proteção

  • Home
  • Blog Minuto Proteção
  • Ameaças
  • Diário de um Pentester: Engenharia Reversa App Android
Ameaças Ataques Cibernéticos Cyber Protection Diário de Um Pentester Estratégia em Segurança Gestão de vulnerabilidades Segurança Digital Testes de invasão Vulnerabilidades

Diário de um Pentester: Engenharia Reversa App Android

Recebemos um projeto para análise de vulnerabilidade em um aplicativo Android de forma a avaliar a segurança na construção do mesmo para que pudesse ser liberado na loja de aplicativos com as devidas funcionalidades e sem risco aos usuários do cliente em questão.

Ao iniciarmos os testes no arquivo .apk realizamos a descompilação do mesmo utilizando a ferramenta Visual Studio Code através do plugin APKLab disponibilizado de forma gratuita. Esse plugin realiza a descompactação do arquivo .apk para que o mesmo seja de fácil visualização de todo o código do aplicativo (se possível), pois em alguns casos pode haver códigos ofuscados que dependem de outras técnicas para serem ultrapassados.

Na imagem 01 abaixo é possível visualizar o plugin APKLab instalado no Visual Studio Code.

Imagem 01 – APKLab instalado no Visual Studio Code

Em seguida, utilizamos a opção Ctrl + Shift + p para selecionar dentre os plugins disponíveis o APKLab conforme imagem 02 abaixo.

Imagem 02 – Selecionando o APKLab

Uma vez realizada a escolha do plugin, é possível selecionar o arquivo .apk que iremos analisar, conforme imagem 03 abaixo. Após selecionado o mesmo, existem algumas opções disponíveis dentro do plugin APKLab que nos auxiliam em uma melhor visualização do conteúdo total do aplicativo.

Imagem 03 – Selecionando algumas opções disponíveis no momento da descompactação do arquivo .apk

Após selecionadas as opções acima o plugin APKLab irá tentar realizar a descompilação total do arquivo .apk de forma que será possível analisar toda a estrutura do código em texto claro, conforme a imagem 04 abaixo.

Imagem 04 – Código após a descompilação

Após todos os procedimentos realizados acima, iniciamos a análise do código da aplicação de forma a encontrar algo que pudéssemos utilizar para inserir algum código malicioso na mesma a fim de obter acesso a dados sensíveis, etc. Conforme avançamos na análise do código observamos um comportamento estranho, pois a aplicação permitia a recompilação da estrutura do código de forma a obter um novo arquivo .apk válido para instalação sem que a assinatura fosse validada. Esse comportamento foi observado visto que utilizamos o mesmo plugin (APKLab) para recompilar o código, conforme visto na imagem 05 abaixo e também selecionamos as opções de recompilação (imagem 06) do mesmo selecionando apenas a opção “–use-appt2” e dessa forma o aplicativo é reconstruído e assinado pela própria ferramenta.

Imagem 05 – Recompilando o código
Imagem 06 – Opções de recompilação

Dessa forma foi possível obter um aplicativo pronto para uso sem que houvesse qualquer erro em sua recompilação e isso acendeu um alerta pois se foi possível reconstruir o aplicativo e assiná-lo poderíamos tentar inserir algum código malicioso no mesmo como PoC (prova de conceito). Verificamos que havia uma activity que era invocada no momento da abertura do aplicativo. Com isso, verificamos a o código smali dessa activity e inserimos um código (Toast) para ser executado no momento da abertura da aplicação, conforme a imagem 07 abaixo:

Imagem 07 – Toast inserido no código smali

Uma vez validada a inserção de código arbitrário na aplicação, iniciamos a criação de um código que pudesse nos fornecer uma shell reversa ao ser executada a aplicação pelo usuário e assim obter acesso ao dispositivo do mesmo.

Realizamos a construção de um código através do programa Android Studio de forma a obter uma lib para inserir na estrutura do código do aplicativo Android, gerar um novo arquivo .apk e explorar essa vulnerabilidade.

A criação da lib foi realizada em linguagem C e compilada diretamente pela ferramenta Android Studio, conforme observado na imagem 08 abaixo:

Imagem 08 – Código da lib a ser inserida na estrutura do código da aplicação

Após a compilação do código são geradas bibliotecas em algumas arquiteturas para aplicativos Android. Abaixo podemos verificar as pastas que são criadas após a compilação do código acima pela ferramenta Android Studio:

Imagem 09 – Estrutura de pastas

Na imagem abaixo podemos verificar a estrutura de uma pasta como exemplo e como inserimos a lib compilada para que essa seja compilada com o código da aplicação. A lib alterada está com nome “libbd.so”:

Imagem 10 – Estrutura de uma das pastas com a lib maliciosa inserida

Uma vez realizada essa inserção de código precisamos fazer com que possamos abrir uma shell reversa em nossa estação como PoC (Prova de Conceito) e para isso precisamos executar o comando abaixo para que, ao clicar no aplicativo no device possamos receber essa conexão reversa:

adb.exe reverse tcp:4444 tcp:4444

Esse comando faz com que, ao ser executada a aplicação seja redirecionada a porta 4444 do device para a porta 4444 da estação onde o executável “nc.exe” está sendo executado e aguardando a conexão, conforme comando abaixo:

nc.exe -vnlp 4444

Conforme é possível visualizar na imagem 11 abaixo, após realizada a inserção da lib dentro da estrutura do código e a recompilação do mesmo, é possível verificar a obtenção da shell reversa ao ser executada aplicação:

Imagem 11 – Obtenção da shell reversa

Aproveitando, gostaria de agradecer ao grande Maycon Vitali por compartilhar seus conhecimentos com a comunidade, pois muito do mindset aqui empregado foi possível através dos conhecimentos adquiridos em seu canal na plataforma YouTube.

Por André Silva

Perdeu a primeira aventura? Não fique triste, você pode ler agora mesmo clicando aqui!

Diário de um Pentester: As aventuras da equipe técnica
25 de novembro de 2021
Tendências 2022 – 5G, Cloud, LGPD e mais ataques cibernéticos
6 de janeiro de 2022

Postagens Recentes

  • O Papel da Segurança da Informação no Caso PIX: Lições dos Controles NIST e ISO 27001
  • IBLISS anuncia nova fase de crescimento e reforça time executivo com foco em CTEM
  • Qual a importância em investir em um Programa de Conscientização?
  • Teste de Invasão: Conheça as principais vantagens
  • A importância dos testes de invasão para médias e pequenas empresas

Contato

Av. Angélica, 2582
2° Andar
CEP 01228-200
Bela Vista
São Paulo / SP

contato@ibliss.com.br

+55 (11) 3255 -3926

Links

  • A IBLISS
  • Nossos Serviços
  • Blog
  • Oportunidades
  • Contato
  • Aviso de Privacidade
  • Política de Cookies
  • Política de Segurança de Alto Nível
  • PSI – Fornecedores & Parceiros

Siga a IBLISS

Linkedin Youtube Facebook Instagram Twitter

Newsletter

© 2022 IBLISS Digital Security. Todos os direitos reservados. Desenvolvido por QMove.

Utilizamos cookies e outras tecnologias semelhantes para garantir que você obtenha a melhor experiência em nosso site. Consulte a Política de Cookies. Além disso, ao continuar navegando, você está ciente com o nosso Aviso de Privacidade.