アラート:ステップ2:ルール ステートメントのビルド

Document created by RSA Information Design and Development on Feb 15, 2017
Version 1Show Document
  • View in full screen mode
  

 

このトピックでは、ルール ビルダーでステートメントを追加して、ルールの基準を定義する方法について説明します。ルール ビルダーのステートメントは、ルールの基準を論理的なグループにまとめたものです。ステートメントを追加して、ルールの検出対象を定義することができます。 

次の図は、ルール ビルダーのステートメントの例を示しています。

すべてのステーメントには、キーと値が含まれています。次に、オプションを選択してメタキーと値のペアに対してロジックを作成します。
BldStmnt_Red.png

前提条件

ルール ステートメントを作成するには、メタ キーとメタ値を理解する必要があります。
すべてのメタ キーのリストについては、[アラート]>[構成]>[設定]>[メタ キー参照]を参照してください。

手順

ルール ステートメントを作成するには、次の手順を実行します。

  1. Security Analyticsメニューで、[アラート]>[構成]を選択します。

    デフォルトで[ルール]タブが表示されます。

  2. ルール ライブラリ]で、追加ドロップダウン>[ルール ビルダー]をクリックするか、既存のルール ビルダー ルールを編集します。

    [ルール ビルダー]ビューが表示されます。

  3. 条件]セクションで、[追加]アイコンをクリックします。

    [ステートメントのビルド]ダイアログが表示されます。

    BldStmntDg.png

  4. ステートメントの[名前]を指定します。分かりやすい名前を指定してください。ステートメントの名前はルール ビルダーに表示されます。
  5. ドロップダウン リストから、必要な条件を選択します。

    • すべての条件を満たす場合
    • いずれかの条件を満たす場合
  6. ステートメントの基準を設定します。

    1. キー]に、メタ キーの名前を入力します。
    2. 演算子]にメタ キーと値との関係を指定します。
      選択肢は、[等しい]、[等しくない]、[NULLでない]、[次より大きい](>)、[次の値以上](>=)、[次より小さい](<)、[次の値以下](<=)、[次の値を含む]、[次の値を含まない]、[次の値で始まる]、[次の値で終わる]です。
    3. メタ キーのを入力します。
      値には引用符を付けないでください。複数の値は、コンマで区切ります。
    4. 大文字と小文字を区別しない]フィールドは、文字列と文字列の配列に適用されます。[大文字と小文字を区別しない]フィールドを選択すると、クエリーはすべての文字列テキストを小文字の値として扱います。 これにより、Johnsonという名前のユーザーを検索するルールは、イベントに「johnson」、「JOHNSON」、または「JoHnSoN」が含まれている場合にトリガーされます。
    5. 配列]フィールドは、[値]フィールドの内容が1つの値か、複数の値かを示します。

      ]フィールドに複数のコンマ区切りの値を入力した場合は[配列]チェックボックスをオンにします。たとえば、「ec_activity is Logon, Logoff」の場合は、[配列]チェックボックスをオンにする必要があります。

  7. ステートメントで別のメタ キーを使用するには、[追加]アイコンをクリックして、[メタ条件の追加]を選択し、ステップ6を繰り返します。 
  8. ホワイトリストを追加するには、[追加]アイコンをクリックし、[ホワイトリスト条件の追加]を選択します。
  9. ブラックリストを追加するには、[追加]アイコンをクリックし、[ブラックリスト条件の追加]を選択します。
  10. ステートメントを保存するには、[保存]をクリックします。 

ホワイトリストの追加

ホワイトリストを使用して、指定されたイベントがルールのトリガー対象から除外されるようにします。 ホワイトリストは、地理的な位置情報またはカスタムのCSV形式のエンリッチメント ソースによって定義できます。たとえば、米国以外のIPアドレスに対してのみトリガーするルールを作成する場合は、米国のIPアドレスのホワイトリストを作成できます。

  1. メタ条件を追加した後に、[追加]アイコンをクリックし、[ホワイトリスト条件の追加]を選択します。
  2. リスト名の入力]フィールドでエンリッチメント ソースを選択します。CSVまたはEsperの名前付きウィンドウからロードされた任意のエンリッチメント ソースをホワイトリストのソースとして使用できます。 
  3. ホワイトリストにGeoIPソースを使用した場合、サブ条件としてipv4が自動的に入力されます。対応する[値]フィールドにメタ値を入力します。たとえば、「ipv4 is ip_src」と入力して、GeoIPレコードがip_srcを元にGeoIPデータベースから検出されるようにします。さらに、ホワイトリストにGeoIPソースを使用した場合は、サブ条件を追加してルールの結果から除外する地域を指定します。たとえば、国コードが米国の場合に除外するには、「CountryCode is US」と入力します。

ブラックリストの追加

