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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
userland-exec — Userland-Exec-PoC als Angriffsvektor-Technik | Kitploit
Tools/GitHubGitHub/hardenedlinux/userland-exec
ExploitationIDS/IPS-UmgehungPost-ExploitationBinäranalyseRed Teaming
GitHubhardenedlinux/userland-exec

userland-exec

Userland-Exec-PoC als Angriffsvektor-Technik

Repository anzeigen
1461410vor 5 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Userland Exec

Userland exec ersetzt das bestehende Prozess-Image im aktuellen Adressraum durch ein neues. Es ahmt das Verhalten des Systemaufrufs execve nach, aber die Prozessstrukturen, die das Prozess-Image beschreiben, bleiben unverändert. Mit anderen Worten: Der Prozessname, der von Systemprogrammen gemeldet wird, behält den alten Prozessnamen.

Diese Technik kann verwendet werden, um nach der Erlangung beliebiger Codeausführung Tarnung zu erreichen. Sie kann auch verwendet werden, um Binärdateien auszuführen, die auf noexec-Partitionen gespeichert sind.

Der erste Userland-Exec wurde von grugq erstellt. Dieses Repository ist stark von der Rapid7 Mettle-Bibliothek inspiriert, die eine umfassende Blog-Beschreibung der Technik enthält.

Anfangs ahmte ein großer Teil des Codes dieses Repositories die Mettle-Bibliothek nach, wurde aber seitdem erweitert, um zusätzliche Komplexität zur Umgehung der SELinux-Überprüfung zu enthalten.

Umgehung der SELinux-Überprüfung

SELinux umfasst die execmem-Überprüfung, die Folgendes sicherstellt:

  • Eine Seite, die einmal beschreibbar war, kann nicht ausführbar werden (d. h. das Ändern von PROT_WRITE zu PROT_EXEC mittels ist nicht erlaubt).
Tool herunterladen
mprotect
  • Keine Seite kann gleichzeitig beschreibbar und ausführbar sein (W ^ X-Richtlinie).
  • Umgehung von mprotect

    Zur Umgehung von mprotect ist es notwendig, eine temporäre Datei zu erstellen. Dies kann durch die Kombination von memfd_create mit munmap und mmap erreicht werden, wodurch der Systemaufruf mprotect vollständig vermieden wird.

    Umgehung von W ^ X

    Das Beispiel elf_debugger.c zeigt, dass jede ELF-Datei eine PT_LOAD-Region enthält, die sowohl ausführbar als auch beschreibbar ist. Diese Region ist erforderlich, um die Programminformationen während der Ausführung zu laden. Um dies zu adressieren, wurde die Implementierung bypass_wx.c erstellt. Dieses Design:

    • Markiert eine Seite als ausführbar.
    • Löst bei Schreibversuchen auf diese Seite ein SIGSEGV-Signal aus.
    • Fängt das Signal ab und ändert den Seitenschutz dynamisch von PROT_EXEC zu PROT_WRITE.

    Testen

    OSArchitekturErgebnis
    Ubuntu 24.04x86_64Erfolg
    Archlinux 6.12.4x86_64Erfolg
    CentOSx86_64Erfolg
    Raspberry Pi OSarm64Erfolg
    S23 Android 14arm64Erfolg

    Build und Verwendung

    Dieser Abschnitt beschreibt, wie für Android- und x86-Maschinen gebaut wird. Stellen Sie sicher, dass libelf installiert ist, bevor Sie fortfahren.

    x86

    Build

    root@kitploit:~
    mkdir build && cd build
    cmake ..
    make
    

    Verwendung

    root@kitploit:~
    desktop % strace ./uexec hello others args here 2>&1 | grep exec
    execve("./uexec", ["./uexec", "hello", "others", "args", "here"], 0x7ffc34ec02f0 /* 54 vars */) = 0
    desktop % strace bash -c ./hello 2>&1 | grep exec
    execve("/usr/bin/bash", ["bash", "-c", "./hello"], 0x7ffebecc3130 /* 54 vars */) = 0
    newfstatat(AT_FDCWD, "/desktop/userland-exec/build", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
    newfstatat(AT_FDCWD, "/desktop/userland-exec", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0
    execve("./hello", ["./hello"], 0x5fb22658e2a0 /* 54 vars */) = 0
    

    Debug-Build

    root@kitploit:~
    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Debug ..
    make
    

    Android

    Build

    root@kitploit:~
    mkdir build && cd build
    cmake -DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
          -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-30 ..
    make
    

    Verwendung

    root@kitploit:~
    desktop % adb push uexec hello /data/local/tmp
    uexec: 1 file pushed, 0 skipped. 113.9 MB/s (22912 bytes in 0.000s)
    hello: 1 file pushed, 0 skipped. 184.9 MB/s (6936 bytes in 0.000s)
    2 files pushed, 0 skipped. 0.3 MB/s (29848 bytes in 0.090s)
    
    desktop % adb shell
    dm3q:/ $ cd /data/local/tmp
    dm3q:/data/local/tmp $ chmod +x uexec
    dm3q:/data/local/tmp $ ./hello
    Hello World
    dm3q:/data/local/tmp $ ./uexec hello
    Hello World
    dm3q:/data/local/tmp $
    

    Fehlerbehebung

    Auf CentOS kann die libc-Bibliothek ein ungewöhnliches Verhalten aufweisen. Um dieses Problem zu beheben, wurde ein einfaches „Hallo, Welt“-Programm in Assemblersprache bereitgestellt: hello_nolibc.s. Dieses Beispiel zusammen mit dem cmake zeigt, wie ein Programm ohne Verknüpfung mit libc gebaut und ausgeführt wird.

    Wenn Ihr CMAKE über 4.0 liegt, können Sie im Build -DCMAKE_POLICY_VERSION_MINIMUM=3.5 anhängen.

    Lizenz

    Dieses Repository verwendet die GPL-3.0-Lizenz.