SlideShare a Scribd company logo
1 of 24
Download to read offline
Vulnerabilità della piattaforma
Android, metodi di attacco e
protezione delle applicazioni
Sergiy Shevchenko
Laurea in Informatica
2017/2018
Relatore: Prof. Roberto De Prisco
“Technology trust is a good
thing, but control is a better one”
Stephane Nappo
1
StatCounter Mobile Operating System Market Share Worldwide Sep 2018
La vita di una
applicazione
2
Sviluppatore Play Store Utente
La vita di una
applicazione
2
Sviluppatore Play Store Utente
Garantire l’integrità
Architettura
Android
3
Linux Kernel
Drivers
USB AudioBinderCamera WiFi ...
Hardware Abstraction Level
Android Runtime
ART
Core Libraries
Native C/C++ Libraries
LibC WebKit
OpenGL ES ...
Java API Framework
Managers
Activity ...Package
Content Providers
View System
Architettura
Android
3
Linux Kernel
Drivers
USB AudioBinderCamera WiFi ...
Hardware Abstraction Level
Android Runtime
ART
Core Libraries
Native C/C++ Libraries
LibC WebKit
OpenGL ES ...
Java API Framework
Managers
Activity ...Package
Content Providers
View System
▸ Tutte le applicazioni dipendono da questo layer
▸ È possibile “estrarre” un’app utilizzando il
Content Provider
Architettura
Android
3
Linux Kernel
Drivers
USB AudioBinderCamera WiFi ...
Hardware Abstraction Level
Android Runtime
ART
Core Libraries
Native C/C++ Libraries
LibC WebKit
OpenGL ES ...
Java API Framework
Managers
Activity ...Package
Content Providers
View System
▸ Nessuna restrizione livello API Java
▸ Codice macchina Armv7 o Arm64
▸ Interazione con gli altri componenti
via JNI
Architettura
Android
3
Linux Kernel
Drivers
USB AudioBinderCamera WiFi ...
Hardware Abstraction Level
Android Runtime
ART
Core Libraries
Native C/C++ Libraries
LibC WebKit
OpenGL ES ...
Java API Framework
Managers
Activity ...Package
Content Providers
View System
▸ Core di Android, codice native e java
vengono eseguiti da ART
▸ Applicazioni non disinstallabili
Architettura
Android
3
Linux Kernel
Drivers
USB AudioBinderCamera WiFi ...
Hardware Abstraction Level
Android Runtime
ART
Core Libraries
Native C/C++ Libraries
LibC WebKit
OpenGL ES ...
Java API Framework
Managers
Activity ...Package
Content Providers
View System
▸ Esecuzione delle applicazioni via un
fork()
▸ Interazioni con hardware
Firma dell’App
Lo sviluppatore genera una chiave e firma le applicazioni solo con questa chiave. Google
salva il fingerprint della chiave per i futuri update. Il dispositivo finale verifica l’integrità della
firma e installa l’applicazione
4
Firma dell’App
Un nuovo modo introduce le chiavi di upload (del developer) e di release (di google).
La verifica della integrità rimane la stessa
5
Firma dell’App
Un potenziale attaccante modifica il codice aggiungendo del malware e apporre una firma
diversa, ma sempre valida per il dispositivo finale.
5
CERT-CHECK
ANDROID OFFRE API PER GESTIRE LE FIRME DI APK
CERT-CHECK LIVELLO
JAVA
Implementare la logica di verifica
puramente in Java nel livello di
Android activity.
CERT-CHECK LIVELLO
NATIVO
Implementare la logica in codice
nativo C/C++, caricare la libreria
prodotta a runtime. Scatenare la
verifica con un timer con
inizializzazione randomica.
Nel caso di fallimento della verifica
provocare un eccezione al livello
nativo facendo esplodere
l’esecuzione
6Verifica
certificato a
runtime
Nel caso la verifica falisse,
interrompere l’esecuzione
dell’app.
CERT-CHECK LIVELLO
JAVA
Implementare la logica di verifica
puramente in Java nel livello di
Android activity.
CERT-CHECK LIVELLO
NATIVO
Implementare la logica in codice
nativo C/C++, caricare la libreria
prodotta a runtime. Scatenare la
verifica con un timer con
inizializzazione randomica.
Nel caso di fallimento della verifica
provocare un eccezione al livello
nativo facendo esplodere
l’esecuzione
7Verifica
certificato a
runtime
Nel caso la verifica falisse,
interrompere l’esecuzione
dell’app.
Disassembling
Decompling
Rebuilding
8
Difficoltà nel
disassemblaggio
9 Codice Java
Viene compilato in byte-code, una via di
mezzo tra codice di macchina e codice
java. Viene eseguito in macchina virtuale
Dalvik o ART
Codice Macchina
C/C++ viene compilato in codice
macchina, che sono le istruzioni dirette al
processore per una particolare
architettura.
● Difficile da disassemblare
● Difficile da debuggare se non si
possiede dei codici sorgenti
CertyCheck
10
Linux Kernel
Drivers
USB AudioBinderCamera WiFi ...
Hardware Abstraction Level
Android Runtime
ART
Core Libraries
Native C/C++ Libraries
LibC WebKit
OpenGL ES ...
Java API Framework
Managers
Activity ...Package
Content Providers
View System
L’app parte regolarmente,
vengono caricate le view e
invocato onCreate()
CertyCheck
10
Linux Kernel
Drivers
USB AudioBinderCamera WiFi ...
Hardware Abstraction Level
Android Runtime
ART
Core Libraries
Native C/C++ Libraries
LibC WebKit
OpenGL ES ...
Java API Framework
Managers
Activity ...Package
Content Providers
View System
L’app parte regolarmente,
vengono caricate le view e
invocato onCreate()
Parallelamente viene
caricata la libreria in
memoria
CertyCheck
10
Linux Kernel
Drivers
USB AudioBinderCamera WiFi ...
Hardware Abstraction Level
Android Runtime
ART
Core Libraries
Native C/C++ Libraries
LibC WebKit
OpenGL ES ...
Java API Framework
Managers
Activity ...Package
Content Providers
View System
L’app parte regolarmente,
vengono caricate le view e
invocato onCreate()
Parallelamente viene
caricata la librerie in
memoria
La libreria in maniera
asincrona interagisce con
ART per effettuare la
verifica
Limitazioni
Esclusione binaria
Se la libreria di
verifica non è una
parte integrante
dell’app è facile
escluderla dall’APK.
Rimpiazzamento
contesto
La soluzione
interagisce con il
runtime di Android
il quale può essere
emulato da un
malintenzionato.
Rooted Android
La piattaforma
può essere
hackerata, a
questo punto non
è possibile fidarsi
di validità del
certificato.
11
Aggiungere delle
funzionalità nella
libreria rendendo
inutilizzabile app
senza di essa
Fare le verifiche
approfondite del
contesto
Eseguire verifica
del certificato
gestito dalla
libreria
Futuri sviluppi12
▸ Rendere l’installazione FromTheBox
▸ Proteggere le librerie calcolando gli hash
▸ Usare librerie crittografiche staticamente
linkate
GRAZIE

