フィードのルール
2024年8月22日
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 サーバーのバージョンです。このパラメータに使用可能な値は、
1
、2.0
、2.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 マスクのあるフィードをフィードユーティリティでどのように処理するかを定義します。
フィードユーティリティを Kaspersky CyberTrace の一部として Kaspersky CyberTrace サービスと使用する場合、URL マスクを含むフィードをバイナリ形式に変換する必要があります。
Kaspersky CyberTrace サービスなしでフィードユーティリティを使用する場合はマスクをコンパイルする必要がないため、フィードユーティリティ設定情報ファイルに UrlMatcherField
要素は不要です。
この要素には値とオプションの toRegex
属性が 1 つずつあります:
- この要素の値は、URL マスクを含んだフィード内のフィールド名を指定します。
- この要素のオプションの
toRegex
属性は、ユーティリティによるフィードの処理方法を定義します。toRegex
属性が0
、false
か省略されている場合、フィードユーティリティはフィードをコンパイルし、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 つのファイルに含める必要があるレコードの最大数を定義します。ある処理済みのフィードファイルのレコードの総数がこの値を上回る場合、フィードユーティリティは追加のフィードファイルを作成します。たとえば、
total
が1000
、perFile
が300
の場合に、フィルタリングルールに一致するレコードが 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> |