侵入検出に役立つ Windows イベント転送の使用

組織内のデバイスからイベントを収集する方法について説明します。 この記事では、通常の運用時と侵入が疑われる場合の両方のイベントを扱います。

Windows イベント転送 (WEF) は、organization内のデバイス上の運用イベント ログまたは管理イベント ログを読み取り、選択したイベントを Windows イベント コレクター (WEC) サーバーに転送します。

この機能を実現するために、クライアント デバイスに発行される 2 つの異なるサブスクリプション (ベースライン サブスクリプションと疑わしいサブスクリプション) があります。 ベースライン サブスクリプションは、organization内のすべてのデバイスを登録し、Suspect サブスクリプションにはユーザーが追加したデバイスのみが含まれます。 Suspect サブスクリプションは、システム アクティビティのコンテキストを構築するのに役立つより多くのイベントを収集し、ベースライン操作に影響を与えることなく、必要に応じて新しいイベントやシナリオに対応するように迅速に更新できます。

この実装は、イベントが最終的に格納される場所を区別するのに役立ちます。 ベースライン イベントは、セキュリティ イベント マネージャー (SEM) などのオンライン分析機能を備えたデバイスに送信でき、HDInsight や Hadoop などの MapReduce システムにイベントを送信して、長期的なストレージとより詳細な分析を行うこともできます。 Suspect サブスクリプションからのイベントは、ボリュームと信号/ノイズ比が低いため、MapReduce システムに直接送信されます。これらは主にホストフォレンジック分析に使用されます。

SEM の強みは、マシンの速度で既知のパターンの方法とアラート セキュリティ スタッフの検査、イベントの関連付け、アラートの生成ができることにあります。

MapReduce システムには、保持時間 (SEM の場合は年と月) が長く、イングレス能力が大きく (1 日あたり数百テラバイト)、統計と傾向分析、パターン クラスタリング分析などのデータに対してより複雑な操作を実行する機能、または Machine Learning アルゴリズムを適用する機能があります。

WEF イベントのおおよそのスケーリング ガイドを次に示します。

イベント/秒範囲 データ ストア
0 - 5,000 SQL または SEM
5,000 - 50,000 Sem
50,000+ Hadoop/HDInsight/Data Lake

デバイスでのイベント生成は、無効なイベント ログの有効化やチャネルのアクセス許可の設定など、WEF のベースライン実装の GPO の一部として個別に有効にする必要があります。 詳細については、「 付録 C - イベント チャネル設定 (有効化とチャネル アクセス) メソッド」を参照してください。 この条件は、WEF がイベント ログに関するパッシブ システムであるためです。 イベント ログ ファイルのサイズを変更したり、無効なイベント チャネルを有効にしたり、チャネルのアクセス許可を変更したり、セキュリティ監査ポリシーを調整したりすることはできません。 WEF は、既存のイベントのイベント チャネルのみを照会します。 さらに、デバイスでイベント生成が既に発生している場合は、システム アクティビティの完全な履歴をより完全なイベント 収集で構築できます。 それ以外の場合は、GPO と WEF サブスクリプションの更新サイクルの速度に制限され、デバイスで生成されているものに変更が加えられます。 最新のデバイスでは、より多くのイベント チャネルを有効にし、イベント ログ ファイルのサイズを拡張しても、パフォーマンスに大きな違いはありません。

推奨される監査ポリシーとレジストリ システム ACL の最小設定については、「 付録 A - 最小推奨最小監査ポリシー 」と 「付録 B - 推奨される最小レジストリ システム ACL ポリシー」を参照してください。

これらは、WEF サブスクリプションが選択した内容を満たすために必要な最小値のみです。

WEF サブスクリプション管理の観点から、提供されるイベント クエリは、メンテナンスを容易にするために 2 つの個別のサブスクリプションで使用する必要があります。特定の条件を満たすマシンのみが対象サブスクリプションへのアクセスを許可されます。このアクセスはアルゴリズムまたはアナリストの方向によって決定されます。 すべてのデバイスがベースライン サブスクリプションにアクセスできる必要があります。

デュアル サブスクリプションのこのシステムは、次の 2 つの基本サブスクリプションを作成することを意味します。

  • ベースライン WEF サブスクリプション。 すべてのホストから収集されたイベント。これらのイベントには、それらのマシンによってのみ生成されるロール固有のイベントがいくつか含まれます。
  • 対象となる WEF サブスクリプション。 通常とは異なるアクティビティやシステムに対する認識の高まりにより、限られたホスト セットから収集されたイベント。

それぞれ以下の各イベント クエリを使用します。 ターゲット サブスクリプションの場合、システムからの既存のイベントの収集を許可するには、"既存のイベントの読み取り" オプションを true に設定する必要があります。 既定では、WEF サブスクリプションは、WEF サブスクリプションがクライアントによって受信された後に生成されたイベントのみを転送します。

付録 E - 注釈付きベースライン サブスクリプション イベント クエリ付録 F - 注釈付き疑わしいサブスクリプション イベント クエリでは、WEF サブスクリプションの作成時にイベント クエリ XML が含まれます。 これらのサブスクリプションには、クエリの目的とわかりやすくするために注釈が付けられます。 個々の <Query> 要素は、クエリの残りの部分に影響を与えずに削除または編集できます。

WEF に関する一般的な質問

このセクションでは、IT 担当者や顧客からの一般的な質問について説明します。

コンピューターが WEF に対して有効になっているか、WEF でエラーが発生した場合、ユーザーは気付くでしょうか。

簡単な答えは、いいえです。

より長い答えは、 Eventlog-forwardingPlugin/Operational イベント チャネルは、デバイス上に存在する WEF サブスクリプションに関連する成功、警告、およびエラー イベントをログに記録します。 ユーザーがイベント ビューアーを開き、そのチャネルに移動しない限り、リソース消費またはグラフィカル ユーザー インターフェイスのポップアップによって WEF に気付くことはありません。 WEF サブスクリプションに問題がある場合でも、ユーザーの操作やパフォーマンスの低下はありません。 すべての成功、警告、および失敗イベントは、この操作イベント チャネルに記録されます。

