
Linuxカーネルモジュールで、root権限を付与し、プロセスやファイルを隠蔽し、自身のアンロードを防ぐもので、Ubuntuカーネルでの教育目的に設計されています。
遊び半分で書かれた、悪意のないシンプルなLinuxカーネルルートキットです。
このルートキットは以下のことができます:
このルートキットは、Ubuntu 10.04.4 LTSおよびUbuntu 16.04 LTSで提供されているLinuxカーネル2.6.32-38および4.4.0-22で動作確認済みですが、その間のカーネルや新しいカーネルへの移植も非常に簡単です。
ルートキットにはアーキテクチャ固有のコードが含まれており、x86およびx86-64アーキテクチャのみで実装されています。 これはシステムコールテーブルの検索、書き込み保護されたメモリの無効化、および2つの関数フック手法のうちの1つを行うコードです。 新しいアーキテクチャへの移植は非常に簡単で、このコードの一部はルートキットの動作に厳密には必要ありません。例えば、移植性のないフック手法は削除しても構いません。ただし、ターゲットのカーネル関数のマシンコードを上書きしてフック関数を呼び出させるような関数フックの楽しみを逃す気があるなら、あなたはかなり退屈な人に違いありません。
このルートキットは1 CPUコアでのみテストされているため、マルチコアシステムでは正常に動作する場合もあれば、しない場合もあります。 ルートキットは常に1つのスレッドだけが何かを実行することを前提に書かれているため、マルチコアシステムではうまく動作しない可能性が高いです。リストデータ構造の周りにアトミックな書き込み/読み取りやミューテックスがないからです。
お好みのVMを起動します。
希望するUbuntuイメージを取得してインストールします:
| カーネル / アーキテクチャ | x86 | x86-64 |
|---|---|---|
| 2.6.32 | Ubuntu 10.04.4 i386 (694M) [torrent] [iso] | Ubuntu 10.04.4 amd64 (681M) [torrent] [iso] |
| 4.4.0 | Ubuntu 16.04 i386 (647M) [torrent] [iso] | Ubuntu 16.04 amd64 (655M) [torrent] [iso] |
Ubuntu 10.04の場合は、パッケージリポジトリのアドレスを修正します:
sed -i -re 's/([a-z]{2}\.)?archive.ubuntu.com|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
コンパイラ、Linuxヘッダー、およびルートキットのビルドに必要なその他すべてのものをインストールします:
apt-get update
apt-get install build-essential
apt-get upgrade を実行しないように注意してください。カーネルが更新されてしまいます。ルートキットはプリインストールされたカーネルバージョンでのみテストされています。
make
ルートキットをロード:
insmod rootkit.ko
ルートキットを使用:
$ ./client --help
Usage: ./client [OPTION]...
Options:
--root-shell Grants you root shell access.
--hide-pid=PID Hides the specified PID.
--unhide-pid=PID Unhides the specified PID.
--hide-file=FILENAME Hides the specified FILENAME globally.
Must be a filename without any path.
--unhide-file=FILENAME Unhides the specified FILENAME.
--hide Hides the rootkit LKM.
--unhide Unhides the rootkit LKM.
--help Print this help message.
--protect Protects the rootkit from rmmod.
--unprotect Disables the rmmod protection.
ルートキットをアンロード:
./client --unhide
./client --unprotect
rmmod rootkit.ko
そんなことはありません。Linuxルートキットの書き方について完全なソースコード付きの記事はオンラインに多数あり、無数のGitHubリポジトリもあります。
このルートキットの作成には以下の資料を使用しました:
このプロジェクトは GPLv2 の下でライセンスされています。