[ニュースレターアーカイブ ^][<Vol. 6、No. 2][Vol. 7、特別発表>]

システム内部ニュースレター Vol. 7、No. 1

http://www.sysinternals.com
Copyright (c) 2005 Mark Russinovich


2005 年 1 月 5 日 - この問題:

  1. 論説

    • DEP を取得しましたか?
  2. WINDOWS INTERNALS、第 4 版

  3. SYSINTERNALS の新機能

    • 11 月の統計
    • Sysinternals Magazine の記事
    • Sysinternals RSS フィード
    • Mark は Microsoft MVP です
    • Autoruns v6.01
    • プロセス エクスプローラー v8.61
    • Sigcheck v1.0
    • Bginfo v4.07
    • Regjump v1.0
    • Hex2dec v1.0
    • Tcpvcon v2.34
    • PsTools 更新情報
    • Microsoft の Sysinternals
  4. INTERNALS INFORMATION

    • インターネット閲覧
    • LiveKd を使用した病気のシステムのトラブルシューティング
    • CreekSide?
    • ChkReg Registry Fixer
    • Windows メモリ診断
    • 文書化されていないインターフェイスの調査
  5. INTERNALS TRAINING

    • サンフランシスコの Windows Connections
    • Mark Russinovich David Solomon によるハンズオン Windows 内部/Sysinternals クラス

Sysinternals ニュースレターは、http://www.winternals.com の Web で Winternals Software によって後援されています。 Winternals Software は、Windows NT/2000/XP/2003 用の高度なシステム ツールの大手開発者およびプロバイダーです。

Winternals は、ERD Commander 2005 を含む包括的な更新を使用して、管理者の Pak 5.0 の今後のリリースをお知らせします。

ERD Commander 2005 の新機能には次のものが含まれています:

  • クラッシュ アナライザー: システムがブートしない場合でも、Windows クラッシュの原因となるドライバーをすばやく簡単に診断する
  • DiskWipe - ハード ディスクまたはボリュームを安全に消去します。自動実行: Windows セットアップとユーザー ログオンで起動しているアプリケーションを確認します - システム リソースの問題を診断し、潜在的なマルウェアを見つけるのに役立ちます
  • FireFox Web ブラウザー: 修正プログラム、ドライバーの更新プログラムのダウンロード、Microsoft サポート技術情報のヘルプの検索 - 修復しようとしているシステム上のすべて
  • 修正プログラムのアンインストール ウィザード。起動できないシステムで修正プログラムとサービス パックを削除できます
  • システム ファイルの修復。Windows システム ファイルの整合性をチェックします。

これらの機能、ERD Commander 2005 の多数の機能強化と使いやすさの強化、および Windows PE に基づくリモート回復クライアントの新しい簡単なビルドと使用はすべて、2005 年 1 月下旬に利用可能な新しい Administrator's Pak 5.0 に含まれています。 管理者の Pak 5.0 がリリースされたときに評価版にサインアップするにはhttp://www.winternals.com/ap5preview/. にアクセスします

論説

皆さん、こんにちは。

Sysinternals ニュースレターへようこそ。 現在、ニュースレターの購読者数は 40,000 人です。

スパイウェアやウイルスを含むマルウェアの増加により、誰もがセキュリティに懸念を抱いています。 適切なセキュリティ対策としては、オペレーティング システムとアプリケーションのパッチの維持、ファイアウォール、ウイルス対策、スパイウェア除去ツールのインストールと構成、インターネットからダウンロードする場合やメールの添付ファイルを開く際の判断力を養うなどがあります。 しかし、徹底した対策にもかかわらず、マルウェアは防御をかいくぐってコンピュータに感染する方法を見つけてきます。 システムの防御における最も一般的な抜け穴はバッファー オーバーフローの脆弱性です。そのため、Windows XP Service Pack 2 のデータ実行防止 (DEP) 機能をよく理解しておく必要があります。

バッファー オーバーフローは、悪意のあるプログラムがコーディング エラーを実行するスレッドを制御するために利用できるプログラミング エラーです。 バッファー オーバーフローは通常、スタックベースです。つまり、攻撃者は、スタックに格納されているバッファーに収まるよりも多くのデータをプログラムに与えます。 データは、オーバーフローを含む関数が呼び出された関数に戻ろうとしたときに、代わりにデータ内の場所に戻すように作成されます。

残念なことに、バッファー オーバーフローのエラーは、どんなにテストされ、レビューされたソフトウェアでさえも悩まされることがあります。 Windows とそのコンポーネント ソフトウェアでは、複数のバッファー オーバーフローが月単位で発表されます (Linux とそのアプリケーションには免疫がなく、Windows と同等のバッファー オーバーフローが発生します)。 ほとんどのバッファー オーバーフロー悪用の一般的なテーマは、データのみを含むメモリ領域に配置されたコードが実行されるということです。

Intel Itanium プロセッサでは、リリースからの no-execute 保護がサポートされていますが、Windows がこのハードウェア サポートを実際に利用するようになったのは、Windows XP SP2 (および次期 Windows Server 2003 SP1) になってからです。たとえば、スレッド スタックやヒープ メモリを no-execute 可能としてマークするなどです。 no-execute ハードウェア保護をサポートするその他のプロセッサには、64 ビット AMD64 Opteron と Athlon 64、および Xeon および Pentium 4 プロセッサで使用可能になった EM64T と呼ばれる Intel のクローンなどがあります。 AMD と Intel は最近、no-execute をサポートしている 32 ビット プロセッサーを発表しました: AMD Sempron と Pentium 4 "J "ファミリー(520J、540J など)です。