WEF プッシュかプルか

WEF サブスクリプションはプッシュまたはプルするように構成できますが、両方を構成することはできません。 スケーラビリティが最も高い最も簡単で柔軟性の高い IT デプロイは、プッシュまたはソースによって開始されるサブスクリプションを使用して実現できます。 WEF クライアントは GPO を使用して構成され、組み込みの転送クライアントがアクティブ化されます。 プル、コレクターが開始された場合、WEC サーバー上のサブスクリプションは、イベントの選択元となる WEF クライアント デバイスの名前で事前に構成されています。 これらのクライアントは、サブスクリプションで使用される資格情報がリモートでイベント ログにアクセスできるように事前に構成する必要があります (通常は、 イベント ログ リーダー の組み込みローカル セキュリティ グループに資格情報を追加します)。便利なシナリオ: 特定のマシン のセットを注意深く監視します。

WEF は VPN または RAS 経由で動作しますか?

WEF は VPN、RAS、DirectAccess の各シナリオを適切に処理し、WEF コレクターへの接続が再確立されると、イベントの累積バックログを再接続して送信します。

クライアントの進行状況はどのように追跡されますか?

WEC サーバーは、各 WEF サブスクリプションの各イベント ソースのブックマーク情報と最後のハートビート時刻をレジストリに保持します。 イベント ソースが WEC サーバーに再接続すると、最後のブックマーク位置がデバイスに送信され、転送イベントを再開するための開始点として使用されます。 WEF クライアントに送信するイベントがない場合、WEF クライアントは定期的に接続してハートビートを WEC サーバーに送信して、それがアクティブであることを示します。 このハートビート値は、サブスクリプションごとに個別に構成できます。

WEF は IPv4、IPv6、または混合 IPv4/IPv6 環境で動作しますか?

はい、できます。 WEF はトランスポートに依存せず、IPv4 または IPv6 経由で動作します。

WEF イベントは暗号化されていますか? HTTP/HTTPS オプションが表示されます。

ドメイン設定では、WEF イベントの送信に使用される接続は、既定で Kerberos を使用して暗号化されます (フォールバック オプションとして NTLM を使用します。GPO を使用して無効にすることができます)。 WEF コレクターのみが接続の暗号化を解除できます。 さらに、WEF クライアントと WEC サーバー間の接続は、認証の種類 (Kerberos または NTLM) に関係なく相互に認証されます。認証で Kerberos のみを使用するように強制する GPO オプションがあります。

この認証と暗号化は、HTTP または HTTPS が選択されているかどうかに関係なく実行されます。

HTTPS オプションは、Kerberos ベースの相互認証がオプションではない場合に、証明書ベースの認証を使用する場合に使用できます。 SSL 証明書とプロビジョニングされたクライアント証明書は、相互認証を提供するために使用されます。

WEF クライアントには、イベント用の別個のバッファーがありますか?

WEF クライアント マシンのローカル イベント ログは、WEC サーバーへの接続が失われた場合の WEF のバッファーです。 "バッファー サイズ" を大きくするには、イベントが選択されている特定のイベント ログ ファイルの最大ファイル サイズを増やします。 詳細については、「 付録 C - イベント チャネル設定 (有効化およびチャネル アクセス)メソッド」を参照してください。

イベント ログによって既存のイベントが上書きされると (デバイスがイベント コレクターに接続されていない場合はデータが失われます)、イベントがクライアントから失われたという通知は WEF コレクターに送信されません。 どちらも、イベント ストリームにギャップが発生したことを示すインジケーターはありません。

転送されたイベントに使用される形式は何ですか?

WEF には、転送されたイベントの 2 つのモードがあります。 既定では、イベント ビューアーに表示されるイベントのテキスト説明を含む "Rendered Text" です。 この説明を含めることは、レンダリングされた説明のサイズに応じて、イベント サイズが実質的に 2 倍または 3 倍であることを意味します。 代替モードは "Events" ("バイナリ" 形式とも呼ばれます) です。これは、バイナリ XML 形式で送信されるイベント XML 自体です (evtx ファイルに書き込まれるように)。この形式はコンパクトで、単一の WEC サーバーが対応できるイベント ボリュームの 2 倍以上になる可能性があります。

サブスクリプション "testSubscription" は、WECUTIL ユーティリティを使用してイベント形式を使用するように構成できます。

@rem required to set the DeliveryMaxItems or DeliveryMaxLatencyTime
Wecutil ss "testSubscription" /cf:Events

WEF イベントはどのくらいの頻度で配信されますか?

イベント配信オプションは、WEF サブスクリプション構成パラメーターの一部です。組み込みのサブスクリプション配信オプションには、標準、帯域幅の最小化、待機時間の最小化の 3 つの組み込みオプションがあります。 4 つ目の catch-all "Custom" は使用できますが、イベント ビューアーを使用して WEF UI を使用して選択または構成することはできません。 [カスタム配信] オプションを選択し、WECUTIL.EXE コマンド ライン アプリケーションを使用して構成する必要があります。 すべてのサブスクリプション オプションでは、最大イベント数と最大イベント期間を定義します。どちらかの制限を超えた場合、累積イベントはイベント コレクターに送信されます。

次の表は、組み込みの配信オプションの概要を示しています。

