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
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
1461425vor 6 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 mprotect ist nicht erlaubt).
  • 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

mkdir build && cd build
cmake ..
make

Verwendung

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

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make

Android

Build

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

Verwendung

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.

Tool herunterladen