フィードのルール

2024年4月11日

ID 171651

Feed 要素の個々のフィードルールは、フィードユーティリティによる各フィードの処理方法を指定します。

設定情報ファイルにはあらかじめ、全フィードのフィードルールを含んだエントリがあります。製品版フィードのエントリは無効です。製品版の証明書を使用してフィードをダウンロードする場合は、証明書で入手できるフィードのエントリからコメントを外してください。

フィードルールの例

フィードルールの例は、次の通りです。フィードルールはフィードごとに個別に指定します。

<Settings>

...

<Feeds>

<Feed enabled="true">

<Name>Botnet_CnC_URL_Data_Feed</Name>

<FeedID>65</FeedID>

<Filters>

<Field name="geo" value="RU"/>

</Filters>

<UrlMatcherField toRegex="false">mask</UrlMatcherField>

<RequiredFields>mask;geo;first_seen;last_seen</RequiredFields>

<RecordsCount perFile="100" total="1000" />

<FeedFields/>

</Feed>

<Feed enabled="false">

<Name>CustomFeed</Name>

<Path>./custom_example/example_feed.json</Path>

<Parsing type="json">

<MD5 type="MD5">files/MD5</MD5>

</Parsing>

<FeedFields/>

</Feed>

...

</Feeds>

...

</Settings>

Feed

この親要素には、フィードのフィードルールが含まれています。

名前

この要素は、ダウンロードしたフィードファイルの名前を指定します。

フィードユーティリティはダウンロード済みフィードの解凍後、指定の文字列で始まる名前のファイルを探します。複数のファイル名が指定の文字列で始まる場合、フィードユーティリティはエラーメッセージを出力し、フィードの処理を停止します。その場合、この競合を手動で解決する必要があります。たとえば、フィードユーティリティがファイルを解凍しているディレクトリから余分なファイルを削除します。このディレクトリは WorkDir パラメータで指定します。

このパラメータは大文字と小文字が区別されます。

このパラメータには一意の値を指定する必要があります。このパラメータの 2 つの Feed 要素に同じ値を割り当てることはできません。

FeedID

この要素は、カスペルスキーのフィードのみに適用されます。

この要素はフィードの識別子を指定します。フィードユーティリティはこのパラメータを使用して更新サーバーからフィードをダウンロードします。

enabled 属性は、フィードをフィードユーティリティで処理する必要があるかどうかを指定します:

  • この属性が true の場合、フィードユーティリティはこのフィードを処理します。
  • この属性 が false の場合、フィードユーティリティはこのフィードをスキップします。

Path

Path パラメータは、カスタムフィードまたはサードパーティのフィードのパスとファイル名を指定します。

次の値タイプがサポートされています:

  • フィードユーティリティバイナリがあるコンピューターのパスとファイル名
  • FTP または FTPS のパスとファイル名
  • HTTP または HTTPS の URL
  • ネットワークパス(Windows オペレーティングシステムのみでサポート)

このパラメータには、次の属性があります:

  • cert

    HTTPS または FTPS 経由でこのフィードをダウンロードするために使用される証明書へのパスを指定します。この属性は任意です。指定しない場合、フィードユーティリティは証明書を使用しません。

認証タイプは、フィードユーティリティ設定情報ファイルの[Settings]→[Feeds]→[Feed]パラメータを順に選択して指定します。

メールタイプのフィードでは、タイプ属性の値に POP3 または IMAP を指定して接続プロトコルを選択します。

接続プロトコルを選択した場合は、Path 要素でメールサーバーの IPv4 / ホスト名とポートを指定します。

Authorization

カスタムフィードまたはサードパーティのフィードの基本的な認証設定です。

このパラメータには、ネストされた 2 つの要素があります:

  • User

    フィードをダウンロードするサーバーの基本認証用の暗号化されたユーザー名です。

    このパラメータを設定するには、--set-basic-auth コマンドラインオプションを使用します。TAXII サーバーからダウンロードされる STIX フィードの場合は、--set-taxii オプションを使用します。

    この要素は空にできません。

  • Password

    フィードをダウンロードするサーバーの基本認証用の暗号化されたパスワードです。

    このパラメータを設定するには、--set-basic-auth コマンドラインオプションを使用します。TAXII サーバーからダウンロードされる STIX フィードの場合は、--set-taxii オプションを使用します。