イベント配信の最適化オプション 説明
通常 このオプションにより、イベントの信頼性の高い配信が保証され、帯域幅の節約は試行されません。 帯域幅の使用量をより厳密に制御する必要がある場合や、転送されたイベントをできるだけ早く配信する必要がない限り、適切な選択です。 プル配信モードを使用し、一度に 5 つの項目をバッチ処理し、バッチ タイムアウトを 15 分に設定します。
帯域幅を最小限に抑える このオプションを使用すると、イベント配信にネットワーク帯域幅を使用することが厳密に制御されます。 イベントを配信するために行われるネットワーク接続の頻度を制限する場合は、適切な選択です。 プッシュ配信モードを使用し、バッチ タイムアウトを 6 時間に設定します。 さらに、6 時間のハートビート間隔を使用します。
待機時間を最小限に抑える このオプションを使用すると、最小限の遅延でイベントが配信されます。 アラートまたは重要なイベントを収集する場合は、適切な選択です。 プッシュ配信モードを使用し、バッチ タイムアウトを 30 秒に設定します。

配信オプションの詳細については、「 サブスクリプションの詳細設定の構成」を参照してください。

主な違いは、クライアントからイベントが送信される待機時間です。 要件を満たす組み込みオプションがない場合は、管理者特権のコマンド プロンプトから特定のサブスクリプションのカスタム イベント配信オプションを設定できます。

@rem required to set the DeliveryMaxItems or DeliveryMaxLatencyTime
Wecutil ss "SubscriptionNameGoesHere" /cm:Custom
@rem set DeliveryMaxItems to 1 event
Wecutil ss "SubscriptionNameGoesHere" /dmi:1
@rem set DeliveryMaxLatencyTime to 10 ms
Wecutil ss "SubscriptionNameGoesHere" /dmlt:10

WEF サブスクリプションにアクセスできるデバイスを制御操作方法?

ソースによって開始されるサブスクリプションの場合: WEC サーバー上の各 WEF サブスクリプションには、そのサブスクリプションへの参加が明示的に許可されているか、明示的にアクセスが拒否されているマシン アカウントまたはマシン アカウント (ユーザー アカウントではない) を含むセキュリティ グループに対する独自の ACL があります。 この ACL は、1 つの WEF サブスクリプションにのみ適用されます (特定の WEC サーバーには複数の WEF サブスクリプションが存在する可能性があるため)、他の WEF サブスクリプションには独自の個別の ACL があります。

コレクターによって開始されたサブスクリプションの場合: サブスクリプションには、WEC サーバーがイベントを収集するマシンの一覧が含まれています。 この一覧は WEC サーバーで管理され、サブスクリプションに使用される資格情報は、WEF クライアントからイベント ログを読み取るためのアクセス権を持っている必要があります。資格情報は、マシン アカウントまたはドメイン アカウントのいずれかです。

クライアントは複数の WEF イベント コレクターと通信できますか?

はい、できます。 High-Availability 環境が必要な場合は、同じサブスクリプション構成で複数の WEC サーバーを構成し、両方の WEC サーバー URI を WEF クライアントに発行します。 WEF クライアントは、適切なアクセス権がある場合、イベントを WEC サーバー上の構成済みサブスクリプションに同時に転送します。

WEC サーバーの制限事項は何ですか?

WEC サーバーのスケーラビリティを制限する要因は 3 つあります。 コモディティ ハードウェア上の安定した WEC サーバーの一般的なルールは、構成されているすべてのサブスクリプションに対して、1 秒あたり合計 3,000 イベントを計画しています。

  • ディスク I/O。 WEC サーバーは、受信したイベントを処理または検証するのではなく、受信したイベントをバッファーし、ローカル イベント ログ ファイル (EVTX ファイル) にログに記録します。 EVTX ファイルへのログ記録速度は、ディスク書き込み速度によって制限されます。 EVTX ファイルを独自のアレイに分離するか、高速ディスクを使用すると、1 つの WEC サーバーが受信できる 1 秒あたりのイベント数が増える可能性があります。

  • ネットワーク Connections。 WEF ソースは、WEC サーバーへの永続的な永続的な接続を維持しませんが、イベントの送信後すぐに切断されることはありません。 これは、WEC サーバーに同時に接続できる WEF ソースの数が、WEC サーバーで使用可能なオープン TCP ポートに制限されることを意味します。

  • レジストリ サイズ。 WEF サブスクリプションに接続する一意のデバイスごとに、ブックマークとソースハートビート情報を格納するために作成されたレジストリ キー (WEF クライアントの FQDN に対応) があります。 非アクティブなクライアントを削除するためにこの情報が排除されない場合、この一連のレジストリ キーは、時間の経過とともに管理できないサイズに拡大する可能性があります。

    • サブスクリプションに >1,000 個の WEF ソースが運用有効期間 (有効期間 WEF ソースとも呼ばれます) にわたって接続されている場合、イベント ビューアー左側のナビゲーションで [サブスクリプション] ノードを選択すると数分間応答しなくなる可能性がありますが、その後は正常に機能します。
    • 50,000 の有効期間の WEF ソースでは>、イベント ビューアーはオプションではなくなり、サブスクリプションの構成と管理に wecutil.exe (Windows に含まれる) を使用する必要があります。
    • 100,000 の有効期間の WEF ソースでは >、レジストリは読み取り可能でなくなり、WEC サーバーを再構築する必要があります。

サブスクリプション情報

以下に、各サブスクリプションが収集するすべての項目の一覧を示します。実際のサブスクリプション XML は付録で入手できます。 これらの項目は、[基準計画] と [対象] に分けられます。 目的は、すべてのホストをベースラインにサブスクライブし、必要に応じてターゲット サブスクリプションにホストを登録 (および削除) することです。

ベースライン サブスクリプション

このサブスクリプションは最大のサブスクリプションのようですが、実際にはデバイスごとに最も低いボリュームです。 (例外は、通常とは異なるデバイスで許可する必要があります。複雑な開発者関連タスクを実行するデバイスは、異常に大量のプロセス作成と AppLocker イベントを作成することが期待できます)。このサブスクリプションでは、イベント チャネルを有効にしたり、チャネルのアクセス許可を変更したりするために、クライアント デバイスで特別な構成を行う必要はありません。

