web-dev-qa-db-ja.com

Linuxカーネル3+システムコールテーブルの変更の検出

カーネル3+システムコールテーブルの変更をチェックできる利用可能なツールはありますか?

また、Linuxで不明なルートキットをチェックするための自動化された一般的なツールはありますか?主に署名ベースのrkhunterなどとは異なり、Linux用のGMERのようなものが必要です。コードの変更、カーネルフック、関数フックなどを確認してください。

1
JustACPPFan

システム内からカーネルの変更を検出することはできません。どのルートキット検出器を使用する場合でも、ルートキットはそれに嘘をつくようにプログラムできます。誰かがあなたのカーネルを制御するなら、彼らはあなたではなくあなたのシステムを制御します、話の終わり。 GMERもその欠陥に悩まされており、それは動作原理に内在しています。それは、隠すのが苦手なルートキットだけを見つけます。

外部からカーネルの変更を検出することが可能です。そのための一般的なテクノロジーは [〜#〜] tpm [〜#〜] で、これはハードウェアの一部です。システムコールテーブルはカーネルのごく一部であり、他の場所での変更は同様の結果をもたらす可能性があるため、「システムコールテーブルの変更を確認する」よりも少し複雑です。 TPMは、システムのスナップショットを時々取得し、これらのスナップショットを参照スナップショットと比較することによって機能します。 TPMは、メモリイメージ全体ではなくハッシュのみを格納するため、スナップショットはビットごとに一致する必要があります。モジュールをロードするとカーネルが変更されるため、固定のモジュールセットと固定のカーネルバージョンが必要です。

カーネルの変更を検出することは、それを報告する場所がある場合にのみ役立ちます。 TPMにはユーザーインターフェイスがないため、TPMはユーザーに通知できません。 TPMを活用する方法は、コンピューターを使用してリモートサービスへの認証を行う場合です。 TPMはPCの測定値を送信し、リモートサービスはそれを参照値と比較して、PCが正常な状態であるかどうかを判断します。不明な状態はバージョンのアップグレードまたは侵害である可能性があり、リモートサービスはそれを知る方法がないため、TPMを有効に使用するには、アップグレードを管理するためにより多くのインフラストラクチャが必要です。

ハードウェアTPMの代わりに、ハイパーバイザーに同様の機能を実装できます。これには特別なハードウェアは必要ありませんが、もちろん、システムが仮想マシンで実行されていることを意味します。