このタイプの認証が不要な場合は、このパラメータを指定しないでください。

TAXII

TAXII パラメータは STIX フィードの場所を指定します。この要素には、TAXII サーバーの Poll サービスのアドレスを指定する必要があります。

このパラメータには、次の属性があります:

  • collection_name

    この STIX フィードのデータコレクションの名前です。

  • version

    TAXII サーバーのバージョンです。このパラメータに使用可能な値は、12.02.1 です。STIX 2.0 フィードでは、TAXII 2.0 サーバーを指定します。STIX 2.1 フィードでは、TAXII 2.1 サーバーを指定します。

    既定では、この属性の値は 1 に設定されます。

次の例では、STIX フィードの場所を指定する方法を示します:

<TAXII collection_name="example-collection" version="2.1">http://192.0.2.10:9000</TAXII>

TAXII サーバー認証設定

TAXII サーバーの承認用の資格情報です。

このパラメータには、ネストされた 2 つの要素があります:

  • User

    TAXII サーバーの承認用のユーザー名です。

    このパラメータは暗号化された状態で保存されます。このパラメータを設定するには、--set-taxii コマンドラインオプションを使用します。このオプションを使用せず、ユーザー名をプレーンテキストで入力すると、TAXII サーバーへの接続は確立されません。

  • Password

    TAXII サーバーの承認用のパスワードです。

    このパラメータは暗号化された状態で保存されます。このパラメータを設定するには、--set-taxii コマンドラインオプションを使用します。このオプションを使用せず、パスワードをプレーンテキストで入力すると、TAXII サーバーへの接続は確立されません。

次の例では、このパラメータの使用方法を示します:

<Feed>

<Name>TAXII</Name>

<TAXII collection_name="example-collection" version="2.1">http://192.0.2.10:9000</TAXII>

<Authorization>

<User>zQYq33rAY7dgImLtk8W0jQ==</User>

<Password>OUYWpkPDoH+vv/IFfCrshw==</Password>

</Authorization>

</Feed>

Filters

この要素は、フィードのフィルタリングルールを指定します。各フィルタリングルールは Field 要素で定義します。

Filters 要素は任意です。ネストされた Field 要素が Filters 要素にない場合、フィードユーティリティは Filters 要素が省略されたものとしてこの状況を処理します。Filters 要素がない場合、フィルタリングは実行されません。

UrlMatcherField

この要素は、URL マスクのあるフィードをフィードユーティリティでどのように処理するかを定義します。

フィードユーティリティを CyberTrace の一部として Kaspersky CyberTrace サービスと使用する場合、URL マスクを含むフィードをバイナリ形式に変換する必要があります。

Kaspersky CyberTrace サービスなしでフィードユーティリティを使用する場合はマスクをコンパイルする必要がないため、フィードユーティリティ設定情報ファイルに UrlMatcherField 要素は不要です。

この要素には値とオプションの toRegex 属性が 1 つずつあります:

  • この要素の値は、URL マスクを含んだフィード内のフィールド名を指定します。
  • この要素のオプションの toRegex 属性は、ユーティリティによるフィードの処理方法を定義します。
    • toRegex 属性が 0false か省略されている場合、フィードユーティリティはフィードをコンパイルし、Kaspersky CyberTrace サービスが使用できるバイナリファイルを作成します。
    • toRegex 属性が 1 または true の場合、フィードユーティリティはフィード内の URL マスクを正規表現に変換されるように処理します。

      フィードユーティリティは URL マスクごとに、URL マスクでカバーされるすべての URL に一致する正規表現を作成します。たとえば、URL マスクが botnet.example.com の場合、その正規表現は ((\/{2}|^)botnet\.example\.com(\/.*|$)) になります。URL マスクのように、この正規表現は botnet.example.com ドメイン内のすべての URL に一致します。

      toRegex 属性は、type フィールドがあるフィードのみを対象に 1 に設定できます。また、RequiredFields 要素がフィードルールの中にある場合は、この要素に type フィールドを含める必要があります。