サブスクリプションは、基本的にイベント ログに適用されるクエリ ステートメントのコレクションです。 このサブスクリプションは、本質的にモジュール形式であり、サブスクリプション内の他のクエリ ステートメントに影響を与えることなく、特定のクエリ ステートメントを削除または変更できることを意味します。 さらに、特定のイベントを除外するステートメントを抑制し、そのクエリ ステートメント内でのみ適用され、サブスクリプション全体には適用されません。

ベースライン サブスクリプションの要件

ベースライン サブスクリプションから最大限の価値を得るために、クライアントがシステムから転送するために必要なイベントを既に生成していることを確認するために、デバイスに次の要件を設定することをお勧めします。

  • 推奨される最小監査ポリシーのスーパーセットであるセキュリティ監査ポリシーを適用します。 詳細については、「 付録 A - 最小推奨最小監査ポリシー」を参照してください。 このポリシーにより、セキュリティ イベント ログで必要なイベントが生成されます。

  • デバイスに少なくとも Audit-Only AppLocker ポリシーを適用します。

    • AppLocker を使用してイベントを既に許可または制限している場合は、この要件が満たされます。
    • AppLocker イベントには、ファイル ハッシュや実行可能ファイルやスクリプトのデジタル署名情報などの有用な情報が含まれています。
  • 無効なイベント チャネルを有効にし、モダン イベント ファイルの最小サイズを設定します。

  • 現時点では、モダン イベント ファイルの最大サイズを有効または設定するための GPO テンプレートはありません。 このしきい値は、GPO を使用して定義する必要があります。 詳細については、「 付録 C - イベント チャネル設定 (有効化およびチャネル アクセス)メソッド」を参照してください。

注釈付きイベント クエリは、次の場所にあります。 詳細については、「 付録 F - 注釈付き疑わしいサブスクリプション イベント クエリ」を参照してください。

  • Microsoft AntimalwareまたはWindows Defenderからのマルウェア対策イベント。 これらのイベントは、Windows イベント ログに書き込む場合、任意のマルウェア対策製品に対して簡単に構成できます。

  • セキュリティ イベント ログ プロセス イベントの作成。

  • AppLocker プロセス イベント (EXE、スクリプト、パッケージ化されたアプリのインストールと実行) を作成します。

  • レジストリ変更イベント。 詳細については、「 付録 B - レジストリ システム ACL ポリシーの最小推奨」を参照してください。

  • OS の起動とシャットダウン

    • スタートアップ イベントには、オペレーティング システムのバージョン、Service Pack レベル、QFE バージョン、ブート モードが含まれます。
  • サービスのインストール

    • サービスの名前、イメージ パス、およびサービスをインストールしたユーザーが含まれます。
  • 証明機関の監査イベント

    • これらのイベントは、証明機関の役割がインストールされているシステムでのみ適用されます。
    • 証明書の要求と応答をログに記録します。
  • ユーザー プロファイル イベント

    • 一時的なプロファイルを使用するか、ユーザー プロファイルを作成できない場合は、侵入者がデバイスに対話形式でログインしているが、永続的なプロファイルを残したくないことを示している可能性があります。
  • サービスの開始エラー

    • エラー コードはローカライズされているため、メッセージ DLL の値をチェックする必要があります。
  • ネットワーク共有アクセス イベント

    • IPC$ ファイル共有と /NetLogon ファイル共有をフィルター処理します。これは予想され、ノイズが多いファイル共有です。
  • システムシャットダウン開始要求

    • デバイスの再起動を開始した内容を確認します。
  • ユーザーが開始した対話型のサインアウト イベント

  • リモート デスクトップ サービス セッションは、接続、再接続、または切断します。

  • EMET イベント (EMET がインストールされている場合)。

  • イベント転送プラグイン イベント

    • 部分成功イベントなどの WEF サブスクリプション操作を監視する場合。 このイベントは、デプロイの問題を診断するのに役立ちます。
  • ネットワーク共有の作成と削除

    • 未承認の共有作成の検出を有効にします。

      すべての共有は、デバイスの起動時に再作成されます。

  • サインイン セッション

    • 対話型のサインイン成功 (ローカルおよびリモート対話型/リモート デスクトップ)
    • LocalSystem、LocalNetwork などの非組み込みアカウントのサービスのサインイン成功。
    • バッチ セッションのサインイン成功
    • サインイン セッションを閉じます。これは、ネットワーク以外のセッションのサインアウト イベントです。
  • Windows エラー報告 (アプリケーション クラッシュ イベントのみ)

    • このセッションは、標的型マルウェアを使用してエンタープライズ環境に精通していない侵入者の早期兆候を検出するのに役立ちます。
  • イベント ログ サービス イベント

    • Windows イベント ログ サービスのエラー、開始イベント、および停止イベント。
  • イベント ログがクリアされました (セキュリティ イベント ログを含む)

    • このイベントは、トラックをカバーしている侵入者を示している可能性があります。
  • 新しいサインインに割り当てられた特別な特権

    • この割り当ては、サインイン時に、ユーザーが管理者であるか、自分で管理者になるのに十分なアクセス権を持っていることを示します。
  • 送信リモート デスクトップ サービス セッションの試行

    • 侵入者の潜在的なビーチヘッドの可視性
  • システム時間の変更

  • SMB クライアント (マップされたドライブ接続)

  • アカウント資格情報の検証

    • ドメイン コントローラー上のローカル アカウントまたはドメイン アカウント
  • ユーザーがローカルの Administrators セキュリティ グループに追加または削除されました。

  • アクセスされた Crypto API 秘密キー

    • ローカルに格納された秘密キーを使用して署名オブジェクトに関連付けられます。
  • タスク スケジューラ タスクの作成と削除

    • タスク スケジューラを使用すると、侵入者は指定した時刻に LocalSystem としてコードを実行できます。
  • 明示的な資格情報を使用したサインイン

    • 侵入者による資格情報の使用変更を検出して、より多くのリソースにアクセスします。
  • Smartcard カード所有者検証イベント

    • このイベントは、スマートカードがいつ使用されているかを検出します。

