segurança no android (rafael toledo)

Post on 09-Jan-2017

146 Views

Category:

Technology

8 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Rafael Toledo

rafael.toledo<at>

concretesolutions.com.br

Gerente de Engenharia Android@_rafaeltoledo

O que todo mundo quer?

● Muitos usuários

● Usuários que transacionam

● Dados para evoluir e melhorar o produto

Mas...

Oops...

Android

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

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

Parte 1

Ataquesno Cliente (APK)

Ataquesno Servidor (API)

OWASP 10 Maiores Riscos Mobile

1. Improper Platform Usage

2. Insecure Data Storage

3. Insecure Communication

4. Insecure Authentication

5. Insufficient Cryptography

OWASP 10 Maiores Riscos Mobile

6. Insecure Authorization

7. Client Code Quality

8. Code Tampering

9. Reverse Engineering

10. Extraneous Functionality

Perigo! Use por sua conta e risco!

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)

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)

Ferramentas

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/

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…

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]

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

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

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

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

Brincando com o QARK$ python qarkMain.py

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

Com o QARK

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

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/

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

Root

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:)

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/

Analisando Tráfego

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)

Parte 2

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!

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!

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!

Stay alert...

Recomendações

https://www.crypto101.io/

Livro: Android Security Internals

Livro: Hacking Android

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

top related