Windows では、バッファー オーバーフローの悪用を防ぐために、既定でスタックとアプリケーション ヒープ メモリに対して no-execute 保護を適用する必要があることは明らかですが、既存のアプリケーションは数十万個あり、その一部は実際には正しい操作に適用されない設定に依存している可能性があります。 したがって、Windows XP SP2 は、no-execute 保護を適用する Windows の最初のリリースであり、保護されるプロセスと保護されないプロセスを管理者が制御できます。 最初に、将来のセキュリティの向上を目的とした決定では、64 ビット バージョンの Windows では、常にすべての 64 ビット プロセスに対して no-execute フラグが適用されます。 ソフトウェア ベンダーが 64 ビット アプリケーションをリリースする場合は、メモリの実行可能でない領域からコードを実行しないようにする必要があります (Java アプリケーションや .NET アプリケーションでよく行われるように、その場でコードを生成する場合は、データ領域を実行可能としてマークできます)。

次に、バッファー オーバーフローの悪用はオペレーティング システム コンポーネントを対象としているため、32 ビット Windows XP と Windows Server 2003 では、既定でコア オペレーティング システム イメージを保護します。 ただし、32 ビット アプリケーション (32 ビット Windows または 64 ビット Windows で実行されている) の場合、Windows XP は既定で "オプトイン" 戦略 (アプリケーションは既定では保護されません) になる一方で、Windows Server 2003 の既定値は "オプトアウト" になります (アプリケーションは既定で保護されますが、特定のアプリケーションは除外できます)。 セキュリティは通常、サーバー システムの優先度が高いため、これは理にかなっています。 [システム コントロール パネル] アプレットの [詳細設定] ページの [パフォーマンス] セクションにある [設定] ボタンを使用してアクセスする [DEP 構成] ダイアログで、オプトインまたはオプトアウトの設定を変更できます。

前述のように、比較的新しい AMD Sempron および Pentium 4 の "J" プロセッサを除いて、これまでにリリースされたすべての x86 互換チップには no-execute サポートがありません。 ただし、Windows XP と Windows Server 2003 では、"ソフトウェア DEP" と呼ばれるプロセッサに限られた形式の DEP が実装されています。 オペレーティング システムは、スレッドがエラーを生成したときにスレッドを制御するため、実行するエラー ハンドラーがプログラムのコードによって静的に登録されるエラー ハンドラーであることを確認できます。 これにより、オーバーフローしたスタック バッファーで悪意のあるコードを実行するようにスレッドのエラー ハンドラーをリダイレクトする悪用を防止できます。これは、2001 年にリリースされた CodeRed ウイルスが IIS に引き起こしたものです。

DEP は、比較的単純であるにもかかわらず、自己増殖型マルウェアに対してオペレーティングシステムが提供する最強の防御策の 1 つです。 残念なことに、その力は 3 つのことに制限を受けます。現在配備されているプロセッサのほとんどで、実行しない設定のためのハードウェア サポートがないこと、Windows XP のデフォルトのオプトイン設定により、コア オペレーティング システム プロセスのみが保護されること、そして認識不足であることです。 ソフトウェア DEP のスコープは制限されているため、no-execute をサポートするハードウェアで Windows を実行しない限り、DEP はわずかに有効です。 Windows XP が既定でオプトインに設定されているということは、ユーザーが no-execute ハードウェアで Windows を実行した場合でも、DEP 保護を受ける唯一のプロセスがオペレーティング システムのプロセスであることを意味します。サード パーティ製のファイアウォール、Web ブラウザー、メール リーダー、またはその他のネットワーク対応アプリケーションでバッファー オーバーフローが発生した場合でも、脆弱性が発生します。 実際、マルウェア (IIS と Outlook) によって最も悪用されるアプリケーションの一部は、オプトイン設定では保護されていません。 最後に、ほとんどのユーザーは既定の動作や DEP をまったく認識していないため、ほとんどの場合、システムはバッファー オーバーフローの問題のリスクを抱えたままになります。

Microsoft はそろそろ、より良いセキュリティと引き換えに互換性の代償をユーザーに支払わせるべきでしょう。そうしないとユーザーはウイルスの手によってはるかに高い代償を払うことになり、そのツケが Microsoft に回ってくることになります。 それまでの間は、Windows XP SP2 にアップグレードすることを強くお勧めします (Windows XP 64 ビット エディションと Windows Server 2003 SP1 では、実行不可のサポートもあります)、オプトインに切り替え、実行なしのサポートを持つプロセッサにアップグレードします (手数料は受け取りません)。

その内容に興味があると思われる友人にニュースレターをお渡しください。

ありがとうございます。

-Mark

WINDOWS INTERNALS、第 4 版

Dave Solomon と共同編集した Windows Server 2003、Windows 2000、Windows XP の内部情報に関する公式の Microsoft 書籍が、書店で入手できるようになりました。 Dave と私は、Windows Server 2003 や XP の変更だけでなく、トラブルシューティング ツールやテクニックに新しい素材を追加し、前のエディションのカバレッジを約 25% 拡大しました。 プロセス エクスプローラー、Filemon、Regmon の使用に関する高度なヒントが見つかります。Windows のクラッシュダンプ解析に関する章も新設されました。

書籍の内容とオンライン注文の詳細については、以下を参照してください

http://www.sysinternals.com/windowsinternals.shtml

SYSINTERNALS の新機能

SYSINTERNALS RSS フィード