疑わしいサブスクリプション

このサブスクリプションでは、侵入者に関連する可能性のあるアクティビティが追加され、アナリストはデバイスの状態に関する判断をさらに改善するのに役立ちます。

  • ネットワーク セッションのサインイン セッションの作成

    • ネットワーク グラフの時系列分析を有効にします。
  • RADIUS イベントと VPN イベント

    • Microsoft IAS RADIUS/VPN 実装を使用する場合に便利です。 エンタープライズに接続するリモート IP アドレスを使用したユーザー> IP アドレスの割り当てが表示されます。
  • Crypto API X509 オブジェクトとビルド チェーン イベント

    • 既知の無効な証明書、CA、またはサブ CA を検出します
    • CAPI の異常なプロセス使用を検出します
  • ローカル サインインに割り当てられたグループ

    • アカウント全体のアクセスを有効にするグループを表示します
    • 修復作業の計画を改善できます
    • 既知の組み込みシステム アカウントを除外します。
  • サインイン セッションの終了

    • ネットワーク サインイン セッションに固有です。
  • クライアント DNS 参照イベント

    • DNS クエリを実行したプロセスと、DNS サーバーから返された結果を返します。
  • プロセスの終了

    • 予期せず終了するプロセスのチェックを有効にします。
  • ローカル資格情報の検証または明示的な資格情報を使用したサインイン

    • 認証されるアカウント資格情報に対してローカル SAM が権限を持つ場合に生成されます。
    • ドメイン コントローラーでノイズが多い
    • クライアント デバイスでは、ローカル アカウントがサインインしたときにのみ生成されます。
  • レジストリ変更監査イベント

    • レジストリ値が作成、変更、または削除されている場合にのみ。
  • ワイヤレス 802.1x 認証

    • ピア MAC アドレスを使用してワイヤレス接続を検出する
  • Windows PowerShell ログ記録

    • Windows PowerShell 2.0 以降について説明し、Windows PowerShellを使用したメモリ内攻撃のWindows PowerShell 5.0 ログ記録の機能強化が含まれています。
    • リモート処理ログWindows PowerShell含む
  • ユーザー モード ドライバー フレームワーク "ドライバーの読み込み" イベント

    • 複数のデバイス ドライバーを読み込む USB デバイスを検出できる可能性があります。 たとえば、キーボードまたはネットワーク ドライバーを読み込むUSB_STOR デバイスなどです。

組織の監査ポリシーにより、そのニーズを満たす監査が増える場合は、問題ありません。 以下のポリシーは、ベースラインサブスクリプションとターゲットサブスクリプションの両方によって収集されるイベントを有効にするために必要な最小監査ポリシー設定です。

カテゴリ サブカテゴリ 監査設定
アカウント ログオン 資格情報の検証 成功と失敗
アカウント管理 セキュリティ グループの管理 成功
アカウント管理 ユーザー アカウントの管理 成功と失敗
アカウント管理 コンピューター アカウント管理 成功と失敗
アカウント管理 その他のアカウント管理イベント 成功と失敗
詳細な追跡 プロセスの作成 成功
詳細な追跡 プロセス終了 成功
ログオン/ログオフ ユーザー/デバイス要求 未構成
ログオン/ログオフ IPsec 拡張モード 未構成
ログオン/ログオフ IPsec クイック モード 未構成
ログオン/ログオフ ログオン 成功と失敗
ログオン/ログオフ ユーザー インターフェイスで [ログオフ] 成功
ログオン/ログオフ その他のログオン/ログオフ イベント 成功と失敗
ログオン/ログオフ 特別なログオン 成功と失敗
ログオン/ログオフ アカウント ロックアウト 成功
オブジェクト アクセス 生成されたアプリケーション 未構成
オブジェクト アクセス ファイル共有 成功
オブジェクト アクセス ファイル システム 未構成
オブジェクト アクセス その他のオブジェクト アクセス イベント 未構成
オブジェクト アクセス レジストリ 未構成
オブジェクト アクセス リムーバブル記憶域 成功
ポリシーの変更 監査ポリシーの変更 成功と失敗
ポリシーの変更 MPSSVC Rule-Level ポリシーの変更 成功と失敗
ポリシーの変更 その他のポリシー変更イベント 成功と失敗
ポリシーの変更 認証ポリシーの変更 成功と失敗
ポリシーの変更 承認ポリシーの変更 成功と失敗
特権の使用 機密性の高い特権の使用 未構成
System セキュリティ状態の変更 成功と失敗
System セキュリティ システム拡張機能 成功と失敗
System システムの整合性 成功と失敗

Run キーと RunOnce キーは、侵入者やマルウェアの永続化に役立ちます。 これにより、ユーザーがシステムにサインインするときに、コードを実行 (または 1 回だけ実行してから削除) できます。

この影響は、レジストリ内の他の自動実行スタート ポイント キーに簡単に拡張できます。

次の図を使用して、これらのレジストリ キーを構成する方法を確認します。

実行キーの既定の acl。

runonce キーの既定の acl。

付録 C - イベント チャネル設定 (有効化とチャネル アクセス) メソッド

一部のチャネルは既定で無効になっており、有効にする必要があります。 Microsoft-Windows-CAPI2/Operational などのその他のユーザーは、イベント ログ リーダーの組み込みセキュリティ グループから読み取ることができるようにチャネル アクセスを変更する必要があります。

このカスタマイズを行うための推奨および最も効果的な方法は、スケジュールされたタスクを実行するようにベースライン GPO を構成してイベント チャネルを構成することです (有効化、最大サイズの設定、チャネル アクセスの調整)。 この構成は、次の GPO 更新サイクルで有効になり、クライアント デバイスへの影響は最小限に抑えられます。

