Pentest em Aplicações Móveis
Wagner Elias, CTO
Conviso Application Security
Disclaimer


 Apresentação focada nas aplicações
 desenvolvidas para as plataformas e não
 no OS ou arquitetura
Conhecer a plataforma para
explorar
Android
Conhecendo as arquiteturas
Android SDK


SDK Disponibilizado gratuitamente pela
Android para desenvolver aplicações
Android
APK Files

Arquivo que contém os itens utilizados na
composição de uma aplicação Android
 ‣ AndroidManifest.xml
 ‣ Classes compiladas em .dex
 ‣ Alguns arquivos XML codificados
JVM x Dalvik VM
       Java            Java
      Source          Source

       Java             Java
      Compiler         Compiler

     Java Byte       Java Byte
       Code            Code
                         Dex
                       Compiler

                     Dalvik Byte
                       Code



                  Dalvik Executable
      JVM
                     Dalvik VM
AndroidManifest.xml

Arquivo XML que define identificadores
únicos para aplicações e as permissões
do que pode ser feito
Intent

 Processo de comunicação inter-
 processos/aplicações
 ‣ Os IntentFilters definem como a
  aplicação pode se comunicar com
  outras
iPhone
iOS SDK


SDK Disponibilizado gratuitamente pela
Apple para desenvolver aplicações para
iPhone/iOS
Objective-C



Liguagem orientada a objetos com
características de SmallTalk e C
COCOA API



Framework para desenvolvimento de
aplicações iOS fornecido pela Apple
As Vulnerabilidades
Principais Vulnerabilidades


 Existem vulnerabilidades comuns a
 plataforma e outras específicas ao
 Android ou iPhone/iPad
Principais Vulnerabilidades
 ‣ Armazenamento Inadequado
   ‣ SD Card
   ‣ SQLite3
   ‣ Cache
 ‣ Permissões
   ‣ Comunicação entre apps
   ‣ Acesso a arquivos
Android

Quebra de confidencialidade e
integridade na comunicação entre
aplicações e recursos
 ‣ Configuração inadequada de
  AndroidManifest.xml
 ‣ Informações críticas hard-coded
iPhone/iPad
Desenvolvida com código não gerenciado, é suscetível a
falhas comuns em linguagens como C

 ‣ Buffer Overflow
 ‣ Integer Overflow
 ‣ Format String
Além das falhas características da linguagem, o iOS tem o
recurso de armazenamento compartilhado de chaves, que
configurado de forma inadequada pode levar ao
comprometimento de chaves
Ferramentas Utilizadas no
Processo
Tools


Um tool set de ferramentas necessárias
para conseguir analisar e explorar a
segurança das aplicações
Gerais
IDE (Sugestões)
  Eclipse para o Android
  Xcode para o iPhone
Emulador
  Ambas plataformas contam com emuladores
Client para Database
  As duas plataformas armazenam dados locais usando
  SQLite3
Android

As aplicações para Android são
desenvolvidas em código java e passam
por um processo específico de
compilação
 ‣ Analisar os arquivos .pak gerados
 ‣ Converter dex para java
 ‣ Analisar o java
Manifest Explorer


 Aplicação Android que possibilita
 escolher uma aplicação e analisar as
 configurações do AndroidManifest.xml
Intent Sniffer


 Monitora a comunicação gerada através
 do Intent que a aplicação realizada
 ‣ http://www.isecpartners.com/mobile-
  security-tools/intent-fuzzer.html
Dedexer


Converte arquivos compilados em dx
(bytecode .dex) para DEX Assembler
‣ http://dedexer.sourceforge.net/
dex2jar


Converte arquivos compilados em dx
(bytecode .dex) para bytecode java (.jar)
 ‣ http://code.google.com/p/dex2jar/
JD-GUI


Decompila jar files e apresenta o código
fonte em java
‣ http://java.decompiler.free.fr/?q=jdgui
axml2xml.pl

