Video: Simple Spyware: Androids Invisible Foreground Services and How to (Ab)use Them (Novembre 2024)
Forristal ha spiegato che, smontando, modificando e riassemblando l'app, avevano cambiato la firma dello sviluppatore. La nuova firma non è stata autorizzata a utilizzare Google Maps, quindi è stata respinta. La loro nuova ricerca; cambia il codice senza cambiare la firma.
Forristal ha analizzato la serie dettagliata di eventi che si verificano quando Android verifica un'app firmata. Ogni livello verifica il precedente, iniziando con la verifica che i modelli di codice non siano stati manomessi e terminino con una firma digitale del pacchetto nel suo insieme. Ha provato ad attaccare il sistema in ogni fase, soprattutto senza fortuna.
"I formati APK, JAR e ZIP sono sostanzialmente gli stessi", ha osservato Forristal. "JAR e APK hanno solo componenti aggiuntivi." Il suo successo finale ha comportato l'utilizzo del formato ZIP. Quando ha inserito un file "male" con lo stesso nome di un file valido esistente, il verificatore ha firmato il file valido, ma il file "male" è stato avviato.
Perché? Perché Android utilizza un diverso codice di gestione dei file ZIP nel verificatore e nel programma di installazione effettivo. "Una discrepanza nell'analisi dei file ZIP è la fonte di questo errore", ha spiegato Forristal. "In effetti, ci sono otto implementazioni separate per l'analisi dei file ZIP nella base di codice Android."
Fuori dalla sandbox
"Ho usato questo trucco per sempre", ha detto Forristal. "Ora prendiamolo fantastico." Come iOS, Android esegue ciascuna app nella propria sandbox, quindi un'app non può accedere alle risorse appartenenti a un'altra app. "L'unico modo per accedere alla sandbox deve essere firmato dallo stesso sviluppatore", ha spiegato. "Questo è ciò che rende possibili gli aggiornamenti."
"Il sistema nel suo insieme, sottoscrive la stessa nozione", ha continuato. "Il sandbox di sistema applica tutti gli altri sandbox. Controlla tutte le tue impostazioni. Non è root, ma ha tutti i tuoi dati, app, password e impostazioni: cosa rimane? Il sistema è piuttosto potente." Le app che accedono alla sandbox di sistema sono in genere firmate dal produttore della piattaforma. "Avevo solo bisogno di ottenere un'app firmata dalla piattaforma e fare il mio piccolo trucco, e avrei dovuto avere accesso a livello di sistema. È più bello delle mappe FourSquare", ha concluso.
Si scopre che le VPN di terze parti devono essere firmate dalla piattaforma e, come bonus, già richiedono l'accesso alla sandbox del sistema. Forristal mostrò i tre semplici comandi che usava per inserire il suo codice "malvagio" in una VPN di terze parti, scherzando su "über strumenti di hacking". Il risultato? Un Trojan con accesso completo a livello di sistema.
Sfruttamento facile
Il tecnico della sicurezza Saurik (Jay Freeman) ha portato il concetto a un livello superiore, ha spiegato Forristal. Il suo strumento Cydia Impactor funziona su OSX e Windows e automatizza l'exploit. "Collega un dispositivo", ha detto Forristal, "trova l'app giusta, la costruisce, aggiunge l'hacking appropriato per ottenere l'accesso alla radice e lo consegna. Avrei rilasciato qualche piccola e sgarbata dimostrazione di app concettuali, ma è fantastico."
Forristal ha notato che il tipo di processore del dispositivo non ha importanza. L'attacco non è influenzato da ASLR (Address System Layout Randomization) o DEP (Data Execution Prevention). Ha realizzato una versione che funziona su quattro generazioni di Android e l'unica vera abilità necessaria è la conoscenza di Java. "L'ho presentato per Black Hat perché è facile da capire e sfruttare", ha detto Forristal.
Più chiavi master
Forristal ha riscontrato numerosi altri bug scoperti di recente che potrebbero essere considerati "chiavi master". Quando hanno esaminato il codice per una funzione chiamata Attributi autenticati, i ricercatori di Bluebox hanno trovato una riga commentata e contrassegnata "TODO". Come risultato del codice mancante, indipendentemente dalle modifiche apportate al file passa la verifica. Non molti file usano questa funzione, ha osservato Forristal. "Se ne trovi uno, puoi copiare e incollare il file del certificato e assumere l'identità dello sviluppatore. Se hai firmato un'app con attributi autenticati, hai dato la tua identità." Poiché questo bug è stato corretto prima che Bluebox lo segnalasse, non si prendono il merito.
L'attacco "Hidden Trojan" riportato da un ricercatore cinese risulta essere solo uno dei molti modi possibili per sfruttare i parser di file ZIP multipli di Android. Questi attacchi sfruttano il fatto che un utente parser ha firmato numeri interi e l'altro utilizza numeri interi senza segno.
"Non si tratta nemmeno di sostituire un file", ha esaltato Forristal. "Puoi usare questo trucco per inserire un file ZIP completamente diverso. Uno viene verificato, l'altro viene eseguito. Un paio di trucchi e bocconcini in questo spazio possono mostrare un potere ancora maggiore a questo approccio."
Sebbene il malware che utilizza questa tecnica sia già stato visto in natura, non dovrebbe essere possibile ottenere un file Trojan come quelli descritti qui in Google Play. Probabilmente sarai al sicuro se installi sempre e solo app che hanno superato il controllo ufficiale. Tuttavia, per sicurezza, assicurati di installare immediatamente tutti gli aggiornamenti Android disponibili.