コリレーション(相関)の概要
コリレーションとは?
コリレーション(相関分析)とは、1つまたは複数のデバイス間で発生する、関連性のある一連の複数のイベントを特定し、単一のインシデントとして特定するプロセスです。相関分析が非常に有用な主な理由は、多くの場合、個々のイベントは単独では疑わしいとは思えないかもしれませんが、他のイベントと関連付けて分析することで、潜在的なセキュリティインシデントを示唆する全体像が浮かび上がるからです。
例えば、「従業員がデバイスAにログオンする」と「従業員がデバイスBにログオンする」という2つのイベントは正常な動きと思われます。
ただし、「ほぼ同じ時間に、同じ従業員が、異なるデバイス(デバイスAとデバイスB)にログオンしている」は、アカウント共有インシデントの可能性を示している場合があります。
コリレーションルールとは?
コリレーションルールとは、複数のログを関連付けてセキュリティインシデントを識別するために使用するパターンまたはテンプレートです。ルールでは、より大きなインシデントを構成する一連のイベント、イベント間の時間間隔、および特定の条件(必要な場合)を指定します。以下に、コリレーションルールで指定できるさまざまなパラメーターを示します。
- コリレーションルール:コリレーションルールは、ネットワークアクションの順序付けられたシーケンスです。
- アクション:アクションは、特定のイベントです。ユーザー名、デバイス名などの一意の値を持つフィールドが含まれています。
- アクション間の時間間隔:各アクションは、指定された時間間隔内で前のアクションに続く必要があります。
- アクションのしきい値(オプション):特定のルールが成立するためには、単一のアクションが連続して複数回発生する必要がある場合があります。しきい値は、指定された時間間隔内で観察する必要がある繰り返しの最小数を指定できます。
- アクションのフィルター(オプション):フィルターを使用して、各アクション内のフィールドに条件を適用すことができます。
これらのパラメーターを使用してコリレーションルールを設定する方法は、カスタムコリレーションルールの作成を参照してください。
例:
コリレーションルール:ブルートフォース
ブルートフォース攻撃は、攻撃者がネットワーク内のデバイスへのアクセスを試み、複数のログイン認証情報を試して、最終的に成功するまで試行する攻撃です。デバイスへのログインが複数回失敗し、その後に1回成功するという特徴があります。
一般的なパターン:ログオン失敗 → ログオン失敗 → ログオン失敗 → (...) → ログオンの成功(すべて数分以内に、同じデバイスに対して発生)
具体的なパターン:2分以内に1つのデバイスへのログオンに少なくとも10回失敗 → (次の1分以内に) → 同じデバイスへのログオンに成功
ルールは以下のように設定できます。
アクション1:ログオン失敗(従業員がネットワークデバイスへのログオンに失敗します。)
- しきい値:アクションが2分以内に少なくとも10回発生する必要がある。
- フィルター:アクション1のすべてのイベントにおいて、デバイス名が同じである必要がある。
アクション1とアクション2の間の間隔:1分
アクション2:ログオン成功(従業員がネットワークデバイスへログオンします。)
- しきい値:なし
- フィルター:デバイス名は、アクション1のデバイス名と同じである必要がある。
コリレーションルールとアラートプロファイルの比較
- コリレーションルールは、1つ以上のデバイスで発生する1つ以上のイベントを指定します。アラートプロファイルは、単一のデバイスタイプから単一のイベントのみを指定できます。
- コリレーションルールは、アラートプロファイルよりも強力なシナリオを定義できます。コリレーションルールには複数のイベントを含めることができるため、イベントの順序、イベント間の間隔を指定し、さまざまな条件を利用できます。
- しきい値の制限は、コリレーションルールとアラートプロファイルの両方で指定できます。ただし、コリレーションルールは特定のフィールドの値がアクションのすべての繰り返しを通して同じであることを確認できますが、アラートプロファイルはできません。
コリレーションのベストプラクティス
- コリレーションはメモリを大量に使用するプロセスです。コリレーションエンジンを有効にする場合は、最も重要なビジネスユースケースに対してのみルールを有効化/作成してください。
- 新しいルールを作成する前に、代わりに同じルールをアラートプロファイルとして作成できないか確認してください。以下のチェックリストのすべての項目に対する答えが「はい」の場合、コリレーションルールではなくアラートプロファイルとしてユースケースを設定してください。
- ユースケースは1つのアクションのみで構成される。
- ユースケースを適用できるデバイスのみを指定する必要があり、他のフィールド(ユーザー名など)の特定の値を確認する必要がない。
- アクションのしきい値を指定する場合、どのフィールド(ユーザー名、デバイス名など)でも定数フィールド値を確認する必要がない。
- コリレーションルールのロジックを定期的に確認してください。ルールで誤検知が多すぎる場合、ルールパラメーターを調整して誤検知を減らすことができます。
いくつかの例
コリレーションルール:過度のアプリケーションクラッシュ(Windows)
デバイス上で短期間にアプリケーションクラッシュが連続して発生した場合、デバイスに障害が発生している可能性があります。また、このチェックは「Device-1234」という特定のデバイスには適用しないでください。このデバイスはアプリケーションのクラッシュテストに使用されており、誤検知が多すぎる可能性があります。
一般的なアクションフロー:アプリケーションのクラッシュ → アプリケーションのクラッシュ → (...) → アプリケーションのクラッシュ(すべて単一デバイスで数時間以内に発生、Device-1234には適用されない)
具体的なアクションフロー:180分以内に1つのデバイスで少なくとも5回のアプリケーションクラッシュが発生する(Device-1234を除く)
ルールは以下のように設定できます。
アクション1:アプリケーションのクラッシュ(Windowsデバイスでアプリケーションがクラッシュします。)
- しきい値:アクションが180分以内に少なくとも5回発生する必要がある。
- フィルター:
- アクション1のすべてのイベントにおいて、デバイス名が同じである必要がある。
- デバイス名が「Device-1234」以外である必要がある。
コリレーションルール:ランサムウェアアクティビティの可能性(Windows)
ランサムウェア攻撃は通常、新たに開始されたプロセスがネットワークデバイス上の複数のファイルを変更(暗号化)することから始まります。プロセスが開始され、すぐに複数のファイルが変更されることで、ランサムウェア攻撃を特定できます。
一般的なアクションフロー:プロセス開始 → ファイル変更 → ファイル変更 → (...) → ファイルの変更(すべて同じデバイス上で数分以内に発生)
具体的なアクションフロー:プロセス開始 → (次の5分以内に) → 同じプロセス、同じデバイスで少なくとも15件のファイル変更
ルールは以下のように設定できます。
アクション1:Windowsプロセスの開始(Windowsでプロセスが開始されます。)
- しきい値:なし
- フィルター:なし
アクション1とアクション2の間の間隔:5分
アクション2:ファイルの変更(Windowsデバイスでファイルが変更されます。)
- しきい値:アクションが30分以内に15回発生する必要がある。
- フィルター:
- デバイス名がアクション2のすべてのイベントで同じである必要がある。
- プロセス名がアクション2のすべてのイベントで同じである必要がある。
- デバイス名がアクション1のデバイス名と同じである必要がある。
- プロセス名がアクション1のプロセス名と同じである必要がある。