Linuxルートキット検出:ツールとテクニック
10分で読めます - 2026年5月16日

chkrootkit、rkhunter、Auditd、AIDE、およびサーバーの動作監視を使用して、Linuxのルートキットを検出し、防止する方法。
Linux ルートキット検出:サーバーセキュリティのためのツールと手法
ルートキットは、攻撃者にLinuxシステムへの持続的かつ隠蔽されたアクセス権を与えます。これらはカーネルの動作を操作し、ファイルやプロセスを隠蔽し、標準的なセキュリティツールを回避します。中には何年も検出されずに潜伏し続けるものもあります。単一のツールではすべてを捕捉できないため、それらを検出するには多層的なアプローチが必要です。
本記事では、Linux ルートキットの主な種類、そのスキャン方法、および基本的なスキャナーが見逃すものを捕捉する高度な監視手法について解説します。
Linux ルートキットの種類
ルートキットは異なる権限レベルで動作し、深層に潜れば潜るほど発見が困難になります。
ユーザーモードのルートキットは、アプリケーションレベル(Ring 3)で動作します。これらは、 LD_PRELOAD 悪意のあるライブラリを注入し、 readdir や fopenなどの標準Cライブラリ関数を傍受する悪意のあるライブラリを注入し、ユーザーランドのツールからファイルやプロセスを隠蔽します。
カーネルモードのルートキットは、ロード可能カーネルモジュール(LKM)としてロードされ、Ring 0で動作します。これらはシステムコールを傍受し、カーネルメモリを操作し、自身の存在を隠蔽します。特定のカーネルバージョンに紐づいているため、設定ミスがあればカーネルパニックを引き起こす可能性があり、皮肉なことにそれによってその存在が露呈することになります。
eBPFベースのルートキットは、Extended Berkeley Packet Filterサブシステムを悪用し、従来のモジュールをロードすることなくカーネル空間で実行されます。これらはシステムコールフック、トレースポイント、またはLSMイベントにアタッチします。標準的なLKMスキャナーでは検出できません。Boopkitは、この手法を用いて隠蔽されたC2チャネルを構築する、よく知られた概念実証(PoC)です。
io_uringベースのルートキットは最新の亜種です。これらは io_uring 非同期I/Oインターフェースを利用して操作をバッチ処理し、検出可能なシステムコールイベントの発生を抑制します。実験的なルートキットであるRingReaperは、この手法によって read, writeや connect といった呼び出しを静かに置き換えつつ、EDRツールを回避できることを実証しました。
| ルートキットの種類 | 特権レベル | フック手法 | 検出の難易度 |
|---|---|---|---|
| ユーザーモード | リング3 (ユーザー) | LD_PRELOAD、ライブラリハイジャック | 中 |
| カーネルモード | Ring 0 (カーネル) | システムコールテーブル、LKM、インラインフック | 高 |
| eBPFベース | Ring 0 (カーネル) | eBPF プログラムの添付 | 非常に高い |
| io_uring ベース | ユーザー/カーネル | 非同期I/Oバッチ処理 | 非常に高い |
chkrootkit および rkhunter によるスキャン
Linuxサーバーにおけるルートキット検出の基盤となるツールは2つあります。迅速なスキャンを行うchkrootkitと、より詳細なチェックを行うrkhunterです。
chkrootkit
chkrootkit は、重要なシステムバイナリ(ls, ps, netstat, sshd, ifconfig)に改ざんの兆候がないかチェックするシェルスクリプトです。また、プロミスカスモードのネットワークインターフェースや削除されたログも検出します。バージョン 0.59(2026年1月)の時点で、Linux BPFDoor、Syslogk、XZ Backdoor などの新しい脅威を含め、75種類以上のルートキット、ワーム、LKMを識別できます。
不審な動作が確認された後は、必ずこれを実行してください。 ifpromisc コンポーネントからの警告や、削除された lastlog または wtmp ファイルに関するアラートに注意してください。
rkhunter
rkhunter はさらに一歩進んでいます。システムのバイナリの SHA-1 ハッシュを正常と確認されている値と比較し、ファイルの権限や隠しファイルを監視し、起動設定をチェックし、カーネルとネットワークの分析を行います。
最初から適切に設定してください:
# Establish a baseline after a clean install or update
rkhunter --propupd
# Update rootkit definitions
rkhunter --update
# Run a full scan (use --novl on production servers to reduce I/O)
rkhunter --check --enable all
毎日の自動スキャンを行うには、 CRON_DAILY_RUN="true" を /etc/rkhunter.conf に設定し、 --skip-keypress および --report-warnings-only を使用してクリーンな出力を確保してください。ログは /var/log/rkhunter.log でログを確認し、誤検出と確認された項目をホワイトリストに登録してください。
LKMルートキットの検出
LKMルートキットは、カーネル拡張として動作し、システムコールを傍受してカーネルレベルでプロセスを隠蔽するため、特に危険です。 lsmod では検出できませんが、特定する方法はあります。
出力結果を lsmod の出力を /sys/module/ リストと照らし合わせてください。システムログに不審なカーネルメッセージがないか確認してください:
# Look for out-of-tree module warnings
sudo dmesg | grep "loading out-of-tree module taints kernel"
# Check for module verification failures
grep "module verification failed" /var/log/syslog
# Run chkrootkit's LKM-specific check
sudo chkrootkit lkm
から隠れるルートキットであっても lsmod や /proc/modules (Diamorphineなど)から身を隠すルートキットであっても、 /sys/module/diamorphine/coresize またはsyslogの警告を確認することで発見可能です。
高度な検知:動作監視と整合性チェック
静的スキャナーには根本的な弱点があります。2026年の実験では、ルートキットバイナリに機能に影響を与えない単一のヌルバイトを追加しただけで、検出率が劇的に低下しました。Diamorphineの検出率は、シンボルテーブルを削除しただけで、66件中33件から64件中8件へと低下しました。シグネチャのみに依存するだけでは不十分です。
動作分析
「このファイルは既知のルートキットと一致するか?」と問う代わりに、動作分析は「このプロセスは異常な動作をしているか?」と問いかけます。以下のシグナルを監視してください:
- Auditdを使用して監視する
init_module()およびfinit_module()システムコールを監視します。これらは、方法にかかわらずカーネルモジュールをロードします。 - シグナル値が31を超える
kill()31以上のシグナルを持つシステムコールを監視してください。これらは、隠蔽されたルートキットの通信を示している可能性があります。 - 不正なカーネルモジュールの動作がないか
/proc/sys/kernel/tainted不正なカーネルモジュールの動作がないか確認してください。 - 予期しない
.soファイルの/tmpまたは/dev/shm. - eBPFの動作、特に
bpf_probe_write_user呼び出しに注意してください。BCCのようなツールは、sys_enter_io_uring_enter.
特に eBPF および io_uring ルートキットについては、Tetragon、Falco、Tracee などのランタイム監視ツールを使用して、カーネル内のアクティビティをリアルタイムで監視できます。
ファイルの整合性監視
AIDE (Advanced Intrusion Detection Environment) は、信頼できるシステムファイルのベースラインを作成し、変更をチェックします。 aide --initで初期化し、 aide --check 。これは、次のような重要なバイナリのチェックサム、権限、所有権、およびタイムスタンプを追跡します /bin/login および /usr/bin/sshd.
パッケージレベルの検証には、 debsums (Debian/Ubuntu) または rpm -Va (RHEL/CentOS) を使用することで、システムファイルの整合性を確認できます。最も信頼性の高い結果を得るには、信頼できるレスキューメディアから起動し、ファイルシステムをオフラインで検査してください。ルートキットは、実行中のカーネルからの報告を改ざんする可能性があるためです。
また、永続化メカニズムも監視してください。ルートキットはしばしば /etc/ld.so.preload を改変して共有オブジェクトを注入したり、 .bashrc および .profileを改変することがよくあります。これらのファイルに対する正当な変更は稀であるため、ここでのアラートはノイズ対信号比が高くなります。
Auditd による自動監視
これらのルールを /etc/audit/rules.d/rootkit.rules に追加し、不審なカーネル活動をリアルタイムで検出します:
# Detect unauthorized kernel module loading
-a always,exit -F arch=b64 -S finit_module -S init_module
# Catch unusual high-range kill signals
-a always,exit -F arch=b64 -S kill -F a1>=32
これらを rkhunter の自動更新と組み合わせます。 UPDATE_MIRRORS=1 と MIRRORS_MODE=0 を設定し、 rkhunter --propupd を実行して、ベースラインを更新してください。
ルートキットに対するサーバーの強化
検知も重要ですが、予防に勝るものはありません。ほとんどのルートキットはインストールに昇格された権限を必要とするため、攻撃対象領域を縮小することが極めて有効です。
カーネルとパッケージを常に最新の状態に保ってください。攻撃者は、パッチが適用されていない脆弱性を悪用して権限を昇格させ、LKMやeBPFベースのルートキットを展開します。パッチ適用後は、検出基準を更新してください。 rkhunter --propupd.
最小権限の原則を徹底してください。ユーザーやプロセスに必要以上のアクセス権を与えないでください。SELinuxやAppArmorを使用して強制アクセス制御を行い、プロセスが侵害された場合でも不正な動作をブロックするようにしてください。
起動後のカーネルモジュールの読み込みを無効にしてください。専用サーバーでは、システム起動後のモジュール読み込みを制限することで、LKMルートキットを完全に防ぐことができます。これは共有ホスティングでは不可能なため、専用サーバーやVPS環境の方がより強固なセキュリティ体制を提供できる理由の一つとなっています。
ネットワークをセグメント化してください。インフラの一部を隔離することで、1台のマシンが侵害された場合の横方向の移動を制限できます。
定期的に監査を実施してください。Lynis などのツールを使用すれば、攻撃者に悪用される前に、権限設定の誤りや設定ミスを特定できます。
結論
ルートキットは、目立つ場所に隠れるように設計されています。症状が現れた時点では、システムはすでに回復が困難なほど侵害されている可能性があります。あらゆる脅威を検知できる単一のスキャナーは存在せず、基本的なシグネチャベースの検知は容易に回避されてしまいます。
実用的な防御策は、複数の層を組み合わせたものです:
- 既知の脅威に対する chkrootkit および rkhunter による定期的なスキャン
- 不審なカーネル活動を監視するための Auditd ルールおよび動作監視
- AIDEによるファイル整合性監視による不正な変更の検知
- eBPFやio_uringの脅威に対するTetragonやFalcoなどのランタイムツール
- 攻撃対象領域を縮小するための、強化されたアクセス制御、パッチ適用、およびネットワークのセグメンテーション
可能な限りの自動化を行い、ベースラインを最新の状態に保ち、信頼できるクリーンなOSインストールから開始してください。
FDC Serversでは、フルルートアクセスとカスタマイズ可能なカーネル設定を備えた専用サーバーおよびVPSホスティングを提供しています。強化されたLinux環境を構築するために、専用サーバーのオプションをご検討ください。

遅いデプロイメントや帯域幅の制限にうんざりしていませんか?FDC Serversは、瞬時の専用電源、グローバルリーチ、あらゆる規模に対応する柔軟なプランを提供します。
今すぐアップグレード
Linuxトラフィック制御(tc):実践ガイド
tcを使用して、Linux上で帯域幅を制御し、トラフィックを優先順位付けし、入口と出口を形成する。実サーバーのHTB、IFB、DSCP、fq_codelコンフィグ。
12分で読めます - 2026年6月5日
パワフルで無制限のVPSが重要な理由
7分で読めます - 2025年5月9日

ご質問またはカスタムソリューションが必要ですか?
柔軟なオプション
グローバル・リーチ
即時展開
柔軟なオプション
グローバル・リーチ
即時展開