24

どのようにしてすべてのレジストリ アクセスを監視できるのか、概要を説明していただけないでしょうか。

http://technet.microsoft.com/en-us/sysinternals/bb896645

さまざまなサブトピックをグーグルで調べて、自分のサブトピックを書き込もうとするのに十分な詳細ですか?彼らがある種の dll インジェクション/API フックを使用したことは知っていますが、どのようにしてすべてのカーネル モード アクティビティに到達したのかはわかりません。

4

1 に答える 1

21

起動時に仮想ドライバをロードし、低レベルで監視を行います。したがって、他のプロセスに何も注入する必要はありません。

http://www.decuslib.com/decus/vmslt00a/nt/filemon.htmに、 ProcMonの前身の1つであるFileMonがどのように機能するかについての簡単な説明があります。

Filemonのしくみ

Windows 9xドライバーの場合、Filemonの中心は仮想デバイスドライバーFilevxd.vxdにあります。これは動的にロードされ、初期化時にVxDサービスIFSMGR_InstallFileSystemApiHookを介してファイルシステムフィルターをインストールし、すべてのファイルシステム要求のコールチェーンに自身を挿入します。Windows NTでは、Filemonの心臓部はファイルシステムドライバドライバであり、フィルタデバイスオブジェクトを作成してターゲットファイルシステムデバイスオブジェクトにアタッチし、Filemonがドライブに向けられたすべてのIRPおよびFastIO要求を認識できるようにします。

Filemonは、open、create、またはclose呼び出しを検出すると、内部ファイルハンドルとファイルパス名の間のマッピングとして機能する内部ハッシュテーブルを更新します。ハンドルベースの呼び出しを検出すると、ハッシュテーブルでハンドルを検索して、表示するフルネームを取得します。ハンドルベースのアクセスがFilemonの開始前に開かれたファイルを参照する場合、Filemonはハッシュテーブル内のマッピングを見つけることができず、代わりにハンドルの値を提示するだけです。

アクセスに関する情報はASCIIバッファにダンプされ、GUIに定期的にコピーされて、リストボックスに出力されます。

同様に、別の前任者であるRegmonも同様です。

Regmonのしくみ

Windows 9x上のRegmonの心臓部は、仮想デバイスドライバーRegvxd.vxdにあります。動的にロードされ、初期化時にVxDサービスフックを使用して(詳細については、1996年5月のVxDサービスフックに関するDr. Dobbのジャーナル記事を参照)、Windows 95カーネルの16のレジストリアクセス関数のコールチェーンに自身を挿入します(詳細については、1996年5月のDr. Dobb's Journalの記事を参照)。仮想マシンマネージャー)。16ビットプログラム、Win32アプリケーション、またはデバイスドライバーからのすべてのレジストリアクティビティは、これらのルーチンに向けられるため、Regmonはマシン上で発生するすべてのレジストリアクティビティをキャッチします。

Windows NTでは、Regmonは、システムコールフックと呼ばれるNT用に開発した手法を使用するデバイスドライバをロードします。ユーザーモードコンポーネントが特権システムコールを行うと、制御はNTOSKRNL.EXE(Windows NTオペレーティングシステムのコア)のソフトウェア割り込みハンドラーに転送されます。このハンドラーは、マシンレジスターで渡されるシステムコール番号を受け取り、システムサービステーブルにインデックスを付けて、要求を処理するNT関数のアドレスを見つけます。このテーブルのエントリをフック関数へのポインタに置き換えることにより、NTシステムサービスを傍受および置換、拡張、または監視することができます。明らかにレジストリ関連のサービスだけをフックするRegmonは、この機能が実際に動作している一例にすぎません。

Regmonは、open、create、またはclose呼び出しを検出すると、キーハンドルとレジストリパス名の間のマッピングとして機能する内部ハッシュテーブルを更新します。ハンドルベースの呼び出しを検出すると、ハッシュテーブルでハンドルを検索して、表示するフルネームを取得します。ハンドルベースのアクセスが、Regmonが開始する前に開かれたキーを参照する場合、Regmonはハッシュテーブルでマッピングを見つけることができず、代わりにキーの値を提示するだけです。

アクセスに関する情報はASCIIバッファにダンプされ、GUIに定期的にコピーされて、リストボックスに出力されます。

コードを読むのが好きな場合は、FileMonとRegMonのソースコードを次に示します。http://www.wasm.ru/baixado.php?mode = tool&id = 283 http://forum.sysinternals.com/topic8038_page1.htmlから

于 2011-01-28T23:28:18.413 に答える