Você confia nas suas aplicações mobile?

36
Wagner Elias Vale Security Conference - 03 Set. 2011 Você confia nas aplicações mobile? Monday, September 5, 2011

Transcript of Você confia nas suas aplicações mobile?

Wagner EliasVale Security Conference - 03 Set. 2011

Você confia nas aplicações mobile?

Monday, September 5, 2011

Monday, September 5, 2011

Bypass de Autorização

Monday, September 5, 2011

Bypass de Autorização

Vazamento de Informações sensíveis sobre o usuário

Monday, September 5, 2011

Bypass de Autorização

Vazamento de Informações sensíveis sobre o usuário

Possibilitava a interceptação da senha do usuário

Monday, September 5, 2011

Um pouco sobre estas aplicações

Monday, September 5, 2011

Arquitetura Android

Application

Android Framework

Android Libraries

Linux Kernel

Hardware/Firmware e Processador depende do dispositivo que roda o OS Android

Android Runtime (Dalvik)

Monday, September 5, 2011

Anatomia de uma aplicação Android

Activity

Service

Content Provider

Broadcast Receivers

É responsável por tratar os eventos da tela como: clique do botão na tela, escrever um texto dinamicamente na tela

Similar a uma Activity mas pode ser extendida, possibilitando comunicação entre outros services

Implementa um método de acesso a dados armazenados nos repositórios disponíveis no aparelho

Criada para receber em segundo plano mensagens (intents) trocadas entre aplicações

Process and Tasks

Por padrão cada aplicação rodando gera um processo no kernel linux

Monday, September 5, 2011

JVM x Dalvik VM

Dex Compiler

Java Compiler

Java Source

Dalvik Executable

Dalvik VM

Java Byte Code

Dalvik Byte Code

Java Compiler

JVM

Java Source

Java Byte Code

Monday, September 5, 2011

APK Files

Arquivo que contem os itens que compoem uma aplicação Android

‣AndroidManifest.xml

‣Classes compiladas em .dex

‣Outros arquivos XML relacionados as telas

Monday, September 5, 2011

AndroidManifest.xml codificado

Monday, September 5, 2011

AndroidManifest.xml decodificado

Monday, September 5, 2011

Arquitetura iPhone

Application

Framework (Cocoa)

ObjetiveC Runtime

iOS

Processador (ARM)

Firmware

Hardware

Monday, September 5, 2011

Anatomia de uma aplicação iPhone

User Interface

Cocoa Touch

Objective C

Interface da aplicação que interage com a Cocoa touch

API que interage com os recursos do i(Phone|Pad|Pod)

Linguagem baseada em C com orientação a objetos baseada no SmallTalk

Monday, September 5, 2011

OWASP Top10 Mobile Risks

Monday, September 5, 2011

OWASP Top 10 Mobile Risks

1

2

3

4

Inseguro ou desnecessário armazenamento de dados em Client-Side

Falta de proteção de dados em trânsito

Vazamento de dados pessoais

Incapacidade de proteger os recursos com autenticação

5 Incapacidade de implementar o princípio do menor privilégio

Monday, September 5, 2011

OWASP Top 10 Mobile Risks

6

7

8

9

Injeção em Client-Side

Negação de Serviços em Client-Side

Código de terceiro mal intencionado

Buffer Overflow

10 Falha ao implementar controles em Server-Side

Monday, September 5, 2011

Tipos de Análise

Monday, September 5, 2011

Análise Dinâmica

Com a aplicação rodando é análisado o seu comportamento:

‣ Debugging

‣ Network Traffic

‣ Acesso e Comunicação (HTTP/SOAP/Etc...)

‣ Acesso a File System

‣ Armazenamento e Leitura de Dados

Monday, September 5, 2011

Análise Estática

Análise onde é feita uma engenharia reversa da aplicação e realizado as seguintes análises

‣ Source Code Review

‣ Análise de Strings Hardcoded

‣ Análise de Armazenamento de Dados

‣ Análise de Cache

Monday, September 5, 2011

Como realizar uma análise dinâmica

ProxyCharles/Burp/WebScarab

Mobile Application Web

Profile and Analysis

Tools

Monday, September 5, 2011

Android Static Analysis

1

2

3

4

Descompactar o pacote .apk usando ferramentas de descompressão de arquivos zip

Decodificar os arquivos XML usando o axml2xml.pl

Converter arquivos compilados em .dex para bytecode java usando o dex2jar

Decompilar código java usando JAD

5 Analisar o código fonte Java

Monday, September 5, 2011

iPhone Static Analysis

1

2

Decompilar binários compilados em ObjectiveC usando o otool ou class-dump-x

Realizar análise estática manual ou automatizada usando Clang

Monday, September 5, 2011

Ferramentas Utilizadas para análise

Monday, September 5, 2011

Gerais

‣ IDE (Sugestões)

‣ Eclipse para o Android

‣ Xcode para o iPhone

‣ Emulador

‣ Ambas as plataformas possuem emuladores

‣ Client para Database

‣ As duas plataformas armazenam dados locais usando SQLite3

Monday, September 5, 2011

Manifest Explorer e Package Play

Manifest Explorer : Aplicação Android para analisar o arquivo AndroidManifest.xml

‣ http://www.isecpartners.com/mobile-security-tools/manifest-explorer.html

Package Play: Identifica todos os pacotes instalados no dispositivo

‣ http://www.isecpartners.com/mobile-security-tools/package-play.html

Monday, September 5, 2011

Intent Sniffer e Intent Fuzzer

Intent Sniffer: Monitora toda a comunicação gerada via Intent que a aplicação realiza

‣ http://www.isecpartners.com/mobile-security-tools/intent-sniffer.html

Intent Fuzzer: Fuzzing de Intent entre as aplicações

‣ http://www.isecpartners.com/mobile-security-tools/intent-fuzzer.html

Monday, September 5, 2011

APKinspector

Uma ferramenta gráfica que faz toda a engenharia reversa de um APK e apresenta as seguintes informações:

‣ Flow Graph

‣ Dalvik Codes

‣ Java Bytecode

‣ Java Code

‣ AndroidManifest.xml

http://code.google.com/p/apkinspector/

Monday, September 5, 2011

SQLite Manager

Monday, September 5, 2011

Instruments

Demo

Monday, September 5, 2011

Shark

Demo

Monday, September 5, 2011

Recursos do Xcode

Demo

Monday, September 5, 2011

Clang

http://clang-analyzer.llvm.org/Monday, September 5, 2011

Você ainda confia?

Monday, September 5, 2011

32

Wagner Elias, [email protected]@welias

www.conviso.com.br

Monday, September 5, 2011

Referências

‣ Books

‣ Mobile Application Security [Paperback]

‣ Beginning iPhone 4 Development: Exploring the iOS SDK [Paperback]

‣ The Busy Coder's Guide to Advanced Android Development [Paperback]

‣ The Android Developer's Cookbook: Building Applications with the Android SDK (Developer's Library) [Paperback]

‣ Papers

‣ Desenvolvimento iOS (http://blog.mobilizando.com.br/wp-content/uploads/2011/05/Desenvolvimento_iOS.pdf)

‣ Android Attacks (https://www.immunityinc.com/infiltrate/presentations/Android_Attacks.odt.pdf)

‣ Penetration test android applications (http://www.mcafee.com/us/resources/white-papers/foundstone/wp-pen-testing-android-apps.pdf)

‣ Penetration test android applications (http://www.mcafee.com/us/resources/white-papers/foundstone/wp-pen-testing-iphone-ipad-apps.pdf)

Monday, September 5, 2011