Introduzione alla sicurezza e analisi di applicazioni Android

Tempo di lettura: 7 minuti
Data pubblicazione: December 9, 2016
androidsecure
androidsecure

Android è la piattaforma mobile con il più grande mercato di applicazioni  al mondo, di cui il 12% sono di bassa qualità, fake o virus. Quotidianamente utilizziamo i nostri smartphone come se fossimo protetti da tutto e da tutti, installiamo applicazioni senza verificare cosa e quali informazioni prenderanno dal nostro dispositivo, ci connettiamo a qualsiasi Wi-fi gratuito e libero che si trova per strada, lasciamo accesa la localizzazione, il gps, ormai al supermercato paghiamo con un semplice click sul telefono! Ma come possiamo essere certi che l’applicazione più scaricata su Google Play, oltre a fare ciò per cui è stata costruita, non abbia qualche altra funzione a noi sconosciuta?

In questo articolo introdurrò la sicurezza delle applicazioni e come analizzare qualsiasi applicazione Android, in modo da poter avere le armi per poter esser consapevoli di ciò che state utilizzando ed evitare di incorrere in scam o trojan.

Sicurezza delle applicazioni

Come i problemi delle applicazioni tradizionali, anche Android è passibile di tutte le vulnerabilità che colpiscono le prime. Cercherò di introdurre i principali in linea teorica, mentre più avanti farò articoli pratici sul pentesting delle applicazioni.

Problemi di permessi

Grazie all’architettura di Android, i programmatori possono richiedere più permessi per le loro app rispetto ai permessi davvero utili ai fini del funzionamento dell’applicazione. Questo comporta un rischio per l’utente finale, visto che potrebbe installare un’applicazione senza sapere realmente cosa accade all’interno del suo smartphone. Quando si analizzano i permessi delle applicazioni Android è importante comparare i permessi richiesti rispetto al loro reale funzionamento. Ad esempio, se un generico permesso Camera, svolga la sua funzione reale, o si possa attivare senza che l’utente ne sia a conoscenza.

Trasmissione dei dati

Come per i siti web, la trasmissione dei dati deve essere protetta, da una connessione SSL o TLS, opportunamente configurate. I principali problemi possono essere:

  1. Nessuna cifratura dei dati trasmessi o salvati nel database;
  2. Cifratura forte, ma nessun certificato utilizzato per la trasmissione;
  3. Trasmissione diversificata in base al tipo di rete a cui si è connessi (segnale cellulare o Wireless).

Trovare un’applicazione che trasmette in modo insicuro è passibile di attacco MITM o una semplce analisi del traffico da parte di attaccanti.

Salvataggio dei dati

Android offre diverse funzionalità per il salvataggio dei dati, e ad essi si può accedere in maniera relativamente semplice. Uno degli errori più comuni è salvare informazioni sensibili senza cifrarle o senza dare permessi ai file salvati.

Un esempio di questa vulnerabilità è stato trovato, nel lontano 2011 in Skype. Si poteva leggere direttamente da un file dello smartphone la lista dei contatti dell’account al momento loggato nell’applicazione

https://www.youtube.com/watch?v=An8SnCBj-gU

Endpoint IPC insicuri

La comunicazione tra processi (IPC) è essenziale per il funzionamento di un’applicazione, ma molte volte non viene considerata dal punto di vista della sicurezza. Nel caso in cui l’endpoint non sia sicuro, un’applicazione maligna che richiede permessi non dichiarati potrebbe prendere le informazioni o rendere il telefono vulnerabile ad una serie di attacchi, come injection o directory traversal.

Tecniche di analisi di applicazioni mobile

Profiling

Questa fase è paragonabile al Footprinting nel tradizionale mondo della sicurezza informatica. Si assume che non si conosca l’azienda produttrice, che non si sappiano le dipendenze dell’applicazione e vari dettagli all’interno di essa.

Per prima cosa si cerca di farsi un’idea degli obiettivi dell’applicazione, chi sono i suoi sviluppatori e si cercano le varie versioni della stessa.

Profiling da Google Play
Profiling da Google Play

Se, ad esempio, notiamo che un’applicazione è stata sviluppata da uno sviluppatore poco attento alla sicurezza (quindi altre sue applicazioni sono vulnerabili) potrebbe essere un ottimo obiettivo.

Analisi Statica

Come per i Malware, l’analisi statica consiste nell’analizzare il software, il codice e i dati senza avviare la stessa. Molti file Android sono leggibili senza nessuna difficoltà, come gli XML. Esistono diversi software che permettono questa analisi, come:

Semplice esempio di Apktool
Semplice esempio di Apktool

Analisi dinamica

L’analisi dinamica consiste nel monitorare l’applicazione durante la sua esecuzione, ottenendo molte più informazioni rispetto alla precedente analisi. Questa è anche ottima per confermate e verificare ipotesi fatte durante l’analisi statica. Una delle principali azioni da considerare è quella di mappare l’applicazione, capire come funziona, come interagisce, che funzionalità, e via discorrendo. Alcuni software per questo passaggio sono:

Conclusioni

Come sempre, preferisco introdurre l’argomento che andrò in futuro a trattare. La sicurezza degli Android sembra essere molto più sottovalutata rispetto alle applicazioni web, e l’analisi di applicazioni è ancora molto giovane. Nei prossimi articoli della serie analizzeremo e studieremo alcune applicazioni, probabilmente inserendo anche l'OWASP Mobile, quando uscirà la versione definitiva.