segurança no android (2016)

Post on 16-Apr-2017

296 Views

Category:

Mobile

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Segurança no AndroidEuler Neto

Agenda

● Arquitetura do Linux● Arquitetura do Android● Fundamentos da segurança da informação● Assinatura de aplicativos● Assinatura de aplicativos no Android● Comunicação segura

Arquitetura do Linux

● Modelo de segurança do Linux○ 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

Arquitetura do Linux

● Modelo de segurança do Linux

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

Arquitetura do Android

Tradicional Android

#USER_ID

#USER_ID_1 #USER_ID_2 #USER_ID_3

Fundamentos da segurança● Isolamento ● Controles de permissão e acesso● Integridade● Criptografia

Isolamento● Sandbox: mecanismo de segurança para separar programas em execução,

normalmente usado para executar códigos não testados ou programas suspeitos.

Isolamento

Isolamento

Isolamento● Apps podem se comunicar com outros por meio de:

○ Intents○ Binding Services○ Content Provider

● Para “escapar” da Sandbox são necessárias permissões

Controle de permissão e acesso● Grupos de permissão:

○ Calendário○ Câmera○ Contatos○ Localização○ Microfone○ Telefone○ Sensores○ SMS○ Armazenamento

Controle de permissão e acesso● Adicionar permissão no AndroidManifest.xml:

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

Controle de permissão e acesso● Permissões personalizadas

○ Criar sua própria permissão para acessar outros apps de modo restrito

○ Alternativa pra “escapar” da Sandbox

○ Exemplo: PermissionExampleBoom e PermissionExampleBoomUser

Controle de permissão e acesso● Permissões personalizadas

○ Exemplo:

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

Controle de permissão e acesso● Permissões personalizadas

○ Exemplo:

Vamos tentar acessar o outro aplicativo?

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

Controle de permissão e acesso● Permissões personalizadas

○ Exemplo:

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

Controle de permissão e acesso● Permissões personalizadas

○ Exemplo:

Adicionando no AndroidManifest.xml:

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

Controle de permissão e acesso● Permissões personalizadas

○ Exemplo:

Vamos tentar de novo?

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

Controle de permissão e acesso● Permissões personalizadas

○ Exemplo:

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

Controle de permissão e acesso● Permissões são garantidas ao aplicativo:

○ No momento em que é instalado○ Quando for atualizado

● É tudo ou nada!

Controle de permissão e acesso

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

Controle de permissão e acesso● Novo sistema de permissão (Android 6):

○ Cada permissão pode ser dada a qualquer momento○ Não é mais tudo ou nada!

Fonte: Adaptado de http://www.howtogeek.com/230683/how-to-manage-app-permissions-on-android-6.0/

Integridade● Função unidirecional (hash):

f(x) y

y f(x)

Integridade● Função unidirecional (hash):

Integridade● Caso recente:

Integridade● Caso recente:

Fonte: http://blog.linuxmint.com/?p=2994

Integridade● Caso recente:

Fonte: http://fossforce.com/2016/02/linux-mint-anatomy-of-a-hack/

Integridade● Caso recente:

Criptografia● Chave simétrica

○ A chave usada para criptografar é a mesma que descriptografa

● Chave assimétrica○ Chave pública e chave privada

Criptografia● Chave simétrica

○ A chave usada para criptografar é a mesma que descriptografa

Ek(m) = c

m

Canal inseguro Dk(c) = m

m

c

Criptografia● Chave assimétrica

○ Chave pública para encriptar e chave privada para desencriptar

EB(m1) = c1Da(c2) = m2

Canal inseguro EA(m2) = c2Db(c1) = m1

A → B ←

Criptografia● Chave PGP

○ Pretty Good Privacy○ Criada com o software GPG (GnuPG), nativo do Linux○ Usado para garantir confiabilidade de aplicativos○ Também usado para criptografar mensagens de e-mail○ Assinatura digital○ Garante tanto autenticação quanto integridade

Assinatura de aplicativos● Conceito da central de pacotes do Linux

APT-GET YUM

Assinatura de aplicativos● Assinando pacotes no Debian

1. Cria chave PGP2. Assina o pacote DEB com a chave privada3. Exporta a chave pública com o GPG4. Adiciona à lista de pacotes

Assinatura de aplicativos no Android● Passo 1

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

Assinatura de aplicativos no Android● Passo 2

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

Assinatura de aplicativos no Android● Passo 3

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

Assinatura de aplicativos no Android● Passo 4

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

Assinatura de aplicativos no Android● Então...

Comunicação segura● HTTP

○ Comunicação em texto puro○ Sem criptografia

● HTTPS○ Comunicação encriptada○ Protocolo SSL/TLS

Comunicação segura

HTTP

Fonte: https://www.google.com/transparencyreport/saferemail/tls/?hl=pt-BR

Comunicação segura

Fonte: https://www.google.com/transparencyreport/saferemail/tls/?hl=pt-BR

HTTPS

Comunicação segura● Esse túnel é o TLS● Adquirido através de um CA (Certificate Authority)● Cria uma comunicação criptografa entre o usuário e o servidor● Sem criptografia a conexão fica vulnerável a ataques Man-In-The-Middle

MITM Passivo (HTTP): MITM Ativo (HTTPS):

Comunicação segura● Certifique-se que todo o conteúdo está sendo transmitido via HTTPS● Caso real:

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

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] https://developer.android.com/guide/topics/security/permissions.html [4] http://www.pgpi.org/doc/pgpintro

top related