
ksentinel は、重要なカーネル関数とシステムコールテーブルを監視し、不正な改ざんを検出します。ftrace フック、kprobes、システムコールテーブルのハイジャックなど、ほとんどのルートキットが標的とする一般的なシステムコールを検出します。
注: ksentinel は初期バージョンです。今後のコミットでさらなる改善が行われる予定です。
VFS 層:
ネットワークスタック:
認証情報:
モジュールシステム:
トレーシング基盤:
さらに、プレフィックスマッチングにより 500 以上の追加システムコールラッパーを監視します。
make
コンパイル中に、ランダムな 32 文字のアンロックキーが生成され表示されます。すぐに書き留めてください。 このキーはコンパイルされたモジュールに埋め込まれ、外部に保存されることはありません。
アンロード防止機能が有効な場合は、このキーを安全に保管してください。
sudo make install
モジュールは lsmod から隠れてロードされ、デフォルトでアンロード防止機能が有効になります。
sudo insmod ksentinel.ko
sudo ./ksentinel-manager.sh load # load module
sudo ./ksentinel-manager.sh status # check status
sudo ./ksentinel-manager.sh watch # monitor live
sudo ./ksentinel-manager.sh violations # view alerts
dmesg -wT | grep ksentinel
アンロード防止機能が有効な場合、モジュールを削除する前にアンロックする必要があります:
echo "your_32char_key" > /proc/.ksctl
またはマネージャを使用:
sudo ./ksentinel-manager.sh unlock
sudo rmmod ksentinel
カスタムパラメータの例:
sudo insmod ksentinel.ko period_ms=5000 anti_unload=false
ksentinel は period_ms パラメータに基づいて定期的な整合性チェックを実行します。
間隔を短くすると検出が速くなりますが、CPU 使用率が増加します。デフォルトの間隔(2000ms)は最新システムへの影響は最小限です。
ksentinel: [CHANGE - HOOK PATTERN] sys_getdents64 @ 0xffffffff81234567
baseline=1234567890abcdef current=fedcba0987654321
bytes: e9 ab cd ef 12 90 90 90 ...
flags: JMP/CALL_DETECTED ENDBR64_PREFIX
ksentinel: [SCT HOOK] syscall[78] expected=0xffffffff81111111 got=0xffffffffa0222222 (fake_getdents+0x0)
ksentinel: [LSTAR TAMPERED] baseline=0xffffffff81800000 now=0xffffffffa0300000 (evil_syscall_entry+0x0)
ksentinel は以下によって行われた改ざんを検出できます:
検出は、ルートキットよりも前に ksentinel をロードしているかどうかに依存します。
カーネルコンフィグレーション:
サポート対象カーネル:
カーネルコンフィグレーションを確認:
grep -E "KALLSYMS|KPROBES" /boot/config-$(uname -r)
モジュールはアンロード防止機能により非表示になっています。先にアンロックしてください:
sudo ./ksentinel-manager.sh unlock
make clean # clean build artifacts
make # compile module
make install # load module
make uninstall # unload module
貢献を歓迎します。コードスタイルを維持し、新機能にはテストを追加してください。
GPL-2.0-only
このプログラムは GPL バージョン 2.0 のもとでライセンスされたフリーソフトウェアです。修正を行う場合は、元の作者への帰属表示を保持し、同じライセンスで配布しなければなりません。
詳細は LICENSE ファイルを参照してください。
MatheuZSecurity
ルートキット研究者コミュニティ:https://discord.gg/66N5ZQppU7
このツールはセキュリティ研究およびシステム管理を目的としています。責任を持って使用してください。作者はこのソフトウェアの誤用や損害について一切の責任を負いません。
| Parameter | Type | Default | Description |
|---|
| period_ms | uint | 2000 | 整合性チェックの間隔(ミリ秒) |
| sym_prefixes | string | "sys_,x64_sys,do_sys,ksys_" | 監視するシンボルプレフィックスのカンマ区切りリスト |
| extra_syms | string | "" | 監視する追加の特定シンボル |
| anti_unload | bool | true | アンロード防止機能を有効化 |