Converte arquivos XML codificados em
texto claro
 ‣ http://code.google.com/p/android-
  random/downloads/detail?
  name=axml2xml.pl
iPhone

As aplicações para iPhone são
desenvolvidas em linguagem Objective-C
e altamente dependentes da COCOA API
‣ Decompilar aplicações
‣ Analisar Source-Code
otool


 Decompila aplicações desenvolvidas em
 Objective-C
 ‣ Pacote disponível no Mac/Xcode
class-dump-x


Decompila aplicações desenvolvidas em
Objective-C
‣ http://iphone.freecoder.org/
 classdump_en.html
Shark

Aplicação para monitorar o desempenho
que permite analisar o comportamento
da aplicação
‣ Pacote disponível no Mac/Xcode
Clang
MobileFight
Breve em um repositório
perto de você

Ferramenta Open Source desenvolvida
em python pelo Conviso Labs para
suportar o processo de análise de
aplicações desenvolvidas para iPhone/
iPad, Android e BlackBerry
Conclusão


Aplicações móveis, assim como qualquer
aplicação, tem vulnerabilidades e devem
ser analisadas
Referências
Books

   Mobile Application Security [Paperback]

   Beginning iPhone 4 Development: Exploring the iOS SDK [Paperback]

   The Busy Coder's Guide to Advanced Android Development [Paperback]

   The Android Developer's Cookbook: Building Applications with the Android SDK (Developer's Library)
   [Paperback]

