segurança no android (rafael toledo)

40
Segurança no Android Um dia é da caça, outro do caçador

Upload: concrete-solutions

Post on 09-Jan-2017

146 views

Category:

Technology


8 download

TRANSCRIPT

Page 1: Segurança no Android (Rafael Toledo)

Segurança no AndroidUm dia é da caça, outro do caçador

Page 2: Segurança no Android (Rafael Toledo)

Rafael Toledo

rafael.toledo<at>

concretesolutions.com.br

Gerente de Engenharia Android@_rafaeltoledo

Page 3: Segurança no Android (Rafael Toledo)

O que todo mundo quer?

● Muitos usuários

● Usuários que transacionam

● Dados para evoluir e melhorar o produto

Page 4: Segurança no Android (Rafael Toledo)

Mas...

Page 5: Segurança no Android (Rafael Toledo)

Oops...

Page 6: Segurança no Android (Rafael Toledo)
Page 7: Segurança no Android (Rafael Toledo)

Android

Ao contrário do Backend, não temos controle sobre o ambiente de execução

● Root● Custom Roms● Custom Kernels● . . .

Page 8: Segurança no Android (Rafael Toledo)

Parte 1

Page 9: Segurança no Android (Rafael Toledo)

Ataquesno Cliente (APK)

Ataquesno Servidor (API)

Page 10: Segurança no Android (Rafael Toledo)

OWASP 10 Maiores Riscos Mobile

1. Improper Platform Usage

2. Insecure Data Storage

3. Insecure Communication

4. Insecure Authentication

5. Insufficient Cryptography

Page 11: Segurança no Android (Rafael Toledo)

OWASP 10 Maiores Riscos Mobile

6. Insecure Authorization

7. Client Code Quality

8. Code Tampering

9. Reverse Engineering

10. Extraneous Functionality

Page 12: Segurança no Android (Rafael Toledo)

Perigo! Use por sua conta e risco!

Page 13: Segurança no Android (Rafael Toledo)

Playground

Recomendação: Nexus 4

Android 4.2Android 4.3Android 4.4Android 5.0Android 5.1Android 6.0 (Custom Rom)Android 7.0 / 7.1 (Custom Rom)

Page 14: Segurança no Android (Rafael Toledo)

Obtendo um APK do device

$ adb shell pm list packages...

$ adb shell pm path com.example.apppackage:/data/app/com.example.app.apk-1/base.apk

$ adb pull /data/app/com.example.app-1/base.apk2285 KB/s (3661800 bytes in 1.564s)

Page 15: Segurança no Android (Rafael Toledo)

Ferramentas

Page 16: Segurança no Android (Rafael Toledo)

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/

Page 17: Segurança no Android (Rafael Toledo)

Brincando com o Drozer

$ drozer console connectSelecting 8b4345b... (LGE Nexus 4 6.0.1)...drozer Console (v2.3.4)dz> list...exibe os módulos do drozer…

Page 18: Segurança no Android (Rafael Toledo)

Analisando um App

dz> run app.package.info -a com.example.appPackage: 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]

Page 19: Segurança no Android (Rafael Toledo)

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

Page 20: Segurança no Android (Rafael Toledo)

Possibilidades de ataque

dz> run app.package.attacksurface com.example.appAttack Surface: 13 activities exported 7 broadcast receivers exported 0 content providers exported 4 services exported

Page 21: Segurança no Android (Rafael Toledo)

Listando Activities exportadas

dz> run app.activity.info -a com.example.appPackage: com.example.app com.example.app.SignInActivity com.example.app.HomeActivity

dz> run app.activity.start --component \ com.example.app com.example.app.HomeActivity

Page 22: Segurança no Android (Rafael Toledo)

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

Page 23: Segurança no Android (Rafael Toledo)

Brincando com o QARK$ python qarkMain.py

Page 24: Segurança no Android (Rafael Toledo)

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

Page 25: Segurança no Android (Rafael Toledo)

Com o QARK

Page 26: Segurança no Android (Rafael Toledo)

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

Page 27: Segurança no Android (Rafael Toledo)

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/

Page 28: Segurança no Android (Rafael Toledo)

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

Page 29: Segurança no Android (Rafael Toledo)

Root

Page 30: Segurança no Android (Rafael Toledo)

Acesso Root

Permite controle total sobre o dispositivoAcesso a dados de apps, até então protegidos

shell@android:/ $ ls /data/dataopendir failed, Permission deniedshell@android:/ $ suroot@android:/ # ls /data/data:)

Page 31: Segurança no Android (Rafael Toledo)

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/

Page 32: Segurança no Android (Rafael Toledo)

Analisando Tráfego

Page 33: Segurança no Android (Rafael Toledo)

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)

Page 34: Segurança no Android (Rafael Toledo)

Parte 2

Page 35: Segurança no Android (Rafael Toledo)

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!

Page 36: Segurança no Android (Rafael Toledo)

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!

Page 37: Segurança no Android (Rafael Toledo)

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!

Page 38: Segurança no Android (Rafael Toledo)

Stay alert...

Page 39: Segurança no Android (Rafael Toledo)

Recomendações

https://www.crypto101.io/

Livro: Android Security Internals

Livro: Hacking Android

Page 40: Segurança no Android (Rafael Toledo)

www.concretesolutions.com.br

Rio de Janeiro – Rua São José, 90 – cj. 2121Centro – (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