More Related Content

Similar to Presentazione CERT-CHECK

01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introductionspawn150
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiMarco Gasparetto
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Gabriele Gaggi
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugianifirenze-gtug
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidOpen Makers Italy
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Mattia Milleri
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDiego Giorgini
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality CodeDaniele Mondello
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaCommit University
 
Gam03 facciamo volare il nosro drone
Gam03   facciamo volare il nosro droneGam03   facciamo volare il nosro drone
Gam03 facciamo volare il nosro droneDotNetCampus
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkGiovanni Buffa
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceMario Rossano
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open sourceMarco Ferrigno
 
Webinar porting e ottimizzazione per x86
Webinar   porting e ottimizzazione per x86Webinar   porting e ottimizzazione per x86
Webinar porting e ottimizzazione per x86Massimiliano Torregiani
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developerssparkfabrik
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerAlessandro Mascherin
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Mattia Milleri
 

Similar to Presentazione CERT-CHECK (20)

01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introduction
 
WhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessiWhyMCA12 - Android Tools e la gestione di progetti complessi
WhyMCA12 - Android Tools e la gestione di progetti complessi
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
 
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo BugianiIntroduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
Introduzione a GAE - Alessandro Aglietti e Lorenzo Bugiani
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality Code
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaforma
 
Gam03 facciamo volare il nosro drone
Gam03   facciamo volare il nosro droneGam03   facciamo volare il nosro drone
Gam03 facciamo volare il nosro drone
 
Angular and beyond
Angular and beyondAngular and beyond
Angular and beyond
 
Owasp parte1-rel1.1
Owasp parte1-rel1.1Owasp parte1-rel1.1
Owasp parte1-rel1.1
 
Intel AppUp Webinar Italiano html5
Intel AppUp Webinar Italiano html5Intel AppUp Webinar Italiano html5
Intel AppUp Webinar Italiano html5
 
Angular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un frameworkAngular js o React? Spunti e idee per la scelta di un framework
Angular js o React? Spunti e idee per la scelta di un framework
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open source
 
Webinar porting e ottimizzazione per x86
Webinar   porting e ottimizzazione per x86Webinar   porting e ottimizzazione per x86
Webinar porting e ottimizzazione per x86
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computer
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
 

