Come rilevare efficacemente un dispositivo rooted su Android?

10

Al giorno d'oggi per rilevare un dispositivo rooted, alcune applicazioni eseguono verifiche statiche come ad esempio il caso di GoogleWallet link .

Il problema è che non è così difficile aggirare tali verifiche. Uno dei tanti modi per farlo è quello di ottenere una shell di root temporanea per eseguire qualsiasi comando che vogliamo. Ad esempio, Towelroot incorpora un exploit root del kernel per ottenere i privilegi di root locali. Ciò gli consente di eseguire il root permanente del dispositivo installando i binari necessari. Allo stesso modo, si può usare la stessa tecnica ma solo per restituire una shell di root temporanea invece di fare il rooting permanente del dispositivo. In questo modo non verranno installati file aggiuntivi, i controlli statici non riusciranno.

Come è possibile rilevare questo tipo di scenario?

    
posta D4l3k 15.01.2016 - 18:13
fonte

4 risposte

4

Non esiste una risposta generale a queste domande poiché dipende completamente dal tipo di procedura di radicazione utilizzata. Questo documento (workshop WOOT di USENIX security 2015) offre una buona panoramica dei diversi tipi di procedure di radicazione.

Quindi, se vuoi implementare un correttore radice, le tue possibilità sono migliori se riesci a rilevare la maggior parte dei popolari metodi di root.

    
risposta data 22.04.2016 - 22:27
fonte
2

Le API di SafetyNet Attestation possono fare il lavoro per te. Ti aiuta a valutare la sicurezza e la compatibilità degli ambienti Android in cui vengono eseguite le tue app. Puoi utilizzare questa API per analizzare i dispositivi che hanno installato la tua app.

    
risposta data 09.01.2018 - 09:06
fonte
1

C'è un altro modo affidabile per verificare se il telefono Android è root o no. Per questo, è necessario scaricare Android Debug Bridge (ADB) . Dopodiché, devi aprire "cmd" e aprire il percorso di ADB nella stessa. Ora, devi eseguire i seguenti comandi:

  1. dispositivi adb: questo comando elencherà i dispositivi Android collegati.
  2. shell serial_number: questo comando aprirà shell / terminal per un particolare dispositivo Android.
  3. su: questo comando serve per ottenere l'accesso super-utente di qualsiasi terminale. Ora, dopo aver eseguito questo comando se ottieni un errore "Autorizzazione negata" , il tuo dispositivo non è rootato e se non ricevi alcun errore rispetto al root del tuo dispositivo.

Riferimento:

  1. Download di Android Debug Bridge
  2. comandi ADB
risposta data 23.08.2017 - 08:27
fonte
0

Hai ragione, è impossibile rilevare in modo affidabile root, specialmente da un'app sandbox. Un rootkit può (cioè non è tecnicamente impossibile) eseguire la tua app in una VM appositamente predisposta, in modo che veda un sistema senza root non modificato.

D'altra parte, tali kit non sono ancora stati rilevati. E costruirne uno richiederebbe uno sforzo e un investimento molto serio. Credo che questo sforzo non sarebbe molto diverso da STUXNET. Si noti inoltre che se tale rootkit non viene sviluppato in un modo controllato dal governo di massima sicurezza, i suoi "beta" molto probabilmente verranno tracciati.

I metodi forensi di rilevamento di eventuali manomissioni (incluso il rooting) possono essere molto più forti di quanto sia teoricamente disponibile per un'applicazione (ben educata) dello spazio utente, ma anche loro non sono illimitati.

La violazione della sicurezza e la rilevazione di tali violazioni è un gioco infinito, e qualsiasi idea che potremmo elaborare per rilevare la radice, può trovare una risposta dagli autori di tali attacchi, se la loro motivazione è sufficientemente elevata.

Ma molto probabilmente, a loro non interessa la tua app specifica o il tuo dispositivo personale, quindi puoi semplicemente includere test di base per la presenza di su e di app e ROM superuser noti.

    
risposta data 16.01.2016 - 06:34
fonte

Leggi altre domande sui tag