Mobile Penetration Testing: Lezione 2 – Sicurezza nei sistemi Android

In questa seconda lezione esploreremo il modello di sicurezza nei sistemi Android (si richiede un minimo di conoscenza di programmazione di app Android per poter comprendere al meglio quest’articolo).

Anche se Android è un sistema basato su Linux esso ha una  “prospettiva” diversa per quanto concerne la sicurezza, infatti la sicurezza è centrata sulla singola applicazione  (utilizzando i permessi) piuttosto che sull’utente (ovvero sui privilegi dell’utente) come avviene nei normali sistemi linux, questo modello di sicurezza, fornisce una sandbox per le singole applicazioni e mezzi espliciti per consentire l’ interazioni tra l’hardware, l’utente e l’applicazione. Tale meccanismo introduce anche il concetto di firma delle applicazioni per garantire la genuinità di quest’ultime, ovvero quando un’applicazione viene installata, viene assegnato un identificativo univoco che opera all’interno della propria sandbox, ciò garantisce che l’applicazione non possa interferire con altre applicazioni e altre applicazioni non possano interferire con essa. I file creati dall’applicazione vengono archiviati nella sandbox, per impostazione di default e sono accessibili solo da tale applicazione. I dati condivisi vengono gestiti tramite provider che forniscono la possibilità di definire autorizzazioni di lettura/scrittura per altre applicazioni. 

Le autorizzazioni (Permissions)  sono un elemento chiave per la sicurezza in Android, infatti un applicazione per accedere a delle risorse come ad esempio  alla fotocamera, al microfono, ai contatti della rubrica, scrittura su una memoria esterna etc, deve richiedere un permesso. Le applicazioni possono, anche definire le proprie autorizzazioni. Le autorizzazioni sono raggruppate in livelli di protezione, un livello di protezione con un alto grado di pericolo richiede un accordo esplicito con l’utente. Tutte queste autorizzazioni sono presenti all’interno del file AndroidManifest.xml.

Un altro concetto molto importante nel mondo Android sono gli Intent, quest’ultimi vengono utilizzati per ottenere una comunicazioni tra processi, ma la cosa interessante è che un un intent può richiedere ai destinatari di avere un’autorizzazione specifica per elaborare l’intent in oltre possono essere utilizzato anche per passare da un activity ad un altra, inoltre durante quest’operazione è possibile anche inviare dei dati se quest’ultimi verranno inviati utilizzando il metodo sendBroadcast potrebbero essere intercetati e se sono dati sensibili sicuramente non è quello che vogliamo.

Nella prossima lezione inizieremo a sporcarci un po’ le mani ma queste lezioni introduttive erano doverose per poter capire al meglio cosa faremo …stay tuned