Papers

   Desenvolvimento iOS (http://blog.mobilizando.com.br/wp-content/uploads/2011/05/
   Desenvolvimento_iOS.pdf)

   Android Attacks (https://www.immunityinc.com/infiltrate/presentations/Android_Attacks.odt.pdf)

   Penetration test android applications (http://www.mcafee.com/us/resources/white-papers/foundstone/
   wp-pen-testing-android-apps.pdf)

   Penetration test android applications (http://www.mcafee.com/us/resources/white-papers/foundstone/
   wp-pen-testing-iphone-ipad-apps.pdf)

Pentest em Aplicações Móveis

  • 1.
    Pentest em AplicaçõesMóveis Wagner Elias, CTO Conviso Application Security
  • 2.
    Disclaimer Apresentação focadanas aplicações desenvolvidas para as plataformas e não no OS ou arquitetura
  • 3.
    Conhecer a plataformapara explorar
  • 4.
  • 5.
  • 6.
    Android SDK SDK Disponibilizadogratuitamente pela Android para desenvolver aplicações Android
  • 7.
    APK Files Arquivo quecontém os itens utilizados na composição de uma aplicação Android ‣ AndroidManifest.xml ‣ Classes compiladas em .dex ‣ Alguns arquivos XML codificados
  • 8.
    JVM x DalvikVM Java Java Source Source Java Java Compiler Compiler Java Byte Java Byte Code Code Dex Compiler Dalvik Byte Code Dalvik Executable JVM Dalvik VM
  • 9.
    AndroidManifest.xml Arquivo XML quedefine identificadores únicos para aplicações e as permissões do que pode ser feito
  • 10.
    Intent Processo decomunicação inter- processos/aplicações ‣ Os IntentFilters definem como a aplicação pode se comunicar com outras
  • 11.
  • 12.
    iOS SDK SDK Disponibilizadogratuitamente pela Apple para desenvolver aplicações para iPhone/iOS
  • 13.
    Objective-C Liguagem orientada aobjetos com características de SmallTalk e C
  • 14.
    COCOA API Framework paradesenvolvimento de aplicações iOS fornecido pela Apple
  • 15.
  • 16.
    Principais Vulnerabilidades Existemvulnerabilidades comuns a plataforma e outras específicas ao Android ou iPhone/iPad
  • 17.
    Principais Vulnerabilidades ‣Armazenamento Inadequado ‣ SD Card ‣ SQLite3 ‣ Cache ‣ Permissões ‣ Comunicação entre apps ‣ Acesso a arquivos
  • 18.
    Android Quebra de confidencialidadee integridade na comunicação entre aplicações e recursos ‣ Configuração inadequada de AndroidManifest.xml ‣ Informações críticas hard-coded
  • 19.
    iPhone/iPad Desenvolvida com códigonão gerenciado, é suscetível a falhas comuns em linguagens como C ‣ Buffer Overflow ‣ Integer Overflow ‣ Format String Além das falhas características da linguagem, o iOS tem o recurso de armazenamento compartilhado de chaves, que configurado de forma inadequada pode levar ao comprometimento de chaves
  • 20.
  • 21.
    Tools Um tool setde ferramentas necessárias para conseguir analisar e explorar a segurança das aplicações
  • 22.
    Gerais IDE (Sugestões) Eclipse para o Android Xcode para o iPhone Emulador Ambas plataformas contam com emuladores Client para Database As duas plataformas armazenam dados locais usando SQLite3
  • 23.
    Android As aplicações paraAndroid são desenvolvidas em código java e passam por um processo específico de compilação ‣ Analisar os arquivos .pak gerados ‣ Converter dex para java ‣ Analisar o java
  • 24.
    Manifest Explorer AplicaçãoAndroid que possibilita escolher uma aplicação e analisar as configurações do AndroidManifest.xml
  • 25.
    Intent Sniffer Monitoraa comunicação gerada através do Intent que a aplicação realizada ‣ http://www.isecpartners.com/mobile- security-tools/intent-fuzzer.html
  • 26.
    Dedexer Converte arquivos compiladosem dx (bytecode .dex) para DEX Assembler ‣ http://dedexer.sourceforge.net/
  • 27.
    dex2jar Converte arquivos compiladosem dx (bytecode .dex) para bytecode java (.jar) ‣ http://code.google.com/p/dex2jar/
  • 28.
    JD-GUI Decompila jar filese apresenta o código fonte em java ‣ http://java.decompiler.free.fr/?q=jdgui
  • 29.
    axml2xml.pl Converte arquivos XMLcodificados em texto claro ‣ http://code.google.com/p/android- random/downloads/detail? name=axml2xml.pl
  • 30.
    iPhone As aplicações paraiPhone são desenvolvidas em linguagem Objective-C e altamente dependentes da COCOA API ‣ Decompilar aplicações ‣ Analisar Source-Code
  • 31.
    otool Decompila aplicaçõesdesenvolvidas em Objective-C ‣ Pacote disponível no Mac/Xcode
  • 32.
    class-dump-x Decompila aplicações desenvolvidasem Objective-C ‣ http://iphone.freecoder.org/ classdump_en.html
  • 33.
    Shark Aplicação para monitoraro desempenho que permite analisar o comportamento da aplicação ‣ Pacote disponível no Mac/Xcode
  • 34.
  • 35.
  • 36.
    Breve em umrepositório perto de você Ferramenta Open Source desenvolvida em python pelo Conviso Labs para suportar o processo de análise de aplicações desenvolvidas para iPhone/ iPad, Android e BlackBerry
  • 37.
    Conclusão Aplicações móveis, assimcomo qualquer aplicação, tem vulnerabilidades e devem ser analisadas
  • 38.
    Referências Books Mobile Application Security [Paperback] Beginning iPhone 4 Development: Exploring the iOS SDK [Paperback] The Busy Coder's Guide to Advanced Android Development [Paperback] The Android Developer's Cookbook: Building Applications with the Android SDK (Developer's Library) [Paperback] Papers Desenvolvimento iOS (http://blog.mobilizando.com.br/wp-content/uploads/2011/05/ Desenvolvimento_iOS.pdf) Android Attacks (https://www.immunityinc.com/infiltrate/presentations/Android_Attacks.odt.pdf) Penetration test android applications (http://www.mcafee.com/us/resources/white-papers/foundstone/ wp-pen-testing-android-apps.pdf) Penetration test android applications (http://www.mcafee.com/us/resources/white-papers/foundstone/ wp-pen-testing-iphone-ipad-apps.pdf)