Développement sécurisé Android



Documents pareils
Android et le Cloud Computing

Reversing Android. Aïe, robot...

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction

Android. Présentation d Android. Florent Garin

Android 4 Les fondamentaux du développement d'applications Java

SECURIDAY 2013 Cyber War

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

Programmation avancée et répartie en Java : interfaçage avec d autres langages

Can we trust smartphones?

Securitoo Mobile guide d installation

Les utilités d'un coupe-feu applicatif Web

Projet Android (LI260) Cours 2

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

Installation et prise en main

Derrière toi Une machine virtuelle!

Point sur les solutions de développement d apps pour les périphériques mobiles

Introduction ANDROID

Les fondamentaux du développement d applications Java

Warren PAULUS. Android SDK et Android x86

Surveiller sa maison via son Smartphone sous Android

Iphone vs. Android. Mardi 17 Novembre 2009 Paris, la Défense. Xavier PARADON, Directeur Technique Valtech Training

Formation WinDev Mobile

Cours Java Native Interface

Présentation de l application Smartphone «Risques Nice»

Android en action. Abdelkader Lahmadi Université de Lorraine

TP au menu «UI ANDROID»

Annexe Android Studio

1 Présentation de la solution client/serveur Mobilegov Digital DNA ID BOX

SOMMAIRE

cprotect PROTÉGEZ L IRREMPLAÇABLE! POUR SMARTPHONES ET TABLETTES ANDROID MANUEL D UTILISATION

Sécurité des applications Android constructeurs et construction de backdoors ciblées

Agenda 1. Stratégie 2. Devices Management 3. Documents Management 4. Développement 5. Supply Chain 6. Support 7. Et après?

Programmer en JAVA. par Tama

PROGRAMMEZ VOTRE CHAUFFAGE PAR TELEPHONE ET APPLICATION : EASYSTART CALL

payez votre stationnement par mobile! guide utilisateur appli Android

l ACTUSÉCU est un magazine numérique rédigé et édité par les consultants du cabinet de conseil XMCO JUILLET 2015

LOGO Smartphones, tablettes, et autres gadgets quel impact sur notre métier d ASR

les guides pratiques du cours des parents maîtriser les achats sur mobile

Q&A 1. Qu est ce que AdKash? 2. Pourquoi AdKash est innovative par rapport aux autres systèmes de publicité Mobile?

LA MOBILITE : ACTEURS, OUTILS,

GUIDE D UTILISATION. Fonctionnement global du service sur l'interface Senior & Aidant

Plate formes mobiles. Utilisation. Contexte 9/29/2010 IFC 2. Deux utilisations assez distinctes :

Remote Method Invocation Les classes implémentant Serializable

Présentation de Ocloud

DÉVELOPPEMENT D UNE APPLICATION DE COMMUNICATION BLUETOOTH SUR ANDROID. Projet de fin d étude VAP «Architecte de Services en Réseau»

Sauvegarde Android

Firefox pour Android. Guide de l utilisateur. press-fr@mozilla.com

Oauth : un protocole d'autorisation qui authentifie?

Prise en main rapide

Le touristonaute en mobilité

Android 2.3 Gingerbread

WINDOWS Remote Desktop & Application publishing facile!

La base de données XML exist. A. Belaïd

Poste virtuel. Installation du client CITRIX RECEIVER

Atelier numérique. Développement économique de Courbevoie. Internet / Extranet / Mobilité : Prospection et Support d'aide à la vente

Programmation Orientée Objet

DÉVELOPPEMENT ANDROID

PPM(A) Programmation sur Plateformes Mobiles (Android) Legond-Aubry Fabrice

COMMENT CRÉER UNE APPLICATION MOBILE?

CIBLE DE SECURITE CSPN DE L APPLICATION TEOPAD POUR TERMINAUX MOBILES

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Le Modèle de Sécurité dans JAVA

BCV-net - BCV NET-Mobile. Accédez à votre banque 24h/24 et 7j/7

Calcul Parallèle. Cours 5 - JAVA RMI

TD/TP 1 Introduction au SDK d Android

LES OBJETS CONNECTES

Chapitre 1 Retour en arrière

MOBILE BANKING. Accès à vos opérations bancaires avec «BL Mobile Banking»

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Développement sous Android

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Synchroniser ses photos

