Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
userland-exec — Userland exec PoC to be used as attack vector technique | Kitploit
ツール/GitHubGitHub/hardenedlinux/userland-exec
ExploitationIDS/IPS EvasionPost-ExploitationBinary AnalysisRed Teaming
GitHubhardenedlinux/userland-exec

userland-exec

Userland exec PoC to be used as attack vector technique

リポジトリを見る
146144ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

ユーザーランド exec (Userland Exec)

ユーザーランド exec は、現在のアドレス空間内の既存のプロセスイメージを新しいものに置き換えます。これはシステムコール execve の動作を模倣しますが、プロセスイメージを記述するプロセス構造は変更されません。言い換えれば、システムユーティリティが報告するプロセス名は、古いプロセス名のままになります。

この手法は、任意のコード実行を獲得した後にステルス性を達成するために使用できます。また、noexec パーティションに保存されたバイナリを実行するためにも使用できます。

最初のユーザーランド exec は grugq によって作成されました。このリポジトリは、この手法の包括的なブログ解説を含む Rapid7 Mettle ライブラリ から強く影響を受けています。

当初、このリポジトリのコードの大部分は Mettle ライブラリを模倣していましたが、その後、SELinux の検証をバイパスするための追加の複雑さを含むように拡張されました。

SELinux 検証のバイパス

SELinux には execmem 検証が含まれており、以下を保証します:

  • 一度書き込み可能になったページは実行可能にできません (つまり、mprotect を使用して PROT_WRITE から PROT_EXEC に変更することは禁止されています)。
  • どのページも書き込み可能と実行可能を同時に持つことはできません (W ^ X ポリシー)。

mprotect のバイパス

mprotect をバイパスするには、一時ファイルを作成する必要があります。これは memfd_create を munmap および mmap と組み合わせることで実現でき、mprotect システムコールを完全に回避します。

W ^ X のバイパス

elf_debugger.c の例は、任意の ELF に実行可能かつ書き込み可能な PT_LOAD 領域が含まれていることを示しています。この領域は、実行中にプログラム情報を読み込むために必要です。これに対処するため、bypass_wx.c の実装が作成されました。この設計は:

  • ページを実行可能としてマークします。
  • このページへの書き込み試行時に、SIGSEGV シグナルをトリガーします。
  • シグナルを傍受し、ページの保護を PROT_EXEC から PROT_WRITE に動的に変更します。

テスト

ビルドと使用方法

このセクションでは、Android および x86 マシン向けのビルド方法について説明します。作業を進める前に libelf がインストールされていることを確認してください。

x86

ビルド

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

使用方法

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

デバッグビルド

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

Android

ビルド

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

使用方法

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 $

トラブルシューティング

CentOS では、libc ライブラリが異常な動作を示す場合があります。この問題に対処するため、アセンブリで書かれた単純な "Hello, World" プログラムである hello_nolibc.s が提供されています。この例は cmake とともに、libc にリンクせずにプログラムをビルドして実行する方法を示しています。

CMAKE が 4.0 より上の場合は、ビルドに -DCMAKE_POLICY_VERSION_MINIMUM=3.5 を追加できます。

ライセンス

このリポジトリは GPL-3.0 ライセンス を使用しています。

ツールをダウンロード
OSArchitectResult
Ubuntu 24.04x86_64成功
Archlinux 6.12.4x86_64成功
CentOSx86_64成功
Raspberry Pi OSarm64成功
S23 Android 14arm64成功