ブラックリストを使用して、指定されたイベントでルールがトリガーされるようにします。ブラックリストは地理的な位置情報またはカスタムのCSV形式のエンリッチメント ソースによって定義できます。たとえば、ルールにドイツの結果のみが含まれるよう指定できます。 

  1. メタ条件を追加した後に、[追加]アイコンをクリックし、[ブラックリスト条件の追加]を選択します。
  2. リスト名の入力]フィールドでエンリッチメント ソースを選択します。CSVまたはEsperの名前付きウィンドウからロードされた任意のエンリッチメント ソースをブラックリストのソースとして使用できます。 
  3. ブラックリストにGeoIPソースを使用した場合、サブ条件としてipv4が自動的に入力されます。対応する[値]フィールドにメタ値を入力します。たとえば、「ipv4 is ip_src」と入力して、GeoIPレコードがip_srcを元にGeoIPデータベースから検出されるようにします。さらに、ブラックリストにGeoIPソースを使用した場合は、サブ条件を追加してルールの結果に含める地域を指定します。たとえば、ドイツの結果のみを含むルールを指定するには、「CountryCode is DE」と入力します。

例:ブラックリスト

次のステートメントは、米国以外の国を送信元とする、宛先TCPポート25への実行可能ファイルを含む非SMTPトラフィックを監視するルールのブラックリスト ステートメントを示しています。 

Blacklist_example.png

                                 
 ステートメント説明
service is not 25トラフィックはSMTPトラフィックではありません。 
tcp_dstport is 25トラフィックはTCPポート25で稼働しています。 
extension is exe, com,vb,vbs,vbe,cmd,bat,ws,wsf,src,shファイル拡張子は実行可能ファイルです。
GeoIpLookupブラックリストのソースはGeoIPLookupです。
ipv4 is ip_srcGeoIPレコードは、event.ip_srcを元にGeoIP検索データベースから検出されます。 
countryCode is not US GeoIPデータベースでevent.ip_srcのIPアドレスを検索した結果、GeoIPレコードのcountryCodeフィールドに「US」は含まれません。

例:大文字と小文字を区別しない、厳格なパターン マッチング、「Is Not Null」演算子の使用

次の例では、大文字と小文字を区別せず、null値を除外し、厳格なパターン マッチングにより、予想されるルール結果が返されるようにします。次の条件によりルールが構成されます。

5f_1s_PaswrdChngeRule.png

                                 
ルールの条件説明
Failuresこの条件では、[Followed By]コネクタを含む5回のログイン失敗を検索します。つまり、条件(Failures)の後には次の条件(Success)が続く必要があります。
Successこの条件では、1回のログイン成功を検索します。 
ModifyPasswordこの条件では、パスワードの変更を検索します。
GroupBy: user_dst[GroupBy]フィールドによって、前述のすべての条件がuser_dstメタ(ユーザー宛先アカウント)でグループ化されます。これは、ユーザーが同じ宛先アカウントに複数回ログインを試み、最終的にログインに成功し、その後パスワードを変更した場合を検索するルールを作成するうえで重要です。ユーザー宛先アカウントでグループ化しない場合、ルールは予想外の結果を示す可能性があります。 
Occurs within 5minutesイベントが発生するタイム ウィンドウは5分です。このタイム ウィンドウ外でイベントが発生した場合、ルールはトリガーされません。 
Event Sequence: Strictイベント シーケンスには、厳格なパターン マッチングが適用されます。つまり、パターンは、介在するイベントなしで指定されているとおり正確に一致する必要があることを示します。 

厳格なパターン マッチングを使用すると、Esperエンジンではルールが検索するパターンと正確に一致する場合にのみアラートが生成されます。たとえば、5回のログイン失敗後のログイン成功を検出する場合を想定します。非厳密なパターン マッチングを選択した場合、ログインが5回失敗するまでの間に、ログイン成功が何度か発生していても、ルールがトリガーされます。ルールのポイントは、頻繁かつシーケンシャルなログイン試行を検索することであるため、期待する結果を得るためには厳格なパターン マッチングを選択する必要があります。 

注:各条件については、以下のセクションで詳しく説明します。 

条件ごとに、ルール ビルダーでステートメントを作成します。次のステートメントはFailures条件を表しています。

RB_Failure_Stmnt.png

                     
ルール ステートメント説明
ec-activity is Logon(大文字と小文字を区別しない)システムへのログオンを試行するアクティビティを識別します。

大文字と小文字を区別しない]フィールドは、文字列と文字列の配列に適用されます。[大文字と小文字を区別しない]フィールドを選択すると、クエリーはすべての文字列テキストを小文字の値として扱います。 特定のイベントが大文字または小文字のどちらでログに記録されるかが不明な場合に、このフィールドを選択します。大文字小文字は区別されないため、アクティビティが「Logon」、「logon」、「LoGoN」とログに記録されていても、ルールはトリガーされます。

