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

Segurança no Android

Segurança no Android

Talk by Euler Neto

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/