このドキュメントは次のように構成されています。
- Overview
- 利用可能なメタデータタイプ
- 動的ラベルの使用例
- エンティティメタデータタイプ
- スタイリング
- 複数行テキスト
Overview
メタデータ ファイルには、拡張機能の出力 JSON と、Recorded Future UI での表示方法が記述されています。これは、内線応答で返されたエンティティを解決するため、および応答データのインテリジェンス カード レンダリングに必要です。 拡張機能の応答で返されるすべてのキー/値は、メタデータ ファイルにマッピングする必要があります。 メタデータは、拡張機能の応答で返されるすべてのキーのスーパーセットです。 拡張機能の応答にマップされていないキーが含まれている場合、インテリジェンス カードにエラー メッセージが表示されます。
参考までに、完成した metadata.json ファイル、Python コードからの予想される応答、拡張機能のスクリーンショットを示す 3 つのファイルが添付されています。これらは以下の例とは別です。
metadata.json ファイルの例
{
「エントリ」: [
{
"key": "ip_address",
"label": "IP Address",
"type": "IpAddress"
} 、
{
"key": "ip_other_domains",
"label": "Co-Hosting",
"type": "text"
} 、
{
"key": "registrant",
"label": "Registrant",
"type": "text"
} 、
{
"key": "registrant_domains",
"label": "Registered Domains",
"type": "text"
} 、
{
「キー」: 「ウェブサイト」
"ラベル": "ウェブサイト",
「タイプ」:「辞書」、
「エントリ」: [
{
"key": "title",
"label": "Website Title",
"type": "text"
} 、
{
"key": "response_code",
"label": "HTTP Response Code",
"type": "integer"
} 、
{
"key": "server_type",
"label": "Web Server Type",
"type": "text"
}
]
},
{
"key": "created",
"label": "Created on",
"type": "date"
} 、
{
"key": "recently_created",
"label": "Recently Created",
"type": "text"
} 、
{
"key": "registrar",
"label": "Registrar",
"type": "text"
} 、
{
「キー」:「履歴」
"ラベル": "履歴",
「タイプ」:「辞書」、
「エントリ」: [
{
"key": "hosting_history",
"label": "Hosting History",
"type": "text"
} 、
{
"key": "ip_history",
"label": "IP History",
"type": "text"
} 、
{
"キー": "ip_history_details",
"label": "過去のIP",
「タイプ」:「リスト」、
「アイテム」: {
"type": "IpAddress"
}
},
{
"key": "registrar_history",
"label": "Registrar History",
"type": "text"
} 、
{
"key": "whois_history",
"label": "Whois History",
"type": "text"
}
]
},
{
「キー」:「メールアドレス」
"label": "連絡先メールアドレス",
「タイプ」:「リスト」、
「アイテム」: {
"type": "EmailAddress"
}
},
{
"キー": "ネームサーバー",
"label": "ネームサーバー",
「タイプ」:「リスト」、
「アイテム」: {
"type": "InternetDomainName"
}
},
{
"key": "registrant_address",
"label": "Registrant Address",
"type": "text"
} 、
{
"key": "screenshot_history",
"label": "Screenshots",
"type": "link"
} 、
{
"key": "host_domain_count",
"label": "Total Domains for Host",
"type": "integer"
} 、
{
"キー": "ホストドメイン名",
"label": "IPでホストされているドメイン",
「タイプ」:「リスト」、
「アイテム」: {
"type": "InternetDomainName"
}
},
{
"key": "community_link",
"label": "Browse",
"type": "link"
}
]
}
利用可能なメタデータタイプ
使用可能なタイプは次のとおりです。
- テキスト- ラベルまたはプレーンテキスト値に使用されます
- 整数- カウント値に使用される
- 日付- インテリジェンスカードに[月日、年]の形式で表示されます。
-
日時- インテリジェンスカードに[月日、年、hh:mm:ss]の形式で表示されます。
- 正しい形式のタイムスタンプから日付時刻値を作成するには、ユーティリティ関数create_datetimeを使用します。
- list - 展開可能な値のリストを表示します。最上位レベルのリストは展開された状態で始まり、ゼブラ パターンが表示されます。
- dict - 拡張可能なキーと値を持つ辞書を表示します。トップレベルの辞書が展開されて開始されます。
- link - リンクタイプは、レスポンスデータ内のキーurlとnameを含む辞書です。
{
"rf_link": {
"url": "www.recordedfuture.com",
"name": "Recorded Future",
}
}
メタデータ:
{
"key": "rf_link",
"label": "Try it out",
"type": "link"
}
リストの種類の後には、リスト内の要素の種類を説明するキー項目が続きます。リストの初期状態 (展開または折りたたみ) は、キーcollapse で指定できます。
{
「キー」: 「a_records」、
"label": "リソースレコードタイプA",
「タイプ」:「リスト」
「折りたたみ」:真、
"アイテム": {
「タイプ」:「辞書」、
「エントリ」: [
{
"key": "bailiwick",
"type": "bailiwick"
} 、
{
"key": "first_seen",
"type": "first_seen"
} 、
...
{
"key": "name_server",
"label": "Name server",
"type": "InternetDomainName"
}
]
}
}
辞書タイプの後には、辞書内の要素の順序を示すリストであるキーエントリが続きます。
{
「キー」:「日付」、
"label": "日付",
「タイプ」:「辞書」、
「エントリ」: [
{
"key": "created",
"label": "Created on",
"type": "date"
} 、
{
"key": "expires",
"label": "Expires on",
"type": "date"
} 、
{
"key": "updated",
"label": "Updated on",
"type": "date"
}
]
}
dict タイプは動的なラベルをサポートします。動的ラベルは、表示するラベルがデータによって決定され、メタデータで統計的に指定できない場合に便利です。
動的ラベルの使用例
拡張機能からの JSON 応答
{
「レコード」: [
{
「年」: 「2010」
「値」: [
{
"start": "2010-03-07T04:09:54",
"stop": "2010-05-21T05:14:28",
"host": "ip:1.2.3.4"
}
]
},
{
「年」: 「2011」
「値」: [
{
"start": "2011-03-28T05:12:28",
"stop": "2011-04-21T05:14:28",
"host": "ip:8.8.8.8"
} 、
{
"start": "2011-05-28T05:12:28",
"stop": "2016-09-21T05:14:28",
"host": "ip:8.8.8.8"
}
]
}
]
}
拡張機能のメタデータ
{
「エントリ」: [
{
「キー」:「レコード」、
"label": "レコード",
「タイプ」:「リスト」
「折りたたみ」:真、
"アイテム": {
「タイプ」:「辞書」、
"label_key": "年",
"アイテム": {
「キー」:「値」、
「タイプ」:「リスト」
"アイテム": {
「タイプ」:「辞書」、
「エントリ」: [
{
"key": "start",
"label": "Start of event",
"type": "datetime"
} 、
{
"key": "stop",
"label": "Stop of event",
"type": "datetime"
} 、
{
"key": "last_seen",
"type": "last_seen"
} 、
{
"key": "host",
"label": "IP Address",
"type": "IPAddress"
}
]
}
}
}
}
]
}
メタデータ ファイルでlabel_key を使用して、ラベルとして使用するキーを指定します。アイテム内のキーを使用して、動的ラベルの下にレンダリングされるデータを保持するキーを指定します。
エンティティメタデータタイプ
拡張応答でエンティティ値を返す場合、メタデータは、 Recorded Futureエンティティに解決できるように、そのエンティティのタイプを指定します。 利用可能なエンティティタイプは次のとおりです。
-
IPアドレス
- このタイプは、CIDR 表記の IP 範囲にも使用する必要があります。個々の IP アドレスには /32 表記を使用しないでください。
-
インターネットドメイン名
- このタイプは、すべての DNS 名(FQDN、NS、MX DNS 名も含む)に使用する必要があります。
- メールアドレス
- URL
-
AS番号
- 有効な ASNumber の想定される構文は「ASxxxxx」です。ここで、「xxxxx」は番号そのものです。先頭の「AS」が省略された値は型の不一致を引き起こし、インテリジェンス カード拡張でパートナーのレスポンスをレンダリングするときに予期しない動作を引き起こします。
- 支払カード番号
- ハッシュ
-
マルウェア
- マルウェアには多くの名前が付けられる場合があります。Recorded Future のオントロジーで見つかった最も一般的な名前または広く受け入れられている名前が、検索のためにパートナーの API に渡されます。たとえば、Dridex/Bugat/Cridex の場合、パートナー API の検索に使用するために、Dridex のみが Extension API を介して渡されます。
- サイバー脆弱性
- ThreatActor [近日公開]
スタイリング
拡張応答データの値に特定のスタイルを指定できます。 特定の条件下では値を強調表示する必要がある場合もあります。したがって、スタイルキーはメタデータ ファイルでは指定されず、拡張情報ソース コード ロジックが特別な値を見つけた場合の応答データで指定されます。 応答データ json の構文は次のとおりです。
{"entity_1":{"value":"1.2.3.4","スタイル":"ハイライト"}}
通常のスタイルなし要素とは対照的に
{"entity_2":"1.2.3.4"}
レスポンス JSON 内の任意の値は、キー value と style を持つ辞書として値を返すことによってスタイルを設定できます。現在、スタイル キーでサポートされている値は highlight です。
複数行テキスト
複数行のテキストをレンダリングするには、文字列の配列を使用します。配列の各レコードは 1 行のテキストを表します。たとえば、複数行にわたってアドレスを表示するには、応答データは次のようになります。
{ "address" : [ "363 Highland Avenue", "Suite 2", "Somerville, MA 02144", "United States" ] }
メタデータは次のようになります。
{
「キー」:「アドレス」、
「タイプ」:「リスト」、
「アイテム」: {
"type" : "text"
}
}