次の GPO スニペットは、次のタスクを実行します。

  • Microsoft-Windows-Capi2/Operational イベント チャネルを有効にします。
  • Microsoft-Windows-Capi2/Operational の最大ファイル サイズを 100 MB に設定します。
  • Microsoft-Windows-AppLocker/EXE と DLL の最大ファイル サイズを 100 MB に設定します。
  • 組み込みのイベント ログ リーダー セキュリティ グループを含むように 、Microsoft-Windows-Capi2/Operational の最大チャネル アクセスを設定します。
  • Microsoft-Windows-DriverFrameworks-UserMode/Operational イベント チャネルを有効にします。
  • Microsoft-Windows-DriverFrameworks-UserMode/Operational の最大ファイル サイズを 50 MB に設定します。

イベント チャネルを構成します。

次の表には、GPO で構成する 6 つのアクションも含まれています。

プログラム/スクリプト Arguments
%SystemRoot%\System32\wevtutil.exe sl Microsoft-Windows-CAPI2/Operational /e:true
%SystemRoot%\System32\wevtutil.exe sl Microsoft-Windows-CAPI2/Operational /ms:102432768
%SystemRoot%\System32\wevtutil.exe sl "Microsoft-Windows-AppLocker/EXE and DLL" /ms:102432768
%SystemRoot%\System32\wevtutil.exe sl Microsoft-Windows-CAPI2/Operational /ca:"O:BAG:SYD:(A;;0x7;;;BA)(A;;0x2;;;AU)(A;;0x1;;;S-1-5-32-573)"
%SystemRoot%\System32\wevtutil.exe sl "Microsoft-Windows-DriverFrameworks-UserMode/Operational" /e:true
%SystemRoot%\System32\wevtutil.exe sl "Microsoft-Windows-DriverFrameworks-UserMode/Operational" /ms:52432896

付録 D - WEF クライアント構成の最小 GPO

WEF が動作するための最小手順を次に示します。

  1. コレクター URI を構成します。
  2. WinRM サービスを開始します。
  3. 組み込みのイベント ログ リーダー セキュリティ グループに Network Service アカウントを追加します。 この追加により、セキュリティ イベント チャネルなどのセキュリティで保護されたイベント チャネルからの読み取りが可能になります。

wef クライアントを構成します。

付録 E - 注釈付きベースライン サブスクリプション イベント クエリ

<QueryList>
  <Query Id="0" Path="System">
    <!-- Anti-malware *old* events, but only detect events (cuts down noise) -->
    <Select Path="System">*[System[Provider[@Name='Microsoft Antimalware'] and (EventID &gt;= 1116 and EventID &lt;= 1119)]]</Select>
  </Query>
  <!-- AppLocker EXE events or Script events -->
  <Query Id="1" Path="Microsoft-Windows-AppLocker/EXE and DLL">
    <Select Path="Microsoft-Windows-AppLocker/EXE and DLL">*[UserData[RuleAndFileData[PolicyName="EXE"]]]</Select>
    <Select Path="Microsoft-Windows-AppLocker/MSI and Script">*</Select>
  </Query>
  <Query Id="2" Path="Security">
    <!-- Wireless Lan 802.1x authentication events with Peer MAC address -->
    <Select Path="Security">*[System[(EventID=5632)]]</Select>
  </Query>
  <Query Id="3" Path="Microsoft-Windows-TaskScheduler/Operational">
    <!-- Task scheduler Task Registered (106),  Task Registration Deleted (141), Task Deleted (142) -->
    <Select Path="Microsoft-Windows-TaskScheduler/Operational">*[System[Provider[@Name='Microsoft-Windows-TaskScheduler'] and (EventID=106 or EventID=141 or EventID=142 )]]</Select>
    <Select Path="System">*[System[Provider[@Name='Microsoft-Windows-TaskScheduler'] and (EventID=106 or EventID=141 or EventID=142 )]]</Select>
  </Query>
  <Query Id="4" Path="System">
    <!-- System startup (12 - includes OS/SP/Version) and shutdown -->
    <Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (EventID=12 or EventID=13)]]</Select>
  </Query>
  <Query Id="5" Path="System">
    <!-- Service Install (7000), service start failure (7045), new service (4697) -->
    <Select Path="System">*[System[Provider[@Name='Service Control Manager'] and (EventID = 7000 or EventID=7045)]]</Select>
