matchfeed

脅威インテリジェンスフィードデータを使用して入力レコードの指定フィールド値がフィードに含まれているかを検査し、マッチしたレコードを出力します。

コマンドプロパティ

項目説明
コマンドタイプ加工クエリ
必要な権限なし
ライセンス使用量該当なし
並列実行対応
分散実行データノードで実行(mapper)

構文

matchfeed [name=STR] [type={URL|DOMAIN|EMAIL|IP|REGISTRY|MD5|SHA1|SHA256}] fields=STR [invert=BOOL]

オプション

name=STR
脅威インテリジェンスフィードの識別子。nametypeオプションのいずれか一方を必ず指定してください。
type={URL|DOMAIN|EMAIL|IP|REGISTRY|MD5|SHA1|SHA256}
脅威インテリジェンスフィードのタイプ。nametypeオプションのいずれか一方を必ず指定してください。
  • URL: URL
  • DOMAIN: ドメイン
  • EMAIL: メール
  • IP: IPアドレス
  • REGISTRY: レジストリ
  • MD5: MD5ハッシュ
  • SHA1: SHA1ハッシュ
  • SHA256: SHA256ハッシュ
fields=STR
マッチング対象フィールドのリスト。カンマ(,)で区切って複数のフィールドを指定できます。フィールド値は文字列またはIPアドレスタイプでなければなりません。
invert=BOOL
マッチング結果を反転します。tを指定すると脅威インテリジェンスフィードに含まれないレコードを出力します。(デフォルト:f

入力フィールド

フィールドタイプ必須説明
fieldsで指定したフィールド文字列またはIPアドレス必須脅威インテリジェンスフィードと比較する値。nullまたは文字列・IPアドレスタイプでない場合はそのフィールドをスキップします。

出力フィールド

nameオプションで特定のフィードを指定した場合:

フィールドタイプ説明
feed_name文字列マッチした脅威インテリジェンスフィードの識別子
feed_invertブール反転の有無
feed_field文字列マッチしたフィールド名(invert=fの場合のみ出力)

typeオプションでフィードタイプを指定した場合:

フィールドタイプ説明
feed_type文字列脅威インテリジェンスフィードのタイプ
feed_names配列マッチした脅威インテリジェンスフィード識別子のリスト(invert=fの場合のみ出力)
feed_invertブール反転の有無
feed_field文字列マッチしたフィールド名(invert=fの場合のみ出力)

エラーコード

パースエラー
エラーコードメッセージ説明
300020Specify name or type option to matchfeed command.nametypeオプションをどちらも省略した場合
300021Specify fields option to matchfeed command.fieldsオプションが指定されていない場合
300022Invalid IoC feed identifier.nameオプションに存在しないフィード識別子を指定した場合
300023Invalid IoC feed type. Specify one of the following options: URL, DOMAIN, EMAIL, IP, REGISTRY, MD5, SHA1, SHA256.typeオプションに無効なタイプを指定した場合
300024Cannot initialize IoC feed matcher.フィードマッチャーの初期化に失敗した場合
ランタイムエラー

該当なし

説明

matchfeedコマンドは、入力レコードの指定されたフィールド値を脅威インテリジェンスフィードデータと比較し、マッチの有無によってレコードをフィルタリングします。fieldsオプションで指定したフィールドを順番に検査し、最初にマッチしたフィールドで検査を中断してそのレコードを出力します。

nameオプションで特定のフィードを指定すると、そのフィードのみを対象にマッチングを行います。typeオプションでフィードタイプを指定すると、同じタイプのすべてのフィードを対象にマッチングを行います。どちらかのオプションを必ず指定してください。

invert=tを指定すると、すべてのフィールドを検査した後にどのフィールドもマッチしなかったレコードのみを出力します。この場合、feed_fieldフィールドは出力されません。

フィールド値がnullであるか文字列またはIPアドレスタイプでない場合は、そのフィールドをスキップして次のフィールドを検査します。

使用例

  1. 特定のフィード名でIPアドレスをマッチング

    json "[{'src_ip': '192.0.2.1'}, {'src_ip': '198.51.100.5'}, {'src_ip': '203.0.113.10'}]"
    | matchfeed name=malware_ip fields=src_ip
    

    malware_ipフィードに含まれるIPアドレスを持つレコードをフィルタリングします。

  2. フィードタイプでドメインをマッチング

    json "[{'domain': 'example.com'}, {'domain': 'test.org'}]"
    | matchfeed type=DOMAIN fields=domain
    

    DOMAINタイプのすべての脅威インテリジェンスフィードを対象にドメインフィールドをマッチングします。

  3. 複数のフィールドを対象にマッチング

    json "[{'src_ip': '192.0.2.1', 'dst_ip': '198.51.100.5'}]"
    | matchfeed type=IP fields=src_ip,dst_ip
    

    src_ipdst_ipフィールドを順番に検査し、IPタイプのフィードに含まれるレコードをフィルタリングします。

  4. マッチング結果を反転

    json "[{'src_ip': '192.0.2.1'}, {'src_ip': '198.51.100.5'}]"
    | matchfeed name=malware_ip fields=src_ip invert=t
    

    malware_ipフィードに含まれないIPアドレスを持つレコードのみを出力します。