Video: MALWARE SPIA COLPISCE ANDROID - Cosa Succede?! (Novembre 2024)
Firma digitale non rotta
Il punto centrale della firma digitale di un documento o file è dimostrare che il file non è stato modificato. Il processo utilizza una forma di crittografia a chiave pubblica. Firmi digitalmente un file crittografandolo con la tua chiave privata. Il fatto che il file crittografato possa essere decrittografato utilizzando la tua chiave pubblica è la prova che non ci sono state manomissioni. Se BlueBox avesse trovato un modo per modificare effettivamente un file senza cambiare la sua firma digitale, sarebbe stato un colpo sbalorditivo per l'intero settore delle criptovalute. Ma non lo fecero.
BlueBox riporterà i dettagli completi delle loro ricerche alla conferenza di Black Hat tra qualche settimana. Tuttavia, il ricercatore di ViaForensics Pau Oliva Fora ha pubblicato un codice di prova del concetto che illustra l'approccio adottato.
In verità, è molto, molto semplice. I file APK vengono compressi utilizzando una versione dell'algoritmo di archiviazione ZIP diffuso. La maggior parte delle implementazioni ZIP non consentirà due file con lo stesso nome in un archivio, ma l'algoritmo stesso non vieta tale possibilità. Quando si controlla la firma digitale di un'app, il sistema operativo Android esamina il primo file corrispondente, ma quando esegue e avvia effettivamente il file, prende l' ultimo . Per Trojanize un'app, quindi, tutto ciò che devi fare è inserire il tuo codice malevolo usando un nome già esistente all'interno dell'app. La dimostrazione di Fora è solo una dozzina di righe di codice Java.
Un altro attacco strutturale
Un ricercatore cinese che ha scritto sul blog come Android Security Squad ha trovato intrigante la dimostrazione e ha cercato altri modi per sovvertire il processo di verifica. Leggere il post tradotto da Google è un po 'difficile, ma sembra che l'attacco si basi su un concetto di livello 101 di Informatica.
I programmi per computer memorizzano i numeri di conteggio in raccolte di bit di dimensioni fisse. Ad esempio, con otto bit è possibile rappresentare numeri da 0 a 255. Se è necessario rappresentare numeri negativi, la convenzione di lunga data è che il bit più a sinistra indica un numero negativo. Con otto bit, quindi, puoi anche rappresentare numeri da -128 a 127. Il numero binario 11111111 rappresenta 255 o -1, a seconda che sia inteso come un numero senza segno o con segno.
Android Security Squad ha analizzato il formato dell'intestazione del file APK e ha trovato un campo dati che si presume sia un offset positivo, ma che è memorizzato come intero con segno. La forzatura di questo campo su un valore negativo specifico provoca l'esecuzione del codice dannoso da parte del caricatore APK anziché del codice con firma digitale già verificato. OK, è un po 'più complesso, ma è più o meno come funziona.
Resta con Google Play
Nessuno di questi hack in realtà sovverte il meccanismo di firma digitale Android. Piuttosto, entrambi sfruttano le stranezze nella struttura APK per rendere irrilevante la firma digitale. Inoltre, nessuno dei due consentirà a un'app trojanizzata di superare l'analisi di Google. Google ha specificamente aggiornato Google Play per filtrare le app Trojanized usando l'attacco "chiave principale"; anche senza quel passaggio, la sicurezza standard bloccherebbe quasi sicuramente entrambi i tipi di app Trojanized.
La lezione è chiara Ottieni sempre le tue app da fonti legittime, verifica sempre che il nome dello sviluppatore sia valido e configura il tuo telefono in modo che non consenta l'installazione di app da "fonti sconosciute". Prestare attenzione alle autorizzazioni richieste da un'app ed essere pronti a interrompere un'installazione sospetta. Se il tuo operatore offre un aggiornamento Android, installalo sempre. È solo buon senso!