Segurança no Android

48
Segurança no Android

Transcript of Segurança no Android

Page 1: Segurança no Android

Segurança no Android

Page 2: Segurança no Android

Whoami

Euler Neto@netonightmare

Entusiasta NTI GDG AracajuSegurança (UFS São Cristóvão)

Page 3: Segurança no Android

Smartphone

= +

Page 4: Segurança no Android

Ataque a smartphones

● Quem?● Como?● Por que?

Page 5: Segurança no Android

Ataque a smartphones

● Por que?○ Roubar dinheiro e informações pessoais○ Fama○ Fazer sniff nas conexões○ Usar seu dispostivo (botnet, spamming)○ Para o lulz

Page 6: Segurança no Android

Ataque a smartphones

● Como?○ Via sistema

■ Malware■ Vulnerabilidade

○ Via redes■ Wi-fi■ Man in the Middle

Page 7: Segurança no Android

Ataque a smartphones

● Quem?○ Veremos a seguir...

Page 8: Segurança no Android

Ataque a smartphones

Fonte: http://pplware.sapo.pt/smartphones-tablets/android/99-dos-ataques-sao-direccionados-para-android/

Page 9: Segurança no Android

Ataque a smartphones

Page 10: Segurança no Android

Ataque a smartphones

Fonte: http://www.hardware.com.br/noticias/2015-01/google-nao-ira-mais-lancar-atualizacoes-de-seguranca-para-as-versoes-anteriores-ao-android-kit-kat.html

Page 11: Segurança no Android

Ataque a smartphones

Fonte: https://tecnoblog.net/12108/chefe-de-seguranca-do-android-diz-que-ataques-a-dispositivos-moveis-vao-aumentar/

Page 12: Segurança no Android

Arquitetura do Android

Tradicional Android

#USER_ID

#USER_ID_1 #USER_ID_2 #USER_ID_3

Page 13: Segurança no Android

Arquitetura do Android

● Modelo de segurança do Linux○ O coração do Android é o Linux (KERNEL!)○ Cada usuário possui um User ID (UID)○ Cada grupo possui um Group ID (GID)○ Três grupos de permissão: owner, group e world○ As permissões podem ser Read, Write ou eXecutable

Page 14: Segurança no Android

Arquitetura do Android

● Modelo de segurança do Linux

Fonte: http://linuxcommand.org/lts0070.php

Page 15: Segurança no Android

Arquitetura do Android

● Modelo de segurança do Android○ Cada APK tem seu próprio UID○ Assinatura digital: parte criptografada do software

que prova a identidade do desenvolvedor■ Certificado digital■ Chave privada

○ Certificate Authority (CA)

Page 16: Segurança no Android

Arquitetura do Android

● Tipos de assinatura digital○ Debug Mode: gerado automaticamente no momento

da compilaçao○ Release Mode: assinar com seu próprio certificado

Page 17: Segurança no Android

Arquitetura do Android

● Processo de assinatura

Fonte: https://www.udacity.com/wiki/ud853/course_resources/creating-a-signed-apk

Page 18: Segurança no Android

Arquitetura do Android

● Processo de assinatura

Fonte: https://www.udacity.com/wiki/ud853/course_resources/creating-a-signed-apk

Page 19: Segurança no Android

Arquitetura do Android

● Processo de assinatura

Fonte: https://www.udacity.com/wiki/ud853/course_resources/creating-a-signed-apk

Page 20: Segurança no Android

Arquitetura do Android

● Processo de assinatura

Fonte: https://www.udacity.com/wiki/ud853/course_resources/creating-a-signed-apk

Page 21: Segurança no Android

Arquitetura do Android

● Processo de assinatura

Page 22: Segurança no Android

Arquitetura do Android

● Isolamento

Fonte: [2]

Page 23: Segurança no Android

Arquitetura do Android

● Isolamento

Fonte: [2]

Page 24: Segurança no Android

Arquitetura do Android

● Isolamento○ Activities

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.testapps.test1">...<activity android:name=".Activity1"android:permission="com.example.testapps.test1.permission.START_ACTIVITY1"><intent-filter>...</intent-filter></activity>...</manifest>

Page 25: Segurança no Android

Arquitetura do Android

● Isolamento○ Services

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.testapps.test1">...<service android:name=".MailListenerService"android:permission="com.example.testapps.test1.permission.BIND_TO_MAIL_LISTENER"android:enabled="true"android:exported="true"><intent-filter></intent-filter></service>...</manifest>

Page 26: Segurança no Android

Arquitetura do Android

● Isolamento○ Content Providers

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.testapps.test1">...<provider android.name="com.example.testapps.test1.MailProvider"android.authorities="com.example.testapps.test1.mailprovider"android.readPermission="com.example.testapps.test1.permission.DB_READ"android.writePermission="com.example.testapps.test1.permission.DB_WRITE"></provider>...</manifest>