More from Sergio Shevchenko

Gestione dell'economia nelle reti di Self Sovereign Identity con Algorand Sm...
Gestione dell'economia nelle reti di  Self Sovereign Identity con Algorand Sm...Gestione dell'economia nelle reti di  Self Sovereign Identity con Algorand Sm...
Gestione dell'economia nelle reti di Self Sovereign Identity con Algorand Sm...Sergio Shevchenko
 
Kubernetes - from sketch to production
Kubernetes - from sketch to productionKubernetes - from sketch to production
Kubernetes - from sketch to productionSergio Shevchenko
 
Burrows-Wheeler transform for terabases
Burrows-Wheeler transform for terabasesBurrows-Wheeler transform for terabases
Burrows-Wheeler transform for terabasesSergio Shevchenko
 
Design patterns: Creational patterns
Design patterns: Creational patternsDesign patterns: Creational patterns
Design patterns: Creational patternsSergio Shevchenko
 
Qt Multiplatform development
Qt Multiplatform developmentQt Multiplatform development
Qt Multiplatform developmentSergio Shevchenko
 

More from Sergio Shevchenko (12)

Gestione dell'economia nelle reti di Self Sovereign Identity con Algorand Sm...
Gestione dell'economia nelle reti di  Self Sovereign Identity con Algorand Sm...Gestione dell'economia nelle reti di  Self Sovereign Identity con Algorand Sm...
Gestione dell'economia nelle reti di Self Sovereign Identity con Algorand Sm...
 
Kubernetes - from sketch to production
Kubernetes - from sketch to productionKubernetes - from sketch to production
Kubernetes - from sketch to production
 
Meltdown & spectre
Meltdown & spectreMeltdown & spectre
Meltdown & spectre
 
The Google file system
The Google file systemThe Google file system
The Google file system
 
μ-Kernel Evolution
μ-Kernel Evolutionμ-Kernel Evolution
μ-Kernel Evolution
 
Burrows-Wheeler transform for terabases
Burrows-Wheeler transform for terabasesBurrows-Wheeler transform for terabases
Burrows-Wheeler transform for terabases
 
Design patterns: Creational patterns
Design patterns: Creational patternsDesign patterns: Creational patterns
Design patterns: Creational patterns
 
Bitcoin and blockchain
Bitcoin and blockchainBitcoin and blockchain
Bitcoin and blockchain
 
Qt Multiplatform development
Qt Multiplatform developmentQt Multiplatform development
Qt Multiplatform development
 
Qt for beginners
Qt for beginnersQt for beginners
Qt for beginners
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Mobile Factor App
Mobile Factor AppMobile Factor App
Mobile Factor App
 