BiSecur Gateway avec appli smartphone NOUVEAU

1.3 Gestion d'une application

TP1 : Initiation à Java et Eclipse

LA DIVERSITE DES SUPPORTS ANDROID

TigerPro CRM Application mobile

TECHN 38. Mobile Device Management. Outils pour la gestion des smartphones et tablettes. 1. Introduction

Stratégies opérationnelles d APPS-CRM pour smartphones et tablettes

PHILA-Collector-USB-16Go Pour Windows & Android

Education Delivery Intelligent Tool

Programmation des applications mobiles avec Android. 1 Inspiré du cours de Olivier Le Goaer

DEVELOPPEMENT MOBILE - ETAT DE L ART DES SOLUTIONS

NOMADES ET SMARTPHONES EN ENTREPRISE EN TOUTE SÉCURITÉ PAR BERTRAND THOMAS ET JULIEN COULET

Optimiser pour les appareils mobiles

Développement Android. J.-F. Couchot

Capacité de mémoire Tablettes

Solution de publication digitale sur smartphones et tablettes pour tous vos documents. Document édité par Forecomm - Avril 2013

TRACcess ekey. Référence rapide

Sécurité des systèmes informatiques Introduction

WINDEV MOBILE. ios SMARTPHONE SUPPORT: IOS, ANDROID, WINDOWS PHONE 8.

CREER UNE APPLICATION MOBILE

Initiation à JAVA et à la programmation objet.

Béatrice Bertrand CDDP de l Eure. Béatrice Bertrand CDDP de l'eure

Fonctions. Solution professionnelle pour le stockage de données, la synchronisation multi- plateformes et la collaboration

Cortado Corporate Server

12 novembre 2012 Montauban MOBILITÉ, APPLICATIONS ET SITES MOBILES

BUREAU VIRTUEL. Utilisation de l application sur ipad. Guide utilisateur. Sciences Po Utilisation du bureau virtuel sur ipad 1 / 6

Transcription:

Développement sécurisé Android Johan Leuenberger Software Security Engineer Application Security Forum - 2012 Western Switzerland 7-8 novembre 2012 - Y-Parc / Yverdon-les-Bains https://www.appsec-forum.ch

2 Bio Software security engineer chez ELCA Spécialisé dans le développement Android Réalisation d elcardm Android Solution d authentification forte sur smartphone «Android Fanboy»

3 Agenda Android Menaces Protections Conclusion

4 Android facts 1 million de nouveaux appareils Android chaque jour. 1.5 milliard d applications téléchargées chaque mois 700 000 applications disponibles http://developer.android.com/about/index.html https://www.lookout.com/resources/reports/state-of-mobile-security-2012

5 Applications en tous genres Jeux Divers Finances

6 Applications en tous genres Jeux Divers Finances

7 Applications en tous genres Jeux Divers Finances

8 Applications en tous genres Jeux Divers Finances

9 Agenda Android Menaces Protections Conclusion

10 Menaces Reverse engineering Abus du Google Play Store Copie de l application Vol d informations (mot de passe, etc)

11 Scénario 1) Récupération d une application existante et décompilation 2) Ajout de fonctionnalités 3) Packaging de la nouvelle application 4) Publication de l application sur le Google Play Store

12 Reverse engineering - outils APK Android Application Package File classes.dex classes compilées resources.arsc + res resources AndroidManifest.xml fichier décrivant l application Outils adb communication avec un appareil Android dex2jar Java Decompiler ~.java apktool.smali

