web-dev-qa-db-ja.com

ルートキットがドライバーに隠れているのはなぜですか?

Windows用の多くのルートキット(たぶんLinuxだって?)はドライバーに隠れています。何故ですか?

考えられる理由の1つは、カーネルモードで実行され、システムに完全にアクセスできるドライバーを使用していることですが、これを実現する簡単な方法はありませんか。それとも他の理由がありますか?

17
Erik

おっしゃったように、ほとんどのドライバーはカーネルモードで実行されるため、興味深いものすべてにアクセスでき、デバッガーから簡単に隠すことができます。

ドライバーを興味深い場所にする理由は他にもあります。

  • デバイスドライバーは大量にあり、ベンダーはオペレーティングシステムに含まれているバージョンとは異なる新しいバージョンのドライバーを提供しています。したがって、オペレーティングシステムのコアパーツとは異なり、既知の適切なファイルのハッシュを使用してデータベースを管理することは簡単ではありません。

  • ドライバーを開発するための標準的なツールとドキュメントがあります。したがって、これはカーネルメモリに直接パッチを適用したり、ブートローダーを置き換えるよりもはるかに簡単です。

  • デバイスドライバでの直接メモリアクセスは疑わしいものではありません。

  • 一部のドライバーは起動プロセスの早い段階で読み込まれるため、ウイルススキャナーが読み込まれる前に魔法をかけることができます。したがって、ウイルススキャナは、ルートキットが望んでいるものだけを認識します。

19

ルートキットを隠蔽するのに興味深い1つの特定のドライバーの種類は、ファイルシステムドライバーです。ルートキットは、ディレクトリ一覧の結果を簡単にフィルタリングし、ユーザーや他のシステムツールから自分自身を隠すことができます。

同様に、ネットワークドライバを非表示にすると、一部の接続をフィルタリングして、開いている接続のリストからそれらを削除できます。

5
Raku

ドライバーレベルでは、アプリケーションはシステムのハードウェアに完全にアクセスできます。これには、HWドライバーとOSの間に完全に透過的な方法で挿入するフィルタードライバーが含まれ、他のアプリケーションがその存在を検出することをほとんど不可能にします。

ファイルシステムドライバー、ネットワークドライバー、入力デバイス(キーボード..)に適用できます。

ドライバレベルのアプリケーションを作成することもできます非表示監視を処理して、アプリケーションの検出と削除を非常に困難にします。

2
fduff