新しい投稿通知メカニズムを Sysinternals に追加する要求を受け取ったので、最終的に Web 全体の傾向に従い、RSS フィードを追加しました(RSS フィードに詳しくない場合は、以下に良い入門書があります: http://rss.softwaregarden.com/aboutrss.html). このフィードは、フロント ページの完全な一覧を保証しない軽微なバグ修正と更新を通知する機会も提供します。 これは、フィードが 1 日に取得するヒット数に基づいて更新情報を得るためのおすすめの方法といえます。

Sysinternals RSS フィードには、次の位置からアクセスします:

http://www.sysinternals.com/sysinternals.xml

SYSINTERNALS マガジンの記事

約 6 か月前に、Sysinternals ツールの Windows IT Pro Magazine (旧称 Windows および .NET Magazine) で半月ごとのコラムを作成し始めました。 各コラムでは、さまざまなツールについて説明し、高度な使用方法と動作方法に関する情報に関するヒントを提供します。

すでに公開されている 3 つのうち、最初の 2 つにはサブスクライバー以外のユーザーがオンラインでアクセスでき、3 つ目は間もなくアクセスできるようになります:

Autoruns: http://www.win2000mag.com/Windows/Article/ArticleID/44089/44089.html

Pslist と Pskill: http://www.winnetmag.com/Windows/Article/ArticleID/43569/43569.html

PsExec: http://www.winnetmag.com/Windows/Issues/IssueID/714/Index.html

MARK は MICROSOFT MVP です

プラットフォーム SDK の Microsoft Most Valuable Professional (MVP) のリードから、2005 年の MVP 使命を受けました。 Sysinternals で Microsoft のお客様に貢献してきたことを公式に認めていただき、彼と Microsoft に感謝しています。

11 月の統計

私は最終的に Sysinternals のための適切な Web トラフィック分析プログラムを手に入れ、11 月のログファイルを分析しました。 その数字の大きさには私自身も驚きました。 いくつかの要点を以下に示します。

  • 360 万ページ ビュー
  • 775,000 人のユニークなアクセス
  • 120 万個のユーティリティ ダウンロード
  • プロセス エクスプローラーの 200,000 ダウンロード、#1 ダウンロード

AUTORUNS V6.01

Autoruns は、過去数か月で大幅に進化し、2 つのメジャー バージョン番号の更新が行われています。 Autoruns の最新リリースでは、Winlogon 通知 DLL、エクスプローラー ツール バー、名前空間拡張機能とブラウザー ヘルパー オブジェクト、自動初期化 DLL など、標準の実行キーとスタートアップ フォルダーに加えて、自動開始の場所が表示されます。 もう 1 つの新機能である Google メニュー項目 (プロセス エクスプローラーから借用) は、ブラウザーを開き、選択した画像名の検索を開始することで、不明な画像を識別するのに役立ちます。

もう 1 つの新機能である画像署名検証は、マルウェアとシステム コンポーネント、または信頼できるアプリケーションを区別するのに役立ちます。 Microsoft には通常、Microsoft の秘密署名キーで署名されたオペレーティング システム ファイルのハッシュが含まれています。 Windows 暗号化関数は、Microsoft の公開署名キーを使用して署名済みハッシュを復号化し、Autoruns はハッシュを暗号化解除されたバージョンと比較してシステム上のイメージを検証し、一致する場合はイメージの会社名の前に "(Verified)" のプレフィックスを付けます。 イメージが改ざん、破損、置換、またはシステムによって信頼されていない発行元によって署名されたハッシュがある場合、Autoruns はイメージの会社名を "(Not Verified)" と報告します。

システム管理者は、ログインしているアカウント以外のアカウントで自動開始イメージをチェックすることができます。そのため、自動実行には、コンピューターにプロファイルが保存されているアカウントごとに選択できる [ユーザー] メニューが含まれるようになりました。

最後に、Autorunsc と呼ばれる Autoruns GUI に相当するコマンド ラインがコンソールに表示されるようになりました。 Sysinternals の PsExec ユーティリティと組み合わせると、出力を CSV として書式設定する機能により、ネットワーク全体のコンピューター用に構成された自動開始イメージのインベントリを簡単に生成できます。

以下から Autoruns をダウンロードする
http://www.sysinternals.com/ntw2k/freeware/autoruns.shtml

プロセス エクスプローラー V8.61

もう一度言いますが、プロセス エクスプローラーは、高度なプロセス管理ユーティリティとしてタスク マネージャーに置き換わるツールは、私が最も焦点を当てたツールです。それが、これだけ多くのフィードバックを得ている理由です。 前回のニュースレター以降、プロセス エクスプローラーはバージョン 8.4 から 8.6 に変更されました。 選択したプロセスに関する情報の検索を開始する Google メニュー項目、プロセス イメージ ファイルに存在する ASCII 文字列と Unicode 文字列を一覧表示するプロセス プロパティ ダイアログの [文字列] タブ、選択した DLL イメージ ファイル内の文字列を一覧表示する文字列メニュー エントリ、[プロセス エクスプローラー トレイ] アイコンの上にマウス ポインターを合わせると表示されるツール ヒント内の CPU 使用率が最も高いプロセスの名前など、これら 2 つのリリースを際立たせる新機能が多数存在します。

多くのユーザーが、[タスク マネージャー アプリケーション] タブなど、タスク マネージャーからの切り替え時に見逃した機能を要望しました。[アプリケーション] タブには、対話型デスクトップ上の最上位ウィンドウの一覧と、各ウィンドウを所有するスレッドの状態が表示されます。スレッドが現在ウィンドウ メッセージの受信を待機しているか、過去 5 秒以内にウィンドウ メッセージを処理している場合は "実行中" 、それ以外の場合は "応答なし" と表示されます (皮肉なことに、"実行中" は一般にスレッドが待機中であり、"応答なし" は実行中ではないことを示します)。 プロセス ビューに [ウィンドウ のタイトル] 列と [ウィンドウの状態] 列を追加することで、プロセス エクスプローラーと同じ情報を取得できるようになりました。

プロセス エクスプローラーには、.NET プロセスのハイライトや、.NET プロセスのプロセス プロパティ ダイアログの [.NETパフォーマンス] タブなど、.NET プロセスをターゲットにした機能が以前からありました。 .NET プロセスは、.NET ランタイムに読み込まれて登録されたプロセスです。 プロセスが起動した後にプロセスが登録されると、プロセス エクスプローラーが .NET プロセスであることに気付かない場合がありますが、最新リリースでは、ツール バーの [更新] ボタン、F5 キー、またはメニューの [更新] を選択して手動で表示を更新すると、.NETステータスとジョブ オブジェクト メンバーシップのプロセスが再チェックされます。

どのプロセスがウィンドウを所有しているのかわからない場合、新しい ウィンドウファインダー ツール バー ボタンを使ってウィンドウを特定することができます。 ターゲットと思えるツール バー ボタンをツール バーの外にドラッグし、対象のウィンドウの上にドラッグするだけで、プロセス エクスプローラーはプロセス ビューで所有しているプロセスを選択します。

すぐに目につく追加としては、ツール バーの近くにミニ CPU グラフが表示されることです。 このグラフには、システムの CPU 使用率の履歴が表示され、これをクリックしてプロセス エクスプローラーの [システム情報] ダイアログを開いたときに表示される拡張バージョンと同様に、マウスを動かしたグラフのポイントのタイムスタンプと最も CPU を消費するプロセスが表示されます。 グラフはツール バー エリアのどこにでも移動でき、プロセス エクスプローラー ウィンドウの横幅一杯に広がるように、一列に移動することもできます。

2 つのセキュリティ関連機能は、イメージ署名検証とデータ実行保護 (DEP) 状態です。 イメージ署名オプションを有効にすると、プロセス エクスプローラーは、プロセス イメージが信頼された署名者によってデジタル署名されているかどうかを確認するチェックを行い、自動実行と同様に、プロセス プロパティ ダイアログの会社名の前に "Verified" または "Not Verified" が付きます。 イメージ署名チェックは、チェックが Web サイトに移動して証明書の署名の有効性を確認するため、このオプションは既定で無効になっています。

DEP は、このニュースレターの概要で説明しますが、バッファー オーバーフローの悪用に対する保護を強化するために Windows XP SP2 で有効にする必要があります。 プロセス ビューに "DEP 状態" 列を追加するか、プロセスのプロパティ ダイアログのイメージ ページで [DEP 状態] フィールドをオンにして、プロセスの DEP 状態をチェックできます。

最後に、プロセス エクスプローラーは、カーネルとデバイス ドライバーのワーカー スレッドに関連付けられているプロセスであるシステム プロセスの DLL ビューで、システムに読み込まれたドライバーを一覧表示します。 ドライバーごとに、システム アドレス空間のバージョン、会社名、完全パス、読み込みアドレスなど、他のプロセスに一覧表示されている DLL と同じ情報を使用できます。

以下からプロセス エクスプローラーをダウンロードする
http://www.sysinternals.com/ntw2k/freeware/procexp.shtml

SIGCHECK V1.0

Sysinternals ツールの多くは、ユーザーがマルウェアを識別するのに役立つ機能を採用しており、Sigcheck は、その目標にほぼ排他的に焦点を当てたコマンド ライン ユーティリティです。 Autoruns とプロセス エクスプローラーに含まれているのと同じイメージ署名検証機能を使用して、信頼できる発行元によってファイルがデジタル署名されているかどうかを示します。 さらに、製品名、説明、会社名、バージョンなど、指定したイメージのファイル バージョン情報を報告します。 この情報は、Windows XP および Windows Server 2003 に付属する Filever ツールが報告する情報と似ていますが、Sigcheck は、ファイルが最初に署名されていないイメージに対して "リンク" または作成されたときのタイムスタンプと、署名されたイメージの署名のタイムスタンプも報告します。 最後に、ほとんどの署名済みハッシュは、それ自体が署名されたキーで署名されます。これは、証明書署名チェーンと呼ばれるものを形成するシーケンスです。 Sigcheck では、チェーン内の各署名者に関する情報を含む署名チェーンを印刷するように指示するコマンド ライン オプションがサポートされています。

Sigcheck の潜在的なセキュリティ関連の用途の 1 つは、Windows インストールのルート (通常は \Windows) の下にあるディレクトリ内の署名されていない .exe .dll または .sys イメージを調査することです。 次のコマンド ラインで Sigcheck を実行すると、署名されていない .exe イメージを簡単に識別できます:

sigcheck -s -u c:\windows\*.exe

すべての Microsoft イメージには有効な署名が含まれているはずですが、上記のコマンドを実行すると、悲しいことにその多くが含まれていないことが判明し、その結果、マルウェアを隠すために悪用される可能性のあるファイルができてしまいます。

以下から Sigcheck をダウンロードする
http://www.sysinternals.com/ntw2k/source/misc.shtml

BGINFO V4.07

Bginfo に対するこのマイナーな更新プログラムは、簡単に表示できるように実行するコンピューターのデスクトップに構成した情報を表示するツールであり、指定したサイズに合わせて拡大する必要があるビットマップのサポート、CPU 検出の機能強化、MySQL のサポート、マルチモニター ディスプレイの互換性の向上を実現しています。

以下から Bginfo をダウンロードする
http://www.sysinternals.com/ntw2k/freeware/bginfo.shtml

REGJUMP V1.0

特定のレジストリ キーへのエクスプローラーのショートカットを作成したり、キーのパスを入力してターゲットの場所に Regedit を開いたりしたいと考えたことがある場合は、Regjump が役立ちます。 Regjump は、Regmon で開発したのと同じレジストリ "ジャンプ先" テクノロジを使用するコマンド ライン ユーティリティです。 Regjump にレジストリ パスをコマンド ライン引数として指定すると、Regedit が開き、指定したキーまたは値に移動します。

以下から Regjump をダウンロードする
http://www.sysinternals.com/ntw2k/source/misc.shtml

HEX2DEC V1.0

デバッガーや逆アセンブリを使用すると、16 進数を 10 進数に変換し、逆に変換する必要があることがよくあります。 最終的に Calc を開いて数字を入力し、ベースを切り替えて変換を見るのにうんざりしたので、私は小さなコマンド ライン変換ユーティリティを書きました。 Hex2dec は、いずれかの方向に変換し、入力に "0x" または "x" プレフィックスがある場合、または文字 'a'-'f' (大文字と小文字が区別されない) が含まれている場合に、入力を 16 進数として簡単に識別します。

以下から Hex2dec をダウンロードする
http://www.sysinternals.com/ntw2k/source/misc.shtml

TCPVCON V2.34

Netstat は、Windows NT 以降に組み込まれているコマンド ライン ユーティリティであり、システム上で現在アクティブな TCP エンドポイントと UDP エンドポイントを示します。 Windows XP で導入された Microsoft のバージョンには、各エンドポイントを開いたプロセスのプロセス識別子 (PID) という便利な情報が含まれています。 ただし、プロセスの名前またはその他の情報を決定するには、プロセスリスト ツールを開き、その PID を持つプロセスを見つける必要があります。

TCPView は、同じアクティブなエンドポイント情報を表示する Sysinternals GUI アプリケーションですが、Netstat よりもはるかに便利です。というのは、これにはプロセスの名前が含まれており、DNS 名と生 IP アドレスをすばやく切り替え、新しいエンドポイントと削除されたエンドポイントの色で強調表示されるためです。 TCPView のダウンロードには、TCPView のコンソール バージョンである TCPVCon が含まれるようになりました。これは、コマンド ライン インターフェイスを使用するユーザー向けです。 Netstat とは異なり、TCPVCon は各エンドポイントに関連付けられているプロセスの完全なパスを表示し、CSV 形式で出力をダンプするスイッチを含みます。

以下から Tcpvcon をダウンロードする
http://www.sysinternals.com/ntw2k/source/tcpview.shtml

PSTOOLS の更新

PsKill と PsLoglist は、過去数か月間に機能強化された 2 つの PsTools です。 PsKill は、ローカル システムまたはリモート システム上のプロセスを終了するコマンド ライン ユーティリティで、プロセスのツリー全体を終了できるように -t スイッチをサポートするようになりました。 バッチ スクリプトのランナウェイ ツリーを簡単にクリーンできるようにするために、多くのユーザーがこのオプションを要望しました。

PsLoglist は、ローカル システムまたはリモート システムでイベント ログをダンプするコマンド ライン ツールです。 最近の更新では、コマンド ライン修飾子の長いリストに 5 つのオプションが追加されました。 新しい引数を使用すると、指定したイベントの種類またはイベント ソースを出力から除外したり、過去数分間または数時間のイベントのみをダンプしたりできます。 また、終了するまで実行されるイベント ログ監視モードもサポートされ、生成されたイベント ログ レコードが出力されるようになります。

PsKill や PsLoglist を含む PsTools のダウンロード
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

SYSINTERNALS AT WWW.MICROSOFT.COM

前回のニュースレター以降にリリースされた Microsoft サポート技術情報 (KB) 記事の Sysinternals リファレンスの最新の記事を次に示します。 これにより、Sysinternals へのパブリック KB 参照の合計数が 63 になります。

  • 修正: Windows 向けメディア プレーヤー 9 シリーズは頻繁にレジストリにアクセスしており、パフォーマンスに影響を与える可能性がありますhttp://support.microsoft.com/?kbid=886423

  • GDI+ 1.0 セキュリティ更新プログラムの概要 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsecure/html/gdiplus10security.asp

  • レジストリの編集 http://support.microsoft.com/default.aspx?scid=kb;en-gb;835818

  • プロジェクト ビュー http://support.microsoft.com/default.aspx?scid=kb ;en-us;810596 にアクセスしようとすると、"このビューに表示する情報がありません" というエラー メッセージが表示されます

INTERNALS INFORMATION

インターネット閲覧

約1年前、私は IE から Mozilla に切り替えたと発表しました。IE には、ポップアップブロック、タブ付きブラウジング、自動フォーム入力、広告フィルタリングなど、適切なインターネットブラウザに必須と考えられる機能がなかったためです。 その後間もなく、ある人が私に Avant Browser を教えてくれました。Avant Browser は、IE を使用する小さなダウンロード ソフトで (独自のブラウザーではありません)、そのすべてを提供してくれます。 Mozilla の不便な UI と、私がよく利用する特定のサイトとの互換性の欠如が、乗り換えを簡単に決断させた。 新しい FireFox リリースは両方の点で優れていますが、互換性のないサイト (Windows Update など) がまだ存在するため、もう一度切り替える必要はありません。

Microsoft は、IE の Windows XP SP2 でのささやかな機能強化を考慮しても、IE の改善が遅々として進まないことを恥じて、Avant Browser を購入し、IE の次期バージョンに組み込むべきです。

以下から Avant Browse をダウンロードする: http://www.avantbrowser.com

LIVEKD を使用した病気のシステムのトラブルシューティング

LiveKd は、Windows 2000 の第 3 版用に作成したユーティリティです (現在は Sysinternals のフリーウェア ツールです)。 これにより、Windows 用 Microsoft Debugging Tools パッケージの Windbg または Kd を使用して、通常は、オンラインでアクティブなシステムでクラッシュ ダンプと固定システムを調査するために使用されるデバッグ コマンドを実行できます。 Microsoft では、Windows XP 以降で実行する場合のデバッグ ツールに対して、"ローカル カーネル デバッグ" と呼ばれる同様の機能が導入されました。 ただし、LiveKd では、ローカル カーネル デバッグでは実行できないことがいくつかあります。 たとえば、ローカル カーネル デバッグでは、カーネルモードのスレッド スタックを見ることはできませんし、list-kernel modules コマンド lm k は、ローカル カーネル デバッグで実行すると、オペレーティング システム カーネルだけをリストアップし、他のロード ドライバをリストアップしません。 どちらのコマンドも LiveKd 内で動作します。

ローカル カーネル デバッグでは機能しないが、LiveKd では 機能するもう 1 つのコマンドは .dump です。 Microsoft 製品サポート サービス (PSS) エンジニアから、.dump コマンドは病気のシステムのトラブルシューティングに役立つことを学びました。 問題が発生しているが、Web やデータベースなどのサービスを提供しているコンピューターは、調査中にシステムが一時停止されている再起動や従来のデバッグの候補にならない可能性があります。 LiveKd を実行し、.dump を実行すると、システムの物理メモリの内容を含むクラッシュ ダンプ形式のファイルが作成されます。 ダンプ ファイルを別のコンピューターに移動し、WinDbg または Kd にダンプ ファイルを読み込んでオペレーティング システムとサービス アプリケーションの状態を分析し、問題の原因を調べる間に停止を回避できます。

以下から LiveKd をダウンロードする
http://www.sysinternals.com/ntw2k/freeware/livekd.shtml

CREEKSIDE?

私は最近、Windows XP サービス パック 2 バージョンの Winlogon の初期化を調査していました。これは、ログオン ユーザー インターフェイスを表示するシステム プロセスです。逆アセンブリでコードが見つかったとき、Winlogon は \Windows\System32 ディレクトリに ediskeer.dll という名前の DLL が存在するかどうかを確認し、存在する場合は信頼できる署名者によってデジタル署名されることを確認します。その後、それを読み込み、DLL によってエクスポートされた名前のない関数を呼び出します。 誰かがシステムにログオンしたときに実行される Winlogon コードは、初期化中に読み込まれた場合にも DLL を呼び出します。

私は自分のシステム上で DLL を探して見つけられませんでしたが、サービス パック 2 CD にも存在しません。 では、DLL とは? Microsoft がオペレーティングシステム用に出荷するデバッグ シンボルを使用すると、ediskeer.dll が存在し、署名されていると、Winlogon により "Creekside" と名前の変数が構成されるのを目撃しました。"ediskeer" は、"creekside"の最後の 8 文字を逆順に並べたものだと気づいたのです。 私はまだ Creekside が何を参照しているのか分かりませんが、私は DLL が Windows XP スターターエディション、Microsoft が最近発展途上国のために導入した Windows XP の低コスト バージョンにのみ付属しているものであると強く疑っています。 Starter Edition は、Windows XP Professional および Home Edition と同じオペレーティング システム コアに基づいていますが、ユーザーが同時に実行できるアプリケーションの数に制限があります。 私が間違っていなければ、Winlogon はその制限を適用するために DLL を読み込み、新しいユーザーがログオンするたびにアクティブ化します。

CHKREG REGISTRY FIXER

長年にわたり、Bryce と私は、ファイル システムの整合性チェック ユーティリティである Chkdsk の Registry-analogy を書くよう多くの要請を受けてきました。 しかしそれを書きませんでした。というのもその労力を正当化するには、対象ユーザーが少なすぎると感じたからです。 約 1 年前、Microsoft は、多くの種類のレジストリの破損を修正するレジストリ用の Chkdsk である、ほとんど知られていない Chkreg をリリースしました。

残念ながら、Chkreg は Windows 2000 でのみサポートされており (Windows NT 4 および Windows XP レジストリでも動作する可能性があります)、Windows API ではなくネイティブ API を使用する "ネイティブ" アプリケーションとして実装されているため、Windows では実行されません。 ダウンロードするときは、6 つの Windows セットアップ ブート フロッピーのセットにインストールする必要があります。面倒で時間がかかります。 私たちは Chkreg の開発者に連絡を取り、Microsoft のプロダクト サポート サービス (PSS) が社内で使用していることを知った Windows 版の公開を促しましたが、いつ公開されるのか、また公開されるのかについてはまだわからりません。

Chkreg は、以下からダウンロードできます
http://www.microsoft.com/downloads/details.aspx?FamilyID=56D3C201-2C68-4DE8-9229-CA494362419C&displaylang=en

WINDOWS メモリ診断

Windows ユーザーにとって最もストレスの多いエクスペリエンスの 1 つは、クラッシュするシステムです。 ほとんどの場合、障害はバグのあるサードパーティ製のデバイス ドライバーです。これは、ドライバーを無効にするか、修正プログラムを使用してバージョンに更新することで解決できます。 Microsoft Online Crash Analysis (OCA) に報告されたクラッシュの約 10% はハードウェアの問題によって引き起こされ、その大部分はディスクとメモリに関連するものです。

OCA が診断できない、またはメモリの問題が疑われるクラッシュが発生した場合は、Microsoft Windows メモリ診断 (WMD) に数分を費やす必要があります。Microsoft が最近リリースしたメモリ チェック ツールです。 WMD のインストーラーは、WMD プログラムを保存するフロッピー ディスクまたは CD を要求します。 フロッピーまたは CD からマシンを起動すると、WMD が実行され、コンピューターのメモリの徹底的なテストが実行され、その進行状況と問題が画面に報告されます。 メモリ エラーがある場合 WMD は、Windows クラッシュの無限のフラストレーションを節約することができます。

Windows メモリ診断は http://www.microsoft.com/downloads/details.aspx?FamilyID=56D3C201-2C68-4DE8-9229-CA494362419C&displaylang=en でダウンロードできます

文書化されていないインターフェイスの調査

ニュースレターで前述したプロセス エクスプローラーの機能強化に関するセクションで説明した DEP 状態機能は、文書化されていない機能に依存しています。 私の多くは、Windows のソースコード (Windows Internals の共同編集者である Dave Solomon はアクセス権を持っていますが、私はアクセスしません)、関数とその適切な使用法にアクセスすることなく、私が発見した方法を学ぶことに興味があると思いました。

分析プロセスの最初の手順は、プロセスの DEP 状態クエリが NtQueryInformationProcess API を介してルーティングされることを仮定することです。 プロセスに関する情報を取得する多くの Windows API 関数では、NtQueryInformationProcess インターフェイスを使用して情報を取得します。 Windows Driver Development Kit (DDK) の Ntddk.h ファイルでプロトタイプ化されたこの関数は、"ネイティブ API" システム呼び出しインターフェイスを介してユーザー モードからアクセスできます:

NTSYSAPI
NTSTATUS
NTAPI
NtQueryInformationProcess(
    IN HANDLE ProcessHandle,
    IN PROCESSINFOCLASS ProcessInformationClass,
    OUT PVOID ProcessInformation,
    IN ULONG ProcessInformationLength,
    OUT PULONG ReturnLength OPTIONAL
);

最初の 2 つの引数は、プロセスへのハンドルと "プロセス情報クラス" です。 以下に示す最初のいくつかの定義である PROCESSINFOCLASS 列挙も NTDDK.H に含まれています:

typedef enum _PROCESSINFOCLASS {
    ProcessBasicInformation,
    ProcessQuotaLimits,
    ProcessIoCounters,
    ProcessVmCounters,
    ProcessTimes,
//...

DEP は Windows XP SP2 で導入されたので、DEP クエリの情報クラスが Windows XP または Windows Server 2003 バージョンの Ntddk.h に一覧表示されるとは思わなかったため、簡単なチェックでその不在を確認しました。 そのため、DEP クエリ情報クラスを経験的に判断できるかどうかを確認するために、SP 2 のNtoskrnl.exe (NtQueryInformationProcess が実装されているイメージ) の逆アセンブルを調査する必要がありました。

逆アセンブラーは実行可能イメージを受け取り、コードを構成するアセンブリ言語命令を一覧表示します。 アセンブリ言語命令は、プロセッサによって実行される命令に直接マップされます。 使用する逆アセンブラーは http://www.datarescue.com の IDA Pro です。これは Microsoft のデバッグ情報ファイルを理解し、その情報をアセンブリ言語出力に統合するためです。 逆アセンブリで、NtQueryInformationProcess の開始時に、プロセス情報クラス パラメーターを受け取り、各クラスに固有のコードを実行する、複雑な一連の命令を検出しました。 情報クラスが新しいことがわかっているので、Ntddk の PROCESSINFOCLASS 列挙で定義を見たクラスの実行をスキップすることができました。 これにより、Windows XP のリリース以来導入された約 3 〜 4 の新しいクラスに私の調査が絞り込まれました。

クラスの 1 つである 0x22 の ProcessInformationClass 値に対応するクラスの 1 つで、コード パスを使用して、MmGetExecuteOptions という名前の関数に移動しました。その始まりを次に示します:

PAGE:0054D7CC ; __stdcall MmGetExecuteOptions(x)
PAGE:0054D7CC _MmGetExecuteOptions@4 proc near ; CODE XREF:
NtQueryInformationPro0063ess(x,x,x,x,x)+251C p
PAGE:0054D7CC
PAGE:0054D7CC arg_4 = dword ptr 8
PAGE:0054D7CC
PAGE:0054D7CC mov edi, edi
PAGE:0054D7CE push ebp
PAGE:0054D7CF mov ebp, esp
PAGE:0054D7D1 mov eax, large fs:124h
PAGE:0054D7D7 mov eax, [eax+44h]
PAGE:0054D7DA mov cl, [eax+6Bh]
PAGE:0054D7DD mov eax, [ebp+arg_4]
PAGE:0054D7E0 and dword ptr [eax], 0
PAGE:0054D7E3 xor edx, edx
PAGE:0054D7E5 inc edx
PAGE:0054D7E6 test dl, cl
PAGE:0054D7E8 jz short loc_54D7EC
PAGE:0054D7EA mov [eax], edx
PAGE:0054D7EC
PAGE:0054D7EC loc_54D7EC: ; CODE XREF:
MmGetExecuteOptions(x)+1C j
PAGE:0054D7EC test cl, 2
PAGE:0054D7EF jz short loc_54D7F4
PAGE:0054D7F1 or dword ptr [eax], 2
PAGE:0054D7F4
PAGE:0054D7F4 loc_54D7F4: ; CODE XREF:
MmGetExecuteOptions(x)+23 j
PAGE:0054D7F4 test cl, 4
PAGE:0054D7F7 jz short loc_54D7FC
PAGE:0054D7F9 or dword ptr [eax], 4
PAGE:0054D7FC

IDA Pro は、上記の出力の最初の行で、関数が 1 つの引数を受け入れることを示しました。これは DEP 設定を受け取る変数へのポインタであると思われます。 私は、Windows カーネルの逆アセンブリを通じて十分な時間をかけて、命令シーケンス mov eax, large fs:124h; mov eax,[eax+44h] をプロセッサ制御領域 (PCR) 構造の現在のスレッド _KTHREAD データ構造の読み取りとして認識し、その後 _KTHREAD 構造のオフセット 0x44 にある KPROCESS フィールドの参照として認識しました。 これらの命令に続く命令は、_KPROCESS 構造体のオフセット 0x6B にあるバイトの個々のビットを読み取ります。

_KPROCESS のオフセット 0x6B に何があるのか手探りだったので、ローカル カーネル デバッグ モードで Windbg を起動し、コマンド dt _kprocess を実行しました。それにより以下のことが報告されました:

+0x06b Flags : _KEXECUTE_OPTIONS

Looking at that structure with another dt command showed the bit definitions:

+0x000 ExecuteDisable : Pos 0, 1 Bit
+0x000 ExecuteEnable : Pos 1, 1 Bit
+0x000 DisableThunkEmulation : Pos 2, 1 Bit
+0x000 Permanent : Pos 3, 1 Bit
+0x000 ExecuteDispatchEnable : Pos 4, 1 Bit
+0x000 ImageDispatchEnable : Pos 5, 1 Bit
+0x000 Spare : Pos 6, 2 Bits

確かに、これらのビットは DEP に関連しており、MmGetExecuteOptions はその構造体からこれらのビットを ProcessInformation 引数としてNtQueryInformationProcess に渡されたメモリ位置の対応するビットにコピーしているように見えます。 したがって、ProcessInformationClass を 0x22、DWORD のアドレス (4 バイトの整数)、長さを 4 として NtQueryInformationProcess を呼び出せば、プロセスの DEP ステータスを問い合わせることができると判断しました。 MmGetExecuteOptions は現在のプロセスのフラグのみを返し、ProcessHandle パラメータは無視しているようです (プロセス エクスプローラは、KeAttachProcess API を介してヘルパー ドライバに他のプロセスの DEP 状態を問い合わせます)。

私は 64 ビット版のプロセス エクスプローラーを利用できるようになったので、64 ビット版の Windows でいくつかの微妙な違いを除いて行われました。 64 ビット Windows MmGetExecuteOptions では、ProcessHandle が -1 である必要があり、DEP は 64 ビット プロセスで常にオンになっているため、現在のプロセスが 64 ビット プロセスの場合は STATUS_INVALID_PARAMETER エラーを返します。 私は Windbg を使用して 64 ビット版の Ntoskrnl.exe を分解しましたが、それ以来 AMD64 イメージの逆アセンブリをサポートする IDA Pro のバージョンを取得しています。

INTERNALS TRAINING

サンフランシスコの Windows Connections

Windows IT Pro Magazine が運営し、4 月 17 日から 20 日にサンフランシスコで開催される Windows Connections 会議で、2 つのセッションを行っています。 1 つは、"マルウェアの理解と戦い: ウイルス、スパイウェア、ルートキットと呼ばれる一般的なセッション" です。ここでは、マルウェアが脆弱性を悪用してセキュリティ対策を伝達およびバイパスする方法、"ルートキット" と呼ばれる高度な手法を使用して非表示にする方法、それらを検出してシステムからクリーンする方法について説明します。

もう 1 つのセッションは "Windows メモリの問題のトラブルシューティング" です。ここでは、古い "タスク マネージャーに表示される値の意味は"、"メモリを使用しているもの"、"ページング ファイルをどれくらい大きくする必要があるか" という質問に答える方法を説明します。

以下から会議のパンフレットをダウンロードし登録する
http://www.devconnections.com/shows/win/default.asp?s=60#

MARK RUSSINOVICH によるハンズオン WINDOWS INTERNALS/SYSINTERNALS クラス

新しい書籍『Windows Internals 4th edition』の著者である Mark Russinovich と David Solomon と、Windows NT/2000/XP/2003 オペレーティング システム カーネルの内部を掘り下げながら、高度なトラブルシューティング手法を 5 日をかけて学びます。 Windows サーバーやワークステーションをデプロイし、サポートする IT プロフェッショナルなら、物事がうまくいかないときに表面から見えないところを掘り下げる能力が必要です。 Windows オペレーティング システムの内部を理解し、高度なトラブルシューティング ツールの使用方法を理解することで、このような問題に対処し、システム パフォーマンスの問題をより効果的に理解するのに役立ちます。 内部構造を理解することは、プログラマーが Windows プラットフォームをより良く活用するのに役立つだけでなく、高度なデバッグ テクニックを提供することにもなります。 また、このコースは Windows カーネルのソース コードと開発者にフル アクセスして開発されたので、実際のストーリーを理解していることがわかります。

今後の日付は次のとおりです:

  • 6 月 6 日から 10 日、フロリダ州オーランド
  • 7 月 11 日から 15日、ドイツ、ミュンヘン
  • 9 月 19 日から 23 日、カリフォルニア州サンフランシスコ
  • 12 月 5 日から 9 日、テキサス州オースティン

注: これはハンズオン クラスです。各出席者は自分のノート PC を持ち込む必要があります (構成手順は事前に送信されます)。

プロセスの内部、スレッド スケジューリング、メモリ管理、I/O、サービス、セキュリティ、レジストリ、ブート プロセスなど、Windows NT/2000/XP/2003 のカーネル アーキテクチャについて詳しく理解します。 また、マルウェアの無毒化、クラッシュ ダンプ (ブルー スクリーン) 分析、ブートの過去の問題の取得などの高度なトラブルシューティング手法についても説明します。 また、www.sysinternals.com の主要なツール (Filemon、Regmon、およびプロセス エクスプローラーなど) を使用して、低速コンピューター、ウイルス検出、DLL の競合、アクセス許可の問題、レジストリの問題など、さまざまなシステムとアプリケーションの問題のトラブルシューティングに関する高度なヒントについても説明します。 これらのツールは、Microsoft 製品サポートによって日常的に使用され、さまざまなデスクトップとサーバーの問題を解決するために効果的に使用されているため、操作とアプリケーションに慣れていると、Windows のさまざまな問題に対処するのに役立ちます。 実際の問題を解決するために、これらのツールの成功したアプリケーションを示す実際の例が提供されます。

登録するには、http://www.sysinternals.com/troubleshoot.shtml にアクセスします


Sysinternals ニュースレターをお読みいただき、ありがとうございました。

公開日: 2005 年 1 月 5 日 午後 4:36 by ottoh

[ニュースレターアーカイブ ^][<Vol. 6、No. 2][Vol. 7、特別発表>]