
シグナルを使用してプロセス権限を昇格させる Linux ルートキットを検出します。
一部のルートキットは、特定のシグナルを待ち受けて権限を昇格するシグナルハンドラをインストールします。 このツールは、シグナルを送信して UID が root に切り替わるのを観測することで、これらのルートキットを特定できます。 必要に応じて root シェルを起動します。
検証済み:
666 を知っている必要があります)最新のプレビルドバイナリは リリースページ からダウンロードできます。または、ソースから最新のプレリリース版をビルドすることもできます:
git clone https://github.com/bcoles/rootkit-signal-hunter && \
cd rootkit-signal-hunter && \
cargo build --release
rootkit-signal-hunter -- [OPTIONS]
--min <MIN>: 最小シグナル番号 (デフォルト: 0)--max <MAX>: 最大シグナル番号 (デフォルト: 64)-s, --shell: ルートシェルを起動する (検出された場合)-t, --threads: ワーカースレッド数 (デフォルト: 16)-p, --pid: シグナルを送信するプロセス ID (デフォルト: $$)-v, --verbose: 詳細出力を有効にする[!NOTE]
--pidの実装は、新しく生成されたプロセスのプロセス ID を表すために$$を使用します。 これは、Fish のような POSIX 非準拠シェルでは失敗します。
Singularity や Diamorphine のようなルートキットは、任意のプロセス ID を使用した権限昇格を許可しており、デフォルトのオプションで簡単に検出できます (-s は root シェルを起動します):
rootkit-signal-hunter -s
KoviD のようなルートキットは、-p / --pid フラグで特定のプロセス ID を指定する必要があります:
rootkit-signal-hunter -s --pid 666
[!NOTE] ID
666の正当なプロセスを終了させるリスクがあります (現在のユーザーに必要な権限がある場合)。
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については LICENSE ファイルを参照してください。
lsrootkit の一部として同様のシグナルベースの検出を実装した David Reguera Garcia (Dreg) に感謝します。
Copyright © 2025, bcoles