Page 27: Segurança no Android

Arquitetura do Android

● Isolamento○ Apps podem se comunicar com outros via:

■ Intents■ Services■ Content Providers

○ Mas também podemos usar permissões

Page 28: Segurança no Android

Arquitetura do Android

● Permissões

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.app.myapp" > <uses-permission android:name="android.permission.(nome da permissão)" /> ...</manifest>

Page 29: Segurança no Android

Arquitetura do Android

● Permissões○ Mais usadas:

Normal Valor padrão. Permissões de baixo risco que não requer aprovação do usuário

Dangerous Permissões de alto risco que autorizam o aplicativo a acessar dados privados do aplicativo, podendo causar impacto no sistema. Requer aprovação do usuário

Page 30: Segurança no Android

Arquitetura do Android

● Custom Permissions○ Criar sua própria permissão para acessar outros

apps de modo restrito

Page 31: Segurança no Android

Arquitetura do Android

● Custom Permissions○ Exemplo:

Fonte: Programming Mobile Applications for Android Handheld Systems (Coursera)

Page 32: Segurança no Android

Arquitetura do Android

● Custom Permissions○ Exemplo:

Fonte: Programming Mobile Applications for Android Handheld Systems (Coursera)

Page 33: Segurança no Android

Arquitetura do Android

● Custom Permissions○ Exemplo:

No AndroidManifest.xml:

Fonte: Programming Mobile Applications for Android Handheld Systems (Coursera)

Page 34: Segurança no Android

Arquitetura do Android

● Custom Permissions○ Exemplo:

Vamos tentar de novo?

Fonte: Programming Mobile Applications for Android Handheld Systems (Coursera)

Page 35: Segurança no Android

Arquitetura do Android

● Custom Permissions○ Exemplo:

Fonte: Programming Mobile Applications for Android Handheld Systems (Coursera)

Page 36: Segurança no Android

Arquitetura do Android

● Ataques através de permissões

Fonte: http://www.zdnet.com/article/android-users-give-malware-apps-permission-to-rob-them-express-shock-at-the-results/

Page 37: Segurança no Android

Arquitetura do Android

● Armazenamento de dados○ Por padrão, arquivos só podem ser acessados pelo

app que os gerou○ Caminho padrão: /data/data/app_package_name○ Cartões SD não possuem sistema de permissão

Linux (qualquer app pode acessar)

Page 38: Segurança no Android

Arquitetura do Android

● Armazenamento de dados

Fonte: https://www.hackread.com/whatsapp-security-flaw-app-read-chats/

Page 39: Segurança no Android

Arquitetura do Android

● Resumo dos fundamentos de segurança○ Credibilidade

■ Podemos confiar no autor do app?○ Isolamento e permissões

■ Podemos controlar os limites do app?○ Criptografia

■ Os arquivos de seu app estão seguros?

Page 40: Segurança no Android

Comunicação segura

● SSL/TLS

Fonte: https://ssl.trustwave.com/support/support-how-ssl-works.php

Page 41: Segurança no Android

Comunicação segura

● Man in the middle○ Se colocar entre o cliente e o servidor○ Interceptar tráfego○ Dois tipos: passivo e ativo

Page 42: Segurança no Android

Comunicação segura

● MITM Passivo○ HTTP○ Não há alteração dos dados

Page 43: Segurança no Android

Comunicação segura

● MITM Ativo○ HTTPS○ Alteração dos dados

Page 44: Segurança no Android

Comunicação segura

● MITM Ativo○ Cuidado com redes Wi-fi desconhecidas!○ Cuidado com mensagens de certificados

desconhecidos!○ Verifique se a conexão é HTTPS!

Page 45: Segurança no Android

Comunicação segura

● Ou pior: SSL vulnerável

Fonte: https://www.fireeye.com/blog/threat-research/2014/08/ssl-vulnerabilities-who-listens-when-android-applications-talk.html

Page 46: Segurança no Android

Comunicação segura

● Ou pior ainda: ausência de criptografia

Fonte: http://thehackernews.com/2014/04/whatsapp-flaw-leaves-user-location.html

Page 47: Segurança no Android

Referências[1] Jeff Six; Application Security for the Android Platform, Processes, Permissions, and Other Safeguards; O’Reilly Media, 2011, 114 páginas[2] Marakana, Inc. ; Deep Dive Into Android Security: http://pt.slideshare.net/marakana/deep-dive-into-android-security-10123665?related=1[3] Android developers: http://developer.android.com [4] Mike Part; Mobile Application Security: Who, How and Why; Trustwave, 2012: https://www.owasp.org/images/c/cf/ASDC12-Mobile_Application_Security_Who_how_and_why.pdf[5] Anatomy of Android: http://anatomyofandroid.com/

Page 48: Segurança no Android