13 Reverse engineering - smali.class public LHelloWorld;.super Ljava/lang/Object;.method public static main([ljava/lang/string;)v.registers 2 sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; const-string v1, "Hello World!" invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V return-void.end method

14 Reverse engineering - Demo Modification d une application afin de récupérer le compte et le mot de passe d un utilisateur

15 Reverse engineering SMS Receiver AndroidManifest.xml <uses-permission android:name="android.permission.receive_sms" /> <receiver android:name="ch.elca.appsec.smsreceiver" android:enabled="true"> <intent-filter> <action android:name="android.provider.telephony.sms_received" /> </intent-filter> </receiver>

16 Reverse engineering SMS Receiver SmsReceiver public class SmsReceiver extends BroadcastReceiver { @Override public void onreceive(context context, Intent intent) { Bundle pudsbundle = intent.getextras(); Object[] pdus = (Object[]) pudsbundle.get("pdus"); SmsMessage messages = SmsMessage.createFromPdu((byte[]) pdus[0]); String smstext = messages.getmessagebody(); } forwardtoserver(smstext);

17 Abus du Google Play Store Les applications sont «self-signed» Publication aisée Validation pré-publication Google Bouncer (BH2012 Bypassing Google s Bouncer) Retrait post-publication Remote removal

18 Vol de données Pas de keystore Application sandbox Faillible au root Carte SD

19 Agenda Android Menaces Protections Conclusion

20 Protections exposition Store données reverse engineering copie de l application obfuscation module natif externe clé dynamique

21 Reverse engineering Pas de solution miracle! Rendons la vie difficile! Etape 0 Activer Proguard proguard.config=default_proguard.cfg 10 sec

Proguard (avec / sans) 22

23 Module natif Android NDK (Native Development Kit) Code natif exécutable sous Android Basé sur JNI (Java Native Interface) Code accessible sous forme binaire uniquement Code binaire peut également être obfusqué Comment ca marche? Code écrit en C / C++ Compilé via les outils fournis par Google (ndk-build) => libmymodule.so

24 Android NDK - Exemple Java C 0110101

Android NDK C jbytearray Java_ch_elca_appsec_NativeCaller_decrypt(JNIEnv* env, jobject this, jobject context, jbytearray data) {... deviceid = getdeviceid(context);... cleardata = decrypt(deviceid, data); jbytearray result = (*env)->newbytearray(env, len); (*env)->setbytearrayregion(env, result, 0, len, cleardata); return result; } jstring getdeviceid(jnienv* env, jobject context) { jstring device_id; jmethodid mid = (*env)->getmethodid(env, (*env)->getobjectclass(env,context), "getsystemservice", "(Ljava/lang/String;)Ljava/lang/Object;"); jobject telephony_manager = (*env)->callobjectmethod(env, context, mid, (*env)->newstringutf(env,"phone")); mid = (*env)->getmethodid(env,(*env)->getobjectclass(env,telephony_manager), "getdeviceid", "()Ljava/lang/String;"); device_id = (jstring)(*env)->callobjectmethod(env,telephony_manager,mid); return device_id; } 25 C 0110101

26 Module natif externe La librairie est chargée lors de l exécution Elle n a pas besoin d être packagée dans l application Uniquement disponible aux utilisateurs légitimes

27 Séparation de l application coquille module externe - Publié sur le Store - Contient le minimum de logique - Contient l UI - Téléchargé durant l exécution de l application - Compilé à la volée sur un serveur - Unique par utilisateur et par appareil

28!(Reverse engineering + copie) Empreinte hardware Mot de passe utilisateur Génération du module Compilation Module (format binaire) Obfuscation Installation du module

29 Clé dynamique anti-copie Client f(r0, s0) = s1 decrypt(c1, s1) = m1 Secret initial partagé: s0 r0, c1 Serveur r0 = random() f(r0, s0) = s1 encrypt(m1,s1) = c1 r1 = random() f(r1, s1) = s2 encrypt(m2,s2) = c2 r1, c2 f(r1, s1) = s2 decrypt(c2, s2) = m2

30 Clé dynamique anti-copie Client s1 Serveur s1 Client copié s2 s2 s1

31 Clé dynamique anti-copie Client Serveur Client copié s1 s1 s1 s1 s2 s2 ERROR

32 Protections exposition Store données reverse engineering copie de l application obfuscation module natif externe clé dynamique

33 Conclusion Beaucoup de possibilités QR Code Push GCM GPS Etc. Android évolue constamment Chaque version essaie de corriger certaines vulnérabilités

34 Conclusion Le port d une application sur Android n est généralement pas direct (par exemple à partir d une application iphone) un certain raisonnement est nécessaire Le développement d applications sécurisées demande du temps et de l effort

35 Questions? johan.leuenberger@elca.ch

36 Merci/Thank you! Contact: johan.leuenberger@elca.ch http://www.secutalk.ch Slides: http://slideshare.net/asf-ws/presentations