json 出力形式では、次の操作を実行できます:

  • URL マスクのあるフィードを Kaspersky CyberTrace サービスで使用可能なバイナリファイルにコンパイルする。

    Kaspersky CyberTrace サービスを使用する場合、UrlMatcherField 要素は、URL マスクのあるフィード(Malicious URL Feed、Phishing URL Feed、Botnet C&C URL Feed、IoT URL Feed)で必須になります。

    <UrlMatcherField>%field_name%</UrlMatcherField>

  • URL マスクを正規表現に変換する。

    <UrlMatcherField toRegex=1>%field_name%</UrlMatcherField>

  • URL マスクを変換しないこと。

    UrlMatcherField 要素を省略してください。

csv 出力形式と txt 出力形式では、次の操作を実行できます:

  • URL マスクを正規表現に変換する。

    <UrlMatcherField toRegex=1>%field_name%</UrlMatcherField>

  • URL マスクを変換しないこと。

    UrlMatcherField 要素を省略してください。

openioc 出力形式と stix 出力形式では、この要素を省略してください。これらの出力形式でこの要素を使用することはできません。

RequiredFields

この要素は、処理されたフィードに含めるフィールドを指定します。txt 出力形式と csv 出力形式の場合、この要素は必須です。RequiredFields 要素を省略すると、レコードのすべてのフィールドが処理済みのフィードに書き込まれます。

フィールド名はセミコロン(「;」)で区切られます。フィールド名のスラッシュ(「/」)は、(JSON 形式から見て)ネストされたフィールドを示します。

この要素は、結果として生成されるフィールドを定義します。フィルタリングルールのような機能ではありません。たとえば、<RequiredFields>id;mask</RequiredFields> フィードルールをフィードに対して定義すると、処理済みのフィードのレコードには id フィールドと mask フィールドしか存在しなくなります。1 つ以上の指定のフィールド(id または mask)を持つレコードも含まれます。指定のフィールドが 1 つもないレコードは除外されます。指定のフィールドがないと、処理済みのフィードに空のレコードが書き込まれるためです。指定したすべてのフィールドを持つレコードのみが、生成されるフィードに含まれるようにフィードをフィルタリングする場合は、フィルタリングルールを使用する必要があります。RequiredFields 要素とフィルタリング基準を一緒に使用する方法は、「フィルタリングルール」セクションの「フィールドのないレコードの除外」サブセクションを参照してください。

レコードフィールドは、RequiredFields 要素に記載されている順に csv 形式と txt 形式で書き込まれます。レコードフィールドは、ソースフィードに記載されている順に json 形式で書き込まれます。openioc 形式と stix 形式の場合、レコードの順序は定義されていません。レコードは処理順に書き込まれます。

FeedFields

この要素はフィード内にあるすべてのフィードを一覧表示します。

このパラメータは変更しないでください。フィードユーティリティはフィールドの値をこのパラメータに自動的に書き込みます。

RecordsCount

この要素は、処理済みのフィードに含まれる最大レコード数を指定します。

