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

Segurança no Android

Segurança no Android

Talk by Euler Neto

Avatar for GDG Aracaju

GDG Aracaju

March 07, 2015
Tweet

More Decks by GDG Aracaju

Other Decks in Programming

Transcript

  1. 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
  2. Ataque a smartphones • Como? ◦ Via sistema ▪ Malware

    ▪ Vulnerabilidade ◦ Via redes ▪ Wi-fi ▪ Man in the Middle
  3. 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
  4. 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)
  5. Arquitetura do Android • Tipos de assinatura digital ◦ Debug

    Mode: gerado automaticamente no momento da compilaçao ◦ Release Mode: assinar com seu próprio certificado
  6. 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>
  7. 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>
  8. 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>
  9. Arquitetura do Android • Isolamento ◦ Apps podem se comunicar

    com outros via: ▪ Intents ▪ Services ▪ Content Providers ◦ Mas também podemos usar permissões
  10. 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
  11. Arquitetura do Android • Custom Permissions ◦ Criar sua própria

    permissão para acessar outros apps de modo restrito
  12. Arquitetura do Android • Custom Permissions ◦ Exemplo: Fonte: Programming

    Mobile Applications for Android Handheld Systems (Coursera)
  13. Arquitetura do Android • Custom Permissions ◦ Exemplo: Fonte: Programming

    Mobile Applications for Android Handheld Systems (Coursera)
  14. Arquitetura do Android • Custom Permissions ◦ Exemplo: No AndroidManifest.xml:

    Fonte: Programming Mobile Applications for Android Handheld Systems (Coursera)
  15. Arquitetura do Android • Custom Permissions ◦ Exemplo: Vamos tentar

    de novo? Fonte: Programming Mobile Applications for Android Handheld Systems (Coursera)
  16. Arquitetura do Android • Custom Permissions ◦ Exemplo: Fonte: Programming

    Mobile Applications for Android Handheld Systems (Coursera)
  17. 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)
  18. 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?
  19. Comunicação segura • Man in the middle ◦ Se colocar

    entre o cliente e o servidor ◦ Interceptar tráfego ◦ Dois tipos: passivo e ativo
  20. Comunicação segura • MITM Ativo ◦ Cuidado com redes Wi-fi

    desconhecidas! ◦ Cuidado com mensagens de certificados desconhecidos! ◦ Verifique se a conexão é HTTPS!
  21. Comunicação segura • Ou pior ainda: ausência de criptografia Fonte:

    http://thehackernews.com/2014/04/whatsapp-flaw-leaves-user-location.html
  22. 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/