<Select Path="Security">*[System[(EventID=4697)]]</Select>
  </Query>
  <Query Id="6" Path="Security">
    <!-- TS Session reconnect (4778), TS Session disconnect (4779) -->
    <Select Path="Security">*[System[(EventID=4778 or EventID=4779)]]</Select>
  </Query>
  <Query Id="7" Path="Security">
    <!-- Network share object access without IPC$ and Netlogon shares -->
    <Select Path="Security">*[System[(EventID=5140)]] and (*[EventData[Data[@Name="ShareName"]!="\\*\IPC$"]]) and (*[EventData[Data[@Name="ShareName"]!="\\*\NetLogon"]])</Select>
  </Query>
  <Query Id="8" Path="Security">
    <!-- System Time Change (4616)  -->
    <Select Path="Security">*[System[(EventID=4616)]]</Select>
  </Query>
  <Query Id="9" Path="System">
    <!-- Shutdown initiate requests, with user, process and reason (if supplied) -->
    <Select Path="System">*[System[Provider[@Name='USER32'] and (EventID=1074)]]</Select>
  </Query>
  <!-- AppLocker packaged (Modern UI) app execution -->
  <Query Id="10" Path="Microsoft-Windows-AppLocker/Packaged app-Execution">
    <Select Path="Microsoft-Windows-AppLocker/Packaged app-Execution">*</Select>
  </Query>
  <!-- AppLocker packaged (Modern UI) app installation -->
  <Query Id="11" Path="Microsoft-Windows-AppLocker/Packaged app-Deployment">
    <Select Path="Microsoft-Windows-AppLocker/Packaged app-Deployment">*</Select>
  </Query>
  <Query Id="12" Path="Application">
    <!-- EMET events -->
    <Select Path="Application">*[System[Provider[@Name='EMET']]]</Select>
  </Query>
  <Query Id="13" Path="System">
    <!-- Event log service events -->
    <Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Eventlog']]]</Select>
  </Query>
  <Query Id="14" Path="Security">
    <!-- Local logons without network or service events -->
    <Select Path="Security">*[System[(EventID=4624)]] and (*[EventData[Data[@Name="LogonType"]!="3"]]) and (*[EventData[Data[@Name="LogonType"]!="5"]])</Select>
  </Query>
  <Query Id="15" Path="Application">
    <!-- WER events for application crashes only -->
    <Select Path="Application">*[System[Provider[@Name='Windows Error Reporting']]] and (*[EventData[Data[3] ="APPCRASH"]])</Select>
  </Query>
  <Query Id="16" Path="Security">
    <!-- Security Log cleared events (1102), EventLog Service shutdown (1100)-->
    <Select Path="Security">*[System[(EventID=1102 or EventID = 1100)]]</Select>
  </Query>
  <Query Id="17" Path="System">
    <!-- Other Log cleared events (104)-->
    <Select Path="System">*[System[(EventID=104)]]</Select>
  </Query>
  <Query Id="18" Path="Security">
    <!--  user initiated logoff -->
    <Select Path="Security">*[System[(EventID=4647)]]</Select>
  </Query>
  <Query Id="19" Path="Security">
    <!-- user logoff for all non-network logon sessions-->
    <Select Path="Security">*[System[(EventID=4634)]] and (*[EventData[Data[@Name="LogonType"] != "3"]])</Select>
  </Query>
  <Query Id="20" Path="Security">
    <!-- Service logon events if the user account isn't LocalSystem, NetworkService, LocalService -->
    <Select Path="Security">*[System[(EventID=4624)]] and (*[EventData[Data[@Name="LogonType"]="5"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-18"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-19"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-20"]])</Select>
  </Query>
  <Query Id="21" Path="Security">
    <!-- Network Share create (5142), Network Share Delete (5144)  -->
    <Select Path="Security">*[System[(EventID=5142 or EventID=5144)]]</Select>
  </Query>
  <Query Id="22" Path="Security">
    <!-- Process Create (4688) -->
    <Select Path="Security">*[System[EventID=4688]]</Select>
  </Query>
  <Query Id="23" Path="Security">
    <!-- Event log service events specific to Security channel -->
    <Select Path="Security">*[System[Provider[@Name='Microsoft-Windows-Eventlog']]]</Select>
  </Query>
  <Query Id="26" Path="Security">
    <!-- Special Privileges (Admin-equivalent Access) assigned to new logon, excluding LocalSystem-->
    <Select Path="Security">*[System[(EventID=4672)]]</Select>
    <Suppress Path="Security">*[EventData[Data[1]="S-1-5-18"]]</Suppress>
  </Query>
  <Query Id="27" Path="Security">
    <!-- New user added to local security group-->
    <Select Path="Security">*[System[(EventID=4732)]]</Select>
  </Query>
  <Query Id="28" Path="Security">
    <!-- New user added to global security group-->
    <Select Path="Security">*[System[(EventID=4728)]]</Select>
  </Query>
  <Query Id="29" Path="Security">
    <!-- New user added to universal security group-->
    <Select Path="Security">*[System[(EventID=4756)]]</Select>
  </Query>
  <Query Id="30" Path="Security">
    <!-- User removed from local Administrators group-->
    <Select Path="Security">*[System[(EventID=4733)]] and (*[EventData[Data[@Name="TargetUserName"]="Administrators"]])</Select>
  </Query>
  <Query Id="31" Path="Microsoft-Windows-TerminalServices-RDPClient/Operational">
    <!-- Log attempted TS connect to remote server -->
    <Select Path="Microsoft-Windows-TerminalServices-RDPClient/Operational">*[System[(EventID=1024)]]</Select>
  </Query>
  <Query Id="32" Path="Security">
    <!-- Certificate Services received certificate request (4886), Approved and Certificate issued (4887), Denied request (4888) -->
    <Select Path="Security">*[System[(EventID=4886 or EventID=4887 or EventID=4888)]]</Select>
  </Query>
  <Query Id="34" Path="Security">
    <!-- New User Account Created(4720), User Account Enabled (4722), User Account Disabled (4725), User Account Deleted (4726) -->
    <Select Path="Security">*[System[(EventID=4720 or EventID=4722 or EventID=4725 or EventID=4726)]]</Select>
  </Query>
  <Query Id="35" Path="Microsoft-Windows-SmartCard-Audit/Authentication">
    <!-- Gets all Smart-card Card-Holder Verification (CHV) events (success and failure) performed on the host. -->
    <Select Path="Microsoft-Windows-SmartCard-Audit/Authentication">*</Select>
  </Query>
  <Query Id="36" Path="Microsoft-Windows-SMBClient/Operational">
    <!-- get all UNC/mapped drive successful connection -->
    <Select Path="Microsoft-Windows-SMBClient/Operational">*[System[(EventID=30622 or EventID=30624)]]</Select>
  </Query>
  <Query Id="37" Path="Application">
    <!-- User logging on with Temporary profile (1511), cannot create profile, using temporary profile (1518)-->
    <Select Path="Application">*[System[Provider[@Name='Microsoft-Windows-User Profiles Service'] and (EventID=1511 or EventID=1518)]]</Select>
  </Query>
  <Query Id="39" Path="Microsoft-Windows-Sysmon/Operational">
    <!-- Modern SysMon event provider-->
    <Select Path="Microsoft-Windows-Sysmon/Operational">*</Select>
  </Query>
  <Query Id="40" Path="Application">
    <!-- Application crash/hang events, similar to WER/1001. These include full path to faulting EXE/Module.-->
    <Select Path="Application">*[System[Provider[@Name='Application Error'] and (EventID=1000)]]</Select>
    <Select Path="Application">*[System[Provider[@Name='Application Hang'] and (EventID=1002)]]</Select>
  </Query>
  <Query Id="41" Path="Microsoft-Windows-Windows Defender/Operational">
    <!-- Modern Windows Defender event provider Detection events (1006-1009) and (1116-1119) -->
    <Select Path="Microsoft-Windows-Windows Defender/Operational">*[System[( (EventID &gt;= 1006 and EventID &lt;= 1009) )]]</Select>
    <Select Path="Microsoft-Windows-Windows Defender/Operational">*[System[( (EventID &gt;= 1116 and EventID &lt;= 1119) )]]</Select>
  </Query>
  <Query Id="42" Path="Security">
    <!-- An account Failed to Log on events -->
    <Select Path="Security">*[System[(EventID=4625)]] and (*[EventData[Data[@Name="LogonType"]!="2"]]) </Select>
  </Query>

</QueryList>

付録 F - 注釈付き疑わしいサブスクリプション イベント クエリ

<QueryList>
  <Query Id="0" Path="Security">
    <!-- Network logon events-->
    <Select Path="Security">*[System[(EventID=4624)]] and (*[EventData[Data[@Name="LogonType"]="3"]])</Select>
  </Query>
  <Query Id="1" Path="System">
    <!-- RADIUS authentication events User Assigned IP address (20274), User successfully authenticated (20250), User Disconnected (20275)  -->
    <Select Path="System">*[System[Provider[@Name='RemoteAccess'] and (EventID=20274 or EventID=20250 or EventID=20275)]]</Select>
  </Query>
  <Query Id="2" Path="Microsoft-Windows-CAPI2/Operational">
    <!-- CAPI events Build Chain (11), Private Key accessed (70), X509 object (90)-->
    <Select Path="Microsoft-Windows-CAPI2/Operational">*[System[(EventID=11 or EventID=70 or EventID=90)]]</Select>
  </Query>
  <Query Id="3" Path="Security">
    <!-- CA stop/Start events CA Service Stopped (4880), CA Service Started (4881), CA DB row(s) deleted (4896), CA Template loaded (4898) -->
    <Select Path="Security">*[System[(EventID=4880 or EventID = 4881 or EventID = 4896 or EventID = 4898)]]</Select>
  </Query>
  <Query Id="4" Path="Microsoft-Windows-LSA/Operational">
    <!-- Groups assigned to new login (except for well known, built-in accounts)-->
    <Select Path="Microsoft-Windows-LSA/Operational">*[System[(EventID=300)]] and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-20"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-18"]]) and (*[EventData[Data[@Name="TargetUserSid"] != "S-1-5-19"]])</Select>
  </Query>
  <Query Id="5" Path="Security">
    <!-- Logoff events - for Network Logon events-->
    <Select Path="Security">*[System[(EventID=4634)]] and (*[EventData[Data[@Name="LogonType"] = "3"]])</Select>
  </Query>
  <Query Id="6" Path="Security">
    <!-- RRAS events - only generated on Microsoft IAS server -->
    <Select Path="Security">*[System[( (EventID &gt;= 6272 and EventID &lt;= 6280) )]]</Select>
  </Query>
  <Query Id="7" Path="Microsoft-Windows-DNS-Client/Operational">
    <!-- DNS Client events Query Completed (3008) -->
    <Select Path="Microsoft-Windows-DNS-Client/Operational">*[System[(EventID=3008)]]</Select>
