In che modo un dispositivo / sistema operativo Android mi impedisce di diventare root?

5

Non ho mai usato un telefono Android e quindi spero che questa non sia una brutta domanda da porre.

So su iOS che il kernel stesso è firmato e quindi non può essere esteso e tutte le applicazioni sono firmate. Quindi non posso ssh / telnet in esso ad esempio e ottenere una shell. A meno che tu non effettui il jailbreak e disabiliti la verifica della firma e non faccia altro, non puoi installare anche app personalizzate.

Quindi, come funziona su Android? Il kernel è stato firmato? In tal caso, il rooting e il dispositivo Android sono simili al jailbreak di un dispositivo iOS? Ho letto alcuni articoli che dicono che è possibile installare un kernel personalizzato su un dispositivo Android, che indica che il kernel non è firmato. Quindi è così che viene impedito l'accesso di root? Il kernel non ammette userid 0? Cosa accade esattamente o deve accadere per impedire l'accesso root? O cosa deve realmente accadere alle funzionalità del sistema operativo per abilitare root?

    
posta user220201 25.07.2015 - 02:00
fonte

1 risposta

1

Come già indicato da @Cube nel commento, alcuni (non tutti) telefoni Android consentono di sbloccare il bootloader per far lampeggiare kernel e firmware personalizzati sul dispositivo. Tuttavia, esiste un numero limitato di modelli che lo supportano poiché è destinato a ricercatori e sviluppatori. Inoltre, durante il processo di sblocco si perdono tutti i dati, quindi non è possibile utilizzarli per eseguire il flashing silenzioso di un sistema o kernel dannoso sul dispositivo di qualcuno senza che se ne accorga. Ma in generale, il bootloader è bloccato, quindi questa è l'unica linea di difesa contro l'ottenimento di root: non consentire l'aggiornamento del software personalizzato. Come funzione sperimentale, Android ha recentemente introdotto anche dm-verity per rendere i rootkit persistenti ancora più difficili.

L'altro modo è utilizzare gli attacchi di escalation dei privilegi, il che significa che sfrutti attivamente una vulnerabilità in Android che ti consente di ottenere i privilegi di root. Ad esempio, alcuni servizi devono essere eseguiti come root, quindi se è possibile eseguire codice nel proprio contesto, si esegue il codice con i privilegi di root. Tuttavia, torniamo alla tua domanda sulle difese. Innanzitutto, i processi dell'app sono isolati da altri processi e dal middleware dal kernel. Più concretamente, Android (ab) usa la separazione utente di Linux assegnando ad ogni app un ID utente univoco. Quindi il kernel li isola nello stesso modo in cui gli utenti sono isolati sui sistemi Linux classici. Quindi i virus classici in cui altri programmi / app sono infetti semplicemente non sono possibili su Android se non ci sono vulnerabilità critiche a portata di mano. Inoltre, il middleware contiene molti punti di controllo di accesso in cui il chiamante viene controllato e verificato. Inoltre, a partire da Android 4 Google ha iniziato a integrare SELinux in Android come il cosiddetto Security Extensions per Android, o SE per Android. Qui viene aggiunto un controllo di accesso obbligatorio a grana fine per ridurre ulteriormente le possibilità di un attacco riuscito. Quando si tratta di prevenire tipi speciali di attacchi, Android ha anche aggiunto il supporto per ASLR nelle versioni 4.x e lo ha esteso da allora. Ad esempio, su versioni più recenti di Android 5 i binari vengono caricati solo se vengono compilati come eseguibili indipendenti dalla posizione.

Quindi questo è un sottoinsieme di tutte le difese che Android fornisce contro gli attacchi in generale o gli exploit di root in particolare. Questo elenco non è completo, ma ti dà un'idea di cosa devono attaccare gli attaccanti e quanto gli sviluppatori di Android si interessano della sicurezza (che personalmente apprezzo molto).

    
risposta data 03.09.2015 - 10:10
fonte

Leggi altre domande sui tag