この要素には 2 つの属性があります:

  • この要素の total 属性は、処理済みのファイルに含める必要がある第 1 レベルのレコードの総数を定義します。フィードユーティリティは、フィルタリングルールに一致するレコードしか含めません。この値が 0 の場合、この数は無制限になり、すべてのレコードが含まれます。

    total 属性は第 1 レベルのレコードを参照するので、処理済みのフィードには、total の値よりも多くのネストされたレコードが含まれることがあります。たとえば、元のフィードには次のデータが含まれています:

    [

    {

    "time": "23.02.1992 15:43",

    "urls":[

    {

    "url" : "http://url.biz/sample1"

    },

    {

    "url" : "http://url.biz/sample2"

    }

    ]

    },

    {

    "time": "24.02.1992 15:43",

    "urls":[

    {

    "url" : "http://url.biz/sample3"

    },

    {

    "url" : "http://url.biz/sample4"

    }

    ]

    }

    ]

    フィードユーティリティ設定情報ファイルで、このフィードに対する次の設定を指定することができます:

    <OutputFormat>csv</OutputFormat>

    <RequiredFields>urls/url</RequiredFields>

    <RecordsCount total="1" />

    処理済みのフィードには、2 つのレコードが含まれます。第 1 レベルの 1 つのレコードにこれらがネストされているためです。

    http://url.biz/sample1

    http://url.biz/sample2

  • この要素の perFile 属性は、1 つのファイルに含める必要があるレコードの最大数を定義します。ある処理済みのフィードファイルのレコードの総数がこの値を上回る場合、フィードユーティリティは追加のフィードファイルを作成します。

    たとえば、total1000perFile300 の場合に、フィルタリングルールに一致するレコードが 650 個見つかったときは、3 個のファイルが作成されます(300 個のレコードのファイルが 2 個、50 個のレコードのファイルが 1 個)。

    この属性は、次の場合には使用できません:

    • perFile 属性は、バイナル形式にコンパイルされた、URL のあるフィードでは使用できません。
    • perFile 属性は、type 属性が url タイプまたは domain タイプに設定された解析ルールを持つカスタムフィードでは使用できません。そのようなフィードは、フィードユーティリティによってバイナリ形式にもコンパイルされます。これらのタイプのフィールドで perFile 属性を使用するには、フィールドタイプを context に変更する必要があります。

解析

この要素には、カスタムフィードの解析ルールが含まれています。

メールタイプのフィードのルール

フィードユーティリティは、メールサーバーからサードパーティのフィードをダウンロードできます。

設定情報ファイル kl_feed_util の次の要素でメールサーバー接続設定を設定します:

  • MailboxConnection

    Path 要素で POP3/IMAP が有効な場合は、この要素は必須です。

    この要素には、次の属性があります:

    • use_tls

      use_tls 属性に true または false 値を指定して、メールサーバーとの対話で TLS/SSL の使用を有効または無効にします。true が事前設定されています。

    • receive_period

      この属性の最大値は 360、事前設定値は 7、最小値は 1 です。

      フィードユーティリティは、メールフィードの最後のアップデート後に受信したメールのみを処理します。

      メールフィードが以前に更新されていない場合は、フィードユーティリティは、receive_period 属性で設定された日数分の直近のメールを処理します。

  • MailboxConnection/User

    この要素の値は、エンコードされます。フィードユーティリティは、メールサーバーに接続するために、 --set-mailbox パラメータを使用してユーザー名をエンコードします。

  • MailboxConnection/Password

    この要素の値は、エンコードされます。フィードユーティリティは、メールサーバーに接続するために、 --set-mailbox パラメータを使用してパスワードをエンコードします。

    メールサーバーとの接続をチェックする場合は、--check-mailbox-connection 属性を使用します。

  • MailboxConnection/Filters

    このセクションでは、メールサーバーメッセージのフィルタリングルールを 1 つ以上指定できます。このセクションは任意です。詳細は、「フィルタリングルール」セクションを参照してください。

  • 解析

    メールタイプのフィードの解析ルールを設定するには、「解析ルール」セクションを参照してください。

次の例は、メールサーバー接続の設定について示しています。

<Feed enabled="true">

<Name>Email_OSINT</Name>

<Path type="pop3">myemailserv.com:3125</Path>

<MailboxConnection use_tls="false" receive_period="7">

<User>==asd</User>

<Password>==ewq</Password>

<Filters>

<Filter field="from" condition="not_match">mywife@ya.ru</Filter>

<Filter field="subject" condition="contains">Best IoCs ever</Filter>

</Filters>

</MailboxConnection>

<Parsing type="messageBody">

<ip type="ip">(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})</ip>

</Parsing>

<Parsing type="messageAttach">

<Attach type="csv">

<ip type="ip">1</ip>

</Attach>

<Attach type="pdf">

<url type="url">1</url>

</Attach>

</Parsing>

<Excluded>

<Item>VALUE1</Item>

<Item>VALUE2</Item>

</Excluded>

</Feed>

この記事はお役に立ちましたか?
改善できる点がありましたらお聞かせください。
フィードバックをいただき、ありがとうございました。改善に向けて取り組んでまいります。
フィードバックをいただき、ありがとうございました。改善に向けて取り組んでまいります。