VulnCheck Target Intelligence では、数多くの API クエリパラメータを使用してインターネットスキャンのデータセットを簡単にクエリできます。これらは結果のフィルタリングに役立ちます。パラメータは組み合わせて使用できます。すべてのパラメータは任意ですが、有意義な結果を得るためには少なくとも 1 つ指定してください。
| クエリパラメータ | 型 | 説明 |
|---|---|---|
cidr | string | サブネット検索用の CIDR 範囲。単一ホストの場合は /32 を使用します(例:203.0.113.42/32) |
hostname | string | スキャン時の DNS ルックアップから取得されたホスト名。部分一致で検索されます。複数指定する場合はカンマ区切り |
domain | string | ホストの DNS ホスト名の末尾に一致させるドメイン。複数指定する場合はカンマ区切り。domain と hostname の違い を参照してください |
cve | string | 確認済みの脆弱なホストをすべて取得するための CVE ID(例:CVE-2024-21887) |
vendor | string | ソフトウェアのベンダー名 |
product | string | ソフトウェアの製品名 |
version | string | ソフトウェアのバージョン文字列 |
cpe | string | 完全な CPE 文字列 |
asn | string | 自律システム番号(例:AS15169) |
country | string | 国名(例:United States、Germany) |
country_code | string | ISO 3166-1 alpha-2 国コード(例:US、DE) |
protocol | string | ポート上で観測されたアプリケーションプロトコル(例:http、ssh、modbus) |
transport | string | トランスポートプロトコル:tcp または udp |
port | integer | ポート番号。TCP と UDP の両方の観測に適用されます。区別するには transport と組み合わせてください |
contains_cve | boolean | true の場合、フィンガープリントされたサービスに CVE が関連付けられているホストのみを返します |
confirmed | boolean | true の場合、高確度(ルール作成済みまたはバージョン完全一致)の CVE 一致を 1 件以上持つホストのみを返します。false の場合、CVE 一致がすべて未確認のホストのみを返します |
classifications | string | フィルタリングに使用する分類。分類によるフィルタリング を参照してください |
date | string | 指定した日付に初めてインデックスに追加されたレコードに絞り込みます。形式は YYYY-MM-DD。日付によるフィルタリング を参照してください |
limit | integer | 1 ページあたりに返される結果の最大数。デフォルトは 100、最大は 2000 |
page | integer | 返すページ番号 |
cursor | string | ページネーションされたクエリセッションのカーソル。大規模な結果セットのページング を参照してください |
vendor、product、version に関する注意: これらのパラメータは任意の組み合わせで使用できます。vendor のみ、または version のみでのクエリもサポートされていますが、結果が広範囲になる場合があります。2 つ以上を組み合わせることで、より対象を絞った結果が得られます。
domain と hostname の違いhostname と domain はどちらも、スキャン時に観測された逆引き DNS ホスト名を検索します。異なるのは、値がホスト名のどこに現れる必要があるかだけです。
hostname は、ホスト名の どこか に値が含まれていれば一致します。hostname=test.com は mail.test.com を返し、test.com.example.net も返します。
domain は、ホスト名の 末尾 に値がある場合に一致します。domain=test.com は mail.test.com を返しますが、test.com.example.net は返しません。したがって、domain の結果はすべて hostname の結果にも含まれ、domain のほうが厳密です。
どちらのパラメータもカンマ区切りの複数値を受け付け、それらは OR 条件で結合されます:domain=test.com,example.org。
ホスト名のカバレッジに関する注意: 観測されたホスト・ポートのレコードのうち、ホスト名を持つものは約 4 分の 1 にとどまるため、どちらのパラメータもインデックスの同じ限られた範囲しか参照できません。逆引き DNS を持たないホストは、証明書の内容や所属するネットワークにかかわらず、どちらのパラメータでも見つけられません。
domain が検索しない対象に関する注意: domain は TLS 証明書の識別情報(metadata.cert_common_name、cert_subject_dn、cert_issuer_dn)には一致しません。また、ホストの自律システムを運用する組織のドメインである as_domain にも一致しません。これらの値は各レコードで返されますが、検索対象ではありません。ネットワーク運用組織からホストを探す場合は、asn を使用してください。
ラベル境界に関する注意: 末尾一致はドット単位で区切られないため、domain=test.com は mytest.com で終わるホスト名にも一致します。
分類は、レコード上で type:value 形式の文字列(c2:cobalt-strike、honeypot:conpot、sector:government など)として返されます。classifications パラメータは、type または value の いずれか を受け付け、どちらを指定するかによって結果の範囲が決まります。
| 検索対象 | 指定する値 | 例 |
|---|---|---|
| ある分類タイプに該当するすべてのホスト | type | classifications=c2 — すべての C2 サーバー |
| 特定のフレームワーク、製品、またはセクター 1 つに一致するホスト | value のみ | classifications=cobalt-strike — Cobalt Strike の C2 サーバーのみ |
type:value を組み合わせた形式は指定しないでください。 classifications=c2:cobalt-strike は Cobalt Strike に絞り込まれません。コロン以降はすべて無視され、クエリはすべての c2 ホストを返します。代わりに classifications=cobalt-strike を指定してください。
有効なタイプは c2、scanner、proxy、attack-infrastructure、honeypot、mcp、cdn、ics、sector、canary-attacker です。各タイプの意味と、その配下で利用可能な値については、エンリッチメントデータ を参照してください。
date は、最後にスキャンされた日ではなく、ホスト・ポートのレコードが 最初にインデックスに登録された日 である date_added でフィルタリングします。したがって date=2026-09-13 は「この日に新たに露出したものは何か」という問いに答えます。これは、新たに出現したインフラストラクチャを追跡するうえで有用な問いです。6 月に追加され、昨日再スキャンされたホストは、引き続き 6 月の date に一致します。
標準の v3 インデックスの日付フィルターも target-intel に適用されます。
| パラメータ | フィルタリング対象 |
|---|---|
pubStartDate / pubEndDate | date_added の範囲指定。date の範囲指定版です |
lastModStartDate / lastModEndDate | インデックス自体の _timestamp(レコードが最後にインデックスに書き込まれた日時)。スキャンの timestamp より後になります |
共通パラメータの一覧については、/v3/index/{index} エンドポイントのリファレンスを参照してください。
1 ページで返されるレコードは最大 2000 件(limit)で、デフォルトは 100 件です。これは広範なクエリでは非常に重要です。一般的な製品や広く展開されている CVE は数百万件のホスト・ポートのレコードに一致することがあり、ページベースのアクセスで走査することを想定した件数をはるかに超えます。
最初の数ページを超えて取得する場合は、カーソルページネーションを使用してください。start_cursor でセッションを開始し、各レスポンスの _meta.next_cursor をたどります。
# Start a paginated session
curl -H "Authorization: Bearer <token>" \
"https://api.vulncheck.com/v3/index/target-intel?cve=CVE-2024-21887&limit=500&start_cursor"
# Continue it with the next_cursor value from the previous response
curl -H "Authorization: Bearer <token>" \
"https://api.vulncheck.com/v3/index/target-intel?cve=CVE-2024-21887&limit=500&cursor=MTc4OTQ0Mjc4NTQ4Mw=="
インデックスの一部ではなく全体が必要な場合は、ページングの代わりに オフラインバックアップ を取得してください。
2 つの API クエリパラメータ(CVE と国)を組み合わせることで、CVE の標的リストを 1 つの国に絞り込むことができます。
curl --request GET \
--url 'https://api.vulncheck.com/v3/index/target-intel?cve=CVE-2024-21887&country_code=US' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer insert_token_here'
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
vulncheck "github.com/vulncheck-oss/sdk-go-v2/v2"
)
func main() {
configuration := vulncheck.NewConfiguration()
configuration.Scheme = "https"
configuration.Host = "api.vulncheck.com"
client := vulncheck.NewAPIClient(configuration)
token := os.Getenv("VULNCHECK_API_TOKEN")
auth := context.WithValue(
context.Background(),
vulncheck.ContextAPIKeys,
map[string]vulncheck.APIKey{
"Bearer": {Key: token},
},
)
resp, httpRes, err := client.IndicesAPI.IndexTargetIntelGet(auth).Cve("CVE-2024-21887").CountryCode("US").Execute()
if err != nil || httpRes.StatusCode != 200 {
log.Fatal(err)
}
prettyJSON, err := json.MarshalIndent(resp.Data, "", " ")
if err != nil {
log.Fatalf("Failed to generate JSON: %v", err)
return
}
fmt.Println(string(prettyJSON))
}
import vulncheck_sdk
configuration = vulncheck_sdk.Configuration(host="https://api.vulncheck.com/v3")
configuration.api_key["Bearer"] = "insert_token_here"
with vulncheck_sdk.ApiClient(configuration) as api_client:
indices_client = vulncheck_sdk.IndicesApi(api_client)
api_response = indices_client.index_target_intel_get(cve="CVE-2024-21887", country_code="US")
print(api_response.data)
vulncheck index browse target-intel --cve CVE-2024-21887 --countrycode US
CLI に関する注意: vulncheck index browse で使用できるのは、インデックス共通のフラグ(--cve、--country、--countrycode、--asn、--hostname、--limit、--cursor、および日付フラグ)です。Target Intelligence 固有のフィルター(cidr、vendor、product、version、cpe、protocol、transport、port、contains_cve、confirmed、classifications、domain)は、HTTP および SDK から利用できます。
| 質問 | API コールの例 |
|---|---|
| 特定の CVE に対して脆弱なインターネット公開システムはどれですか? | ?cve=CVE-2021-36260 |
| 特定のベンダーおよび製品を使用しているインターネット公開システムはどれですか? | ?vendor=ivanti&product=connect+secure |
| 特定のベンダー、製品、および特定のバージョンを使用しているインターネット公開システムはどれですか? | ?vendor=ivanti&product=connect+secure&version=22.7.2.5367 |
| 特定の CPE 文字列に一致するインターネット公開システムはどれですか? | ?cpe=cpe:2.3:o:qnap:qts:-:*:*:*:*:*:*:* |
| CVE に高確度で一致するホストはどれですか? | ?cve=CVE-2024-21887&confirmed=true |
| 製品を実行しているものの、既知の CVE がないホストはどれですか? | ?product=tomcat&contains_cve=false |
| 国でフィルタリングするには? | ?country_code=US |
| ASN でフィルタリングするには? | ?asn=AS7018 |
| ポートでフィルタリングするには? | ?port=443 |
| プロトコルでフィルタリングするには? | ?protocol=modbus |
| IP 範囲(CIDR 表記)でフィルタリングするには? | ?cidr=203.0.113.0/24 |
| 質問 | API コールの例 |
|---|---|
| インターネット上のすべての C2 サーバーはどこにありますか? | ?classifications=c2 |
| すべての Cobalt Strike C2 サーバーはどこにありますか? | ?classifications=cobalt-strike |
| インターネット上のすべてのハニーポットはどこにありますか? | ?classifications=honeypot |
| インターネット上のすべてのカナリア攻撃者はどこにいますか? | ?classifications=canary-attacker |
| インターネット上のすべてのプロキシはどこにありますか? | ?classifications=proxy |
| 特定されたすべての攻撃インフラストラクチャ資産はどこにありますか? | ?classifications=attack-infrastructure |
| インターネット上のすべての既知のスキャナーはどこにありますか? | ?classifications=scanner |
| すべての ICS/OT 資産はどこにありますか? | ?classifications=ics |
| 政府、医療、教育、エネルギー分野のすべての資産はどこにありますか? | ?classifications=sector |
| 公開されているすべての MCP サーバーはどこにありますか? | ?classifications=mcp |
| 質問 | API コールの例 |
|---|---|
| IPv4 アドレス a.b.c.d に関する情報はありますか? | ?cidr=203.0.113.42/32 |
| IPv6 アドレス y:y:y:y:y:y:x.x.x.x に関する情報はありますか? | ?cidr=2001:4860:4860::8888 (サポート済み、IPv6 データはまだありません) |
| ホスト名に関する情報はありますか? | ?hostname=test.com |
| 組織のドメイン配下のホストに関する情報はありますか? | ?domain=test.com |
| 特定の日にインデックスに新たに追加されたものは何ですか? | ?date=2026-09-13 |