<!-- suppresses local machine name resolution events -->
<Suppress Path="Microsoft-Windows-DNS-Client/Operational">*[EventData[Data[@Name="QueryOptions"]="140737488355328"]]</Suppress>
<!-- suppresses empty name resolution events -->
<Suppress Path="Microsoft-Windows-DNS-Client/Operational">*[EventData[Data[@Name="QueryResults"]=""]]</Suppress>
  </Query>
  <Query Id="8" Path="Security">
    <!-- Process Terminate (4689) -->
    <Select Path="Security">*[System[(EventID = 4689)]]</Select>
  </Query>
  <Query Id="9" Path="Security">
    <!-- Local credential authentication events (4776), Logon with explicit credentials (4648) -->
    <Select Path="Security">*[System[(EventID=4776 or EventID=4648)]]</Select>
  </Query>
  <Query Id="10" Path="Security">
    <!-- Registry modified events for Operations: New Registry Value created (%%1904), Existing Registry Value modified (%%1905), Registry Value Deleted (%%1906) -->
    <Select Path="Security">*[System[(EventID=4657)]] and ((*[EventData[Data[@Name="OperationType"] = "%%1904"]]) or (*[EventData[Data[@Name="OperationType"] = "%%1905"]]) or (*[EventData[Data[@Name="OperationType"] = "%%1906"]]))</Select>
  </Query>
  <Query Id="11" Path="Security">
    <!-- Request made to authenticate to Wireless network (including Peer MAC (5632) -->
    <Select Path="Security">*[System[(EventID=5632)]]</Select>
  </Query>
  <Query Id="12" Path="Microsoft-Windows-PowerShell/Operational">
    <!-- PowerShell execute block activity (4103), Remote Command(4104), Start Command(4105), Stop Command(4106) -->
    <Select Path="Microsoft-Windows-PowerShell/Operational">*[System[(EventID=4103 or EventID=4104 or EventID=4105 or EventID=4106)]]</Select>
  </Query>
  <Query Id="13" Path="Microsoft-Windows-DriverFrameworks-UserMode/Operational">
    <!-- Detect User-Mode drivers loaded - for potential BadUSB detection. -->
    <Select Path="Microsoft-Windows-DriverFrameworks-UserMode/Operational">*[System[(EventID=2004)]]</Select>
  </Query>
<Query Id="14" Path="Windows PowerShell">
    <!-- Legacy PowerShell pipeline execution details (800) -->
    <Select Path="Windows PowerShell">*[System[(EventID=800)]]</Select>
  </Query>
</QueryList>

付録 G - オンライン リソース

詳細については、次のリンクを参照してください。