ec_outcome is Failure(大文字と小文字を区別しない)「failure」とログに記録されたアクティビティ結果を識別します。大文字小文字は区別されないため、アクティビティが「failure」、「Failure」、「FaiLuRe」」とログに記録されていても、ルールはトリガーされます。
user_dst is not nulluser_dstに値が設定されている場合にのみ条件がtrueになります。 

is not null演算子を使用すると、フィールドに値が設定されていることを検証できます。ルールが1つの値を返す特定のフィールドに依存している場合にこの演算子を使用してください。たとえば、同じユーザーによる同じ宛先アカウントへの複数回のログイン試行(パスワード推測攻撃の可能性があります)を特定するルールを作成する場合です。ユーザー宛先アカウントのフィールドが空の場合、ルールはトリガーされません。フィールドに値が含まれていることを確認するには、is not null演算子を使用します。 

 

次のステートメントはSuccess条件を表しています。

RB_Success_Stmnt.png

                     
ルール ステートメント説明
ec_activity is Logonログオン アクティビティを識別します。 
ec_outcome is Success成功したログオンを識別します。
user_dst is not null条件がtrueになるには、ユーザー宛先アカウントが設定されている必要があります。 

 

次のステートメントはModifyPassword条件を表しています。

RB_Modify_Stmnt.png

 
ルール ステートメント説明
user_dst is not null条件がtrueになるには、ユーザー宛先アカウントが設定されている必要があります。 
ec_subject is Password対象がパスワードであることを指定します。 
ec_activity is Modifyパスワードが変更されたアクティビティを識別します。 

例の結果

上記の例で説明したルールにより発生したアラートは、7つのイベントによってトリガーされ、各イベントに同一のユーザーが含まれていることが分かります。イベントが厳密なパターンに従っていることも分かります。つまり5回のログイン失敗イベントの後に、ログインに成功し、その後にアカウントが変更されています。 

5f_1s_PaswrdChngeAlert.png

いずれかのイベントのソースをクリックしてInvestigationモジュールにドリル ダウンすると、各文字列値の大文字小文字が確認できます。[大文字と小文字を区別しない]を使用したため、文字列値が大文字でも小文字でもルールはトリガーされます。 

5f_1s_PaswrdChngeDetail.png

例:ルール結果のグループ化

Group By]フィールドを使用すると、ルール結果をグループ化してフィルタリングできます。たとえば、Joe、Jane、Johnの3つのユーザー アカウントがある場合は、[Group By]フィールドに、user_dstを指定します。その結果、Joe、Jane、Johnのアカウントでグループ化されたイベントが表示されます。

また複数のキーでグループ化して、ルール結果をさらに絞り込むこともできます。たとえば、ユーザー宛先アカウントとマシンでグループ化し、同じマシンから同じ宛先アカウントに複数回ログインしているユーザーがいないかを確認できます。 これを行うには、device_classとuser_dstでグループ化します。

次の例は、device_classとuser_dstでグループ化されたルールを示しています。 

5f_1s_MultiGrpByRule.png

ルールの条件説明
Failed Logins5回失敗したログインを識別します(この後に「Followed By」条件が続く必要があります。つまり、5回の失敗の後に1回のログイン成功が続く必要があります)。
Successful Login1回のログインの成功を識別します。 
Group By: user_dst and device_classルール結果をuser_dst(ユーザー宛先アカウント)とdevice_class(ユーザーがログインしているマシンのタイプ)でグループ化します。これより、同じマシンから同じ宛先アカウントにログインしているユーザーを検索することができ、さらにルールの結果のターゲットを絞り込むことができます。 
Occurs within 5 minutes with a strict pattern matchイベントは5分以内に発生する必要があり、厳格なパターン マッチングを適用します。つまりルールをトリガーするにはパターンに正確に一致する必要があります。 

例:数値演算子の使用

数値演算子を使用すると、値が特定の値より大きい、小さい、または同等であることを指定するなど、数値に対するルールを作成できます。これは特に、「payload is greater than 7000」のように、数値の閾値を指定する場合に役に立ちます。 

次の例では、転送サイズが大きく、ペイロードのサイズが疑わしい範囲にある一般的なポートを使用した特定の宛先へのデータ転送を特定しています。

BldStmnt_SuspTrans.png

ルール ステートメント説明
ip_dst is 10.10.10.1宛先ポートは10.10.10.1です。
ip_dstport is greater than or equal to 1024宛先ポートは一般的に使用されるポート範囲(1024以上)内です。
size is greater than or equal to 10000転送サイズは、10000以上です。不審な大規模な転送を意味します。 
payload is greater than 7000ペイロードは、7000~8000の範囲です。不審な大量のペイロードを意味します。 
payload is less than 8000ペイロードは、7000~8000の範囲です。不審な大量のペイロードを意味します。 
You are here
Table of Contents > ルール ライブラリへのルールの追加 > ルール ビルダー ルールの追加 > ステップ2:ルール ステートメントのビルド

Attachments

    Outcomes