Presentazione CERT-CHECK

  • 1. Vulnerabilità della piattaforma Android, metodi di attacco e protezione delle applicazioni Sergiy Shevchenko Laurea in Informatica 2017/2018 Relatore: Prof. Roberto De Prisco
  • 2. “Technology trust is a good thing, but control is a better one” Stephane Nappo
  • 3. 1 StatCounter Mobile Operating System Market Share Worldwide Sep 2018
  • 4. La vita di una applicazione 2 Sviluppatore Play Store Utente
  • 5. La vita di una applicazione 2 Sviluppatore Play Store Utente Garantire l’integrità
  • 6. Architettura Android 3 Linux Kernel Drivers USB AudioBinderCamera WiFi ... Hardware Abstraction Level Android Runtime ART Core Libraries Native C/C++ Libraries LibC WebKit OpenGL ES ... Java API Framework Managers Activity ...Package Content Providers View System
  • 7. Architettura Android 3 Linux Kernel Drivers USB AudioBinderCamera WiFi ... Hardware Abstraction Level Android Runtime ART Core Libraries Native C/C++ Libraries LibC WebKit OpenGL ES ... Java API Framework Managers Activity ...Package Content Providers View System ▸ Tutte le applicazioni dipendono da questo layer ▸ È possibile “estrarre” un’app utilizzando il Content Provider
  • 8. Architettura Android 3 Linux Kernel Drivers USB AudioBinderCamera WiFi ... Hardware Abstraction Level Android Runtime ART Core Libraries Native C/C++ Libraries LibC WebKit OpenGL ES ... Java API Framework Managers Activity ...Package Content Providers View System ▸ Nessuna restrizione livello API Java ▸ Codice macchina Armv7 o Arm64 ▸ Interazione con gli altri componenti via JNI
  • 9. Architettura Android 3 Linux Kernel Drivers USB AudioBinderCamera WiFi ... Hardware Abstraction Level Android Runtime ART Core Libraries Native C/C++ Libraries LibC WebKit OpenGL ES ... Java API Framework Managers Activity ...Package Content Providers View System ▸ Core di Android, codice native e java vengono eseguiti da ART ▸ Applicazioni non disinstallabili
  • 10. Architettura Android 3 Linux Kernel Drivers USB AudioBinderCamera WiFi ... Hardware Abstraction Level Android Runtime ART Core Libraries Native C/C++ Libraries LibC WebKit OpenGL ES ... Java API Framework Managers Activity ...Package Content Providers View System ▸ Esecuzione delle applicazioni via un fork() ▸ Interazioni con hardware
  • 11. Firma dell’App Lo sviluppatore genera una chiave e firma le applicazioni solo con questa chiave. Google salva il fingerprint della chiave per i futuri update. Il dispositivo finale verifica l’integrità della firma e installa l’applicazione 4
  • 12. Firma dell’App Un nuovo modo introduce le chiavi di upload (del developer) e di release (di google). La verifica della integrità rimane la stessa 5
  • 13. Firma dell’App Un potenziale attaccante modifica il codice aggiungendo del malware e apporre una firma diversa, ma sempre valida per il dispositivo finale. 5
  • 14. CERT-CHECK ANDROID OFFRE API PER GESTIRE LE FIRME DI APK
  • 15. CERT-CHECK LIVELLO JAVA Implementare la logica di verifica puramente in Java nel livello di Android activity. CERT-CHECK LIVELLO NATIVO Implementare la logica in codice nativo C/C++, caricare la libreria prodotta a runtime. Scatenare la verifica con un timer con inizializzazione randomica. Nel caso di fallimento della verifica provocare un eccezione al livello nativo facendo esplodere l’esecuzione 6Verifica certificato a runtime Nel caso la verifica falisse, interrompere l’esecuzione dell’app.
  • 16. CERT-CHECK LIVELLO JAVA Implementare la logica di verifica puramente in Java nel livello di Android activity. CERT-CHECK LIVELLO NATIVO Implementare la logica in codice nativo C/C++, caricare la libreria prodotta a runtime. Scatenare la verifica con un timer con inizializzazione randomica. Nel caso di fallimento della verifica provocare un eccezione al livello nativo facendo esplodere l’esecuzione 7Verifica certificato a runtime Nel caso la verifica falisse, interrompere l’esecuzione dell’app.
  • 18. Difficoltà nel disassemblaggio 9 Codice Java Viene compilato in byte-code, una via di mezzo tra codice di macchina e codice java. Viene eseguito in macchina virtuale Dalvik o ART Codice Macchina C/C++ viene compilato in codice macchina, che sono le istruzioni dirette al processore per una particolare architettura. ● Difficile da disassemblare ● Difficile da debuggare se non si possiede dei codici sorgenti
  • 19. CertyCheck 10 Linux Kernel Drivers USB AudioBinderCamera WiFi ... Hardware Abstraction Level Android Runtime ART Core Libraries Native C/C++ Libraries LibC WebKit OpenGL ES ... Java API Framework Managers Activity ...Package Content Providers View System L’app parte regolarmente, vengono caricate le view e invocato onCreate()
  • 20. CertyCheck 10 Linux Kernel Drivers USB AudioBinderCamera WiFi ... Hardware Abstraction Level Android Runtime ART Core Libraries Native C/C++ Libraries LibC WebKit OpenGL ES ... Java API Framework Managers Activity ...Package Content Providers View System L’app parte regolarmente, vengono caricate le view e invocato onCreate() Parallelamente viene caricata la libreria in memoria
  • 21. CertyCheck 10 Linux Kernel Drivers USB AudioBinderCamera WiFi ... Hardware Abstraction Level Android Runtime ART Core Libraries Native C/C++ Libraries LibC WebKit OpenGL ES ... Java API Framework Managers Activity ...Package Content Providers View System L’app parte regolarmente, vengono caricate le view e invocato onCreate() Parallelamente viene caricata la librerie in memoria La libreria in maniera asincrona interagisce con ART per effettuare la verifica
  • 22. Limitazioni Esclusione binaria Se la libreria di verifica non è una parte integrante dell’app è facile escluderla dall’APK. Rimpiazzamento contesto La soluzione interagisce con il runtime di Android il quale può essere emulato da un malintenzionato. Rooted Android La piattaforma può essere hackerata, a questo punto non è possibile fidarsi di validità del certificato. 11 Aggiungere delle funzionalità nella libreria rendendo inutilizzabile app senza di essa Fare le verifiche approfondite del contesto Eseguire verifica del certificato gestito dalla libreria
  • 23. Futuri sviluppi12 ▸ Rendere l’installazione FromTheBox ▸ Proteggere le librerie calcolando gli hash ▸ Usare librerie crittografiche staticamente linkate