Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ghost-hoock — GhostLock auf ein einziges Primitiv reduziert: SELinux deaktiviert auf Galaxy A17 (BZA5) über futex PI UAF (CVE-2026-43499). Kein Root, kein Cred-Patch, kein rwforge. | Kitploit
Tools/GitHubGitHub/genksome/ghost-hoock
Android-SicherheitPrivilege EscalationSpeicherforensikSchwachstellenanalyseExploitationMobile SicherheitPapers & ForschungPayload-EntwicklungBinary-Exploitation
GitHubgenksome/ghost-hoock

ghost-hoock

GhostLock auf ein einziges Primitiv reduziert: SELinux deaktiviert auf Galaxy A17 (BZA5) über futex PI UAF (CVE-2026-43499). Kein Root, kein Cred-Patch, kein rwforge.

581vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

ghost-hoock

Ein minimaler Fork von GhostLock, der nur eine Primitive beibehält: das Abschalten von SELinux über CVE-2026-43499 (futex PI UAF).

ghost-hoock läuft auf Samsung A17

kernel device cve license platform


Inhaltsverzeichnis

  • Was ist das
  • Wie es funktioniert
  • Was vom Original beibehalten wurde
  • Was entfernt wurde
  • Erstellen
  • Ausführen
  • Voraussetzungen
  • Einschränkungen und Risiken
  • Projektstruktur
  • Lizenz
  • Danksagungen
  • Links

Was ist das

ghost-hoock ist ein abgespeckter Fork des Exploits GhostLock von Mobile Hacking Lab, reduziert auf eine einzige Primitive:

Ein eingeschränkter Schreibzugriff über futex PI UAF -> selinux_enforcing = 0.

Kein Root, kein Überschreiben von cred, kein rwforge-Kanal, kein UMH, kein configfs. Nur das Minimum, das nötig ist, um SELinux auf dem verwundbaren Kernel in den permissiven Modus zu versetzen.

Beispielausgabe auf einem Samsung Galaxy A17 (SM-A175F, BZA5):


[] 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)

Dann:

$ getenforce
Permissive

getenforce gibt Permissive zurück


Funktionsweise

Der Exploit zielt auf CVE-2026-43499 ab — einen Use-after-Free in der futex-PI-Kette (Priority Inheritance) des Linux-Kernels auf rt_mutex. Die Kette in ghost-hoock besteht aus vier Schritten:

1. KernelSnitch mm_struct-Leak

Zeitseitenkanal gegen die Futex-Hash-Tabelle des Kernels. Wir hämmern mit FUTEX_WAKE_PRIVATE auf eine Menge von User-Space-Futexes, messen rdtsc-Deltas und korrelieren Hash-Bucket-Kollisionen. Dadurch wird die Adresse unseres eigenen mm_struct wiederhergestellt — die Basis der Spray-Seite, die wir später benötigen.

Dies ist die KernelSnitch-Technik, unverändert aus dem ursprünglichen Exploit übernommen.

2. Heap-Spray

Wir allokieren eine große order-3-Slab-Seite und legen sie anschließend mit dem Fake-Object-Layout aus, das vom PI-Pfad verwendet wird:

OffsetObjektZweck
0x0E80fake_lockFake-rt_mutex
0x0F80fake_fopsFake-file_operations-Tabelle
0x1180fake_w0Fake-rt_mutex_waiter, verwendet als Zielbaum
0x1240fake_rightFake-rb-tree-Rechtsknoten — hierher kommt der Schreibwert
0x1260fake_leftFake-rb-tree-Linksknoten
0x1280fake_taskFake-task_struct

Die gesamte Seite wird über einen AF_UNIX-Socket als SKB_SEND_SIZE = 2 * ORDER3_SIZE von sendmsg gesendet, sodass die skb-Daten auf unserer geleakten Seite landen. Anschließend geben wir sie in einer kontrollierten Reihenfolge frei, sodass unsere Seite auf einem per-CPU-Partial-Slab landet, den wir zurückgewinnen können.

3. PI-Pfad

Drei Threads:

  • waiter — tritt in FUTEX_WAIT_REQUEUE_PI auf f_wait ein und zielt auf f_pi_target.
  • owner — hält FUTEX_LOCK_PI auf f_pi_target und dann auf f_pi_chain.
  • consumer — ruft in einer Schleife sched_setattr(tid, SCHED_BATCH, nice=19) mit der TID des Waiters auf, was rt_mutex_setprio() auslöst und den Kernel dazu zwingt, den Fake-PI-Baum zu durchlaufen.

Ein vierter Aufruf aus dem Hauptthread — FUTEX_CMP_REQUEUE_PI(1, f_pi_target) — stößt das Requeue an. Im Kernel läuft rb_erase() gegen unseren Fake-Baum.

4. pselect eingeschränkter Schreibzugriff

pselect() / select() kopiert das fd_set des Benutzers auf den Kernel-Stack und durchläuft es später. Wir ordnen die fd_set-Bitmaps so an, dass die Wörter, die der Kernel als rb-tree-Zeiger behandelt, auf fake_right und dessen Parent landen — und das daraus resultierende rb_set_parent(child, parent) wird zu:


*(uint64_t *)target = value | color

Für mode = 1 (Write 1), target = selinux_enforcing und value = base + 0x100, was als byte0 = 0, byte1 = 1 kodiert wird. Der Kernel schreibt 0 nach selinux_enforcing[0] — SELinux ist nun permissiv.

ret = 6 (statt der Standardwerte 9) bestätigt, dass der Schreibvorgang angekommen ist: Der Consumer hat das Ziel während select() erreicht und wurde dadurch vorzeitig aufgeweckt.


Was vom Original beibehalten wurde

Dies ist ein Fork von mobilehackinglab/ghostlock-a17 (MIT). Folgendes wurde 1:1 aus dem Upstream-Exploit übernommen:

KomponenteDateiHinweise
KernelSnitchsrc/kernelsnitch/*mm_struct-Leak über 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.hSymboltabelle extrahiert aus 6.12.23-android16-5-abA175FXXS5BZD2-4k
BZA5-Target-Headerinclude/target.hAdresslayout, Payload-Offsets (nur W1-Teilmenge)
Runtime-Struct-Offsetsinclude/runtime_struct_offsets.h_RSO()-Makros für task_struct-Felder

Hilfscode (pr_*-Makros, SYSCHK, pin_to_core, set_limit, set_unbuffer) wurde ebenfalls unverändert aus dem Original übernommen.


Was entfernt wurde

Das ursprüngliche GhostLock erlangt vollständiges Root auf dem A17: Es installiert einen physischen R/W-Kanal via rwforge, patcht cred / real_cred, führt einen UMH-Helper mit Init-Credentials aus, erfasst Logs und mehr. In ghost-hoock ist alles nach dem ersten eingeschränkten Schreibvorgang entfernt.

Tool herunterladen