Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Segurança no Android

Segurança no Android

Apresentada no Coders on Beer Android da Concrete Solutions

Rafael Toledo

November 16, 2016
Tweet

More Decks by Rafael Toledo

Other Decks in Programming

Transcript

  1. O que todo mundo quer? • Muitos usuários • Usuários

    que transacionam • Dados para evoluir e melhorar o produto
  2. Android Ao contrário do Backend, não temos controle sobre o

    ambiente de execução • Root • Custom Roms • Custom Kernels • . . .
  3. OWASP 10 Maiores Riscos Mobile 1. Improper Platform Usage 2.

    Insecure Data Storage 3. Insecure Communication 4. Insecure Authentication 5. Insufficient Cryptography
  4. OWASP 10 Maiores Riscos Mobile 6. Insecure Authorization 7. Client

    Code Quality 8. Code Tampering 9. Reverse Engineering 10. Extraneous Functionality
  5. Playground Recomendação: Nexus 4 Android 4.2 Android 4.3 Android 4.4

    Android 5.0 Android 5.1 Android 6.0 (Custom Rom) Android 7.0 / 7.1 (Custom Rom)
  6. Obtendo um APK do device $ adb shell pm list

    packages ... $ adb shell pm path com.example.app package:/data/app/com.example.app.apk-1/base.apk $ adb pull /data/app/com.example.app-1/base.apk 2285 KB/s (3661800 bytes in 1.564s)
  7. Drozer “O Drozer permite assumir o papel de um aplicativo

    Android e interagir com outros aplicativos, por meio do mecanismo de Comunicação Inter-Processo (IPC) do Android e do sistema operacional subjacente” https://labs.mwrinfosecurity.com/tools/drozer/
  8. Brincando com o Drozer $ drozer console connect Selecting 8b4345b...

    (LGE Nexus 4 6.0.1) ... drozer Console (v2.3.4) dz> list ...exibe os módulos do drozer…
  9. Analisando um App dz> run app.package.info -a com.example.app Package: com.example.app

    Application Label: App Exemplo Process Name: com.example.app Version: 1.0 Data Directory: /data/data/com.example.app APK Path: /data/app/com.example.app-1/base.apk UID: 10052 GID: [3003]
  10. Analisando um App Shared Libraries: null Shared User ID: null

    User Permissions: - android.permission.INTERNET - android.permission.ACCESS_WIFI_STATE ... Defines Permissions: - com.example.app.permission.C2D_MESSAGE
  11. Possibilidades de ataque dz> run app.package.attacksurface com.example.app Attack Surface: 13

    activities exported 7 broadcast receivers exported 0 content providers exported 4 services exported
  12. Listando Activities exportadas dz> run app.activity.info -a com.example.app Package: com.example.app

    com.example.app.SignInActivity com.example.app.HomeActivity dz> run app.activity.start --component \ com.example.app com.example.app.HomeActivity
  13. QARK Quick Android Review Kit Ferramenta simples de usar e

    capaz de encontrar vulnerabilidades de segurança comuns em aplicativos Android https://github.com/linkedin/qark
  14. Com o QARK Analisar um APK local ou baixar um

    do device (incluindo os de sistema) Procurar por problemas no Android Manifest Descompilar usando 3 ferramentas diferentes
  15. Com o QARK No final do processo, é possível gerar

    um APK para utilizar como exploit, além de um relatório HTML com comandos de ADB que podem ajudar a exercitar as vulnerabilidades encontradas
  16. Apktool / Dex2Jar / JD-GUI Ferramentas para descompilação e visualização

    do código descompilado (JD-GUI) https://ibotpeaches.github.io/Apktool/ https://github.com/pxb1988/dex2jar http://jd.benow.ca/
  17. Apktool / Dex2Jar / JD-GUI Navegação manual nas pastas do

    projeto nos permite: - Descobrir frameworks / bibliotecas utilizados - Obter chaves de SDK / Tokens - Entender e vasculhar lógicas de negócio - Descobrir pontos vulneráveis no app
  18. Acesso Root Permite controle total sobre o dispositivo Acesso a

    dados de apps, até então protegidos shell@android:/ $ ls /data/data opendir failed, Permission denied shell@android:/ $ su root@android:/ # ls /data/data :)
  19. Acesso Root Ler e Modificar facilmente arquivos dos apps (Shared

    Preferences, Content Providers, SQLite) Instalar outras ferramentas como o Frida (instrumentação dinâmica de apps) http://www.frida.re/docs/android/
  20. Burp Suite Uma das principais funcionalidades é atuar como um

    proxy na comunicação do device / emulador https://portswigger.net/burp/ É possível analisar / modificar requests, conhecido (Man in the Middle)
  21. Comunicação Utilizar protocolos de criptografia mais recentes - TLS 1.2

    SSL Pinning - https://github.com/square/okhttp/wiki/HTTPS Preocupação com autenticação / autorização - lógica SEMPRE no servidor { "authenticated": true } // SQN!
  22. Aplicativo Procure implementar algum mecanismo anti-tampering Cuidados com cache e

    armazenamento interno Não embarcar certificados! Ofuscação (pelo menos Proguard) Cuidado, mas muito cuidado com os logs em produção!
  23. Dexguard https://www.guardsquare.com/dexguard Ofuscação pra valer do código-fonte e resources Utilitários

    (RootDetector, CertificateChecker, DebugDetector, EmulatorDetector, TamperDetector) Custa caro, mas dependendo do que seu app faz, é um investimento necessário!
  24. www.concretesolutions.com.br Rio de Janeiro – Rua São José, 90 –

    cj. 2121 Centro – (21) 2240-2030 São Paulo - Av. Nações Unidas, 11.541 3º andar - Brooklin - (11) 4119-0449 Ajudamos empresas a criar produtos digitais de sucesso