ビュー:
Trend Threat Intelligenceフィードは、TAXII 2.1準拠の表現状態転送 (REST) アプリケーションプログラミングインターフェース (API) を使用してリアルタイムの脅威インテリジェンスを提供します。このAPIにより、キュレーションされた構造化脅威データをセキュリティワークフローやツールに統合することができます。

手順

  1. Trend Vision OneAPIトークンを必ず取得してください。Trend Threat Intelligence FeedのAPI設定を参照してください。
  2. 地域のTAXII 2.1ディスカバリーURLを特定してください。
    地域
    TAXIIフィードURL
    米国
    https://api.xdr.trendmicro.com/v3.0/threatintel/feeds/taxii2
    欧州連合
    https://api.xdr.trendmicro.com/v3.0/threatintel/feeds/taxii2
    シンガポール
    https://api.sg.xdr.trendmicro.com/v3.0/threatintel/feeds/taxii2
    日本
    https://api.xdr.trendmicro.co.jp/v3.0/threatintel/feeds/taxii2
    オーストラリア
    https://api.au.xdr.trendmicro.com/v3.0/threatintel/feeds/taxii2
    インド
    https://api.in.xdr.trendmicro.com/v3.0/threatintel/feeds/taxii2
    アラブ首長国連邦
    https://api.mea.xdr.trendmicro.com/v3.0/threatintel/feeds/taxii2
  3. リクエストにこれらの必須ヘッダーを含めてください:
    • Authorization: Bearer <yourvisiononeapitoken>
    • Accept: application/taxii+json; version=2.1
  4. 上記の地域TAXII 2.1 URLテーブルを使用して、サーバとAPIルートエンドポイントを照会します。コレクションIDは特定の脅威データオブジェクトを対象としています。
    • GET <TAXII_DISCOVERY_URL>
    • APIルート情報を取得: GET <TAXII_DISCOVERY_URL>/api/collections
    • コレクションを一覧表示: GET <TAXII_DISCOVERY_URL>/api/collections
    目的
    APIパス
    URLパラメータ
    データ型
    パラメータの説明
    サーバ検出
    GET /taxii2/
    APIルート情報
    GET /taxii2/api/
    コレクションを取得
    GET /taxii2/api/collections/
    コレクションを取得
    GET /taxii2/api/collections/91a7b528-80eb-42ed-a74d-c6fbd5a26116
    STIXオブジェクトを取得
    GET /taxii2/api/collections/91a7b528-80eb-42ed-a74d-c6fbd5a26116/objects/
    added_after
    文字列、ISO8601タイムスタンプ
    指定された値より大きいdate_addedを持つオブジェクトのみを返す
    制限
    文字列
    ページごとのオブジェクト数
    デフォルト: 1,000
    最小: 1,000
    最大: 10,000
    一致[id]
    文字列
    特定のオブジェクトIDでフィルタ
    一致[type]
    文字列
    オブジェクトタイプでフィルタ
    次へ
    文字列
    次の結果ページを取得するためのページネーショントークン
    STIXオブジェクトを取得
    GET /taxii2/api/collections/91a7b528-80eb-42ed-a74d-c6fbd5a26116/objects/{object_id}
    added_after
    文字列、ISO8601タイムスタンプ
    指定された値より大きいdate_addedを持つオブジェクトのみを返す
    オブジェクトマニフェストを取得
    GET /taxii2/api/collections/91a7b528-80eb-42ed-a74d-c6fbd5a26116/manifest/
    added_after
    文字列、ISO8601タイムスタンプ
    指定された値より大きいdate_addedを持つオブジェクトのみを返す
    制限
    文字列
    ページごとのオブジェクト数
    デフォルト: 1,000
    最小: 1,000
    最大: 10,000
    一致[id]
    文字列
    特定のオブジェクトIDでフィルタ
    一致[type]
    文字列
    オブジェクトタイプでフィルタ
    次へ
    文字列
    次の結果ページを取得するためのページネーショントークン
  5. 以下のPythonの例を参照して、オブジェクトを認証し、カウントしてください。
    パッケージ:
    import requests
    from taxii2client.v21 import Server
    
    DISCOVERY_URL = "<your regional TAXII discovery URL>"
    TOKEN = "<your Vision One API token>"
    
    class BearerAuth(requests.auth.AuthBase):
        def __init__(self, token):
            self.token = token
        def __call__(self, r):
            r.headers["Authorization"] = f"Bearer {self.token}"
            return r
    
    # Get server
    server = Server(DISCOVERY_URL, auth=BearerAuth(TOKEN))
    print(f'Server title: {server.title}')
    print(f'API Roots: {server.api_roots}')
    
    # Get API root
    api_root = server.api_roots[0]
    print(f'\nAPI Root title: {api_root.title}')
    
    # Get collections
    collections = api_root.collections
    print('\nCollections:')
    for col in collections:
        print(f'- {col.title} (id: {col.id})')
    
    # Get collection
    collection = collections[0]
    # or collection = Collection(f'{DISCOVERY_URL}/api/collections/91a7b528-80eb-42ed-a74d-c6fbd5a26116/, auth=BearerAuth(TOKEN))
    print(f'\nCollection Info:\nID: {collection.id}\nTitle: {collection.title}')
    
    # Get manifest
    manifest = collection.get_manifest()
    print(f'\nManifest:\n{json.dumps(manifest, indent=2)}')
    
    # Get a STIX Object
    try:
        empty_object = collection.get_object('object-id')
        print(f'\nSTIX Object (empty):\n{json.dumps(empty_object, indent=2)}')
    except Exception as error:
        print(f'Object is not found: {error}')
    
    # Get STIX objects, single page
    objects = collection.get_objects()
    print('\nSTIX Objects:')
    for obj in objects['objects']:
        print(json.dumps(obj, indent=2))
    
    # Get STIX objects with match["id"]
    objs_by_id = collection.get_objects(id='campaign--8e3e4a78-1b6c-4b4c-97c0-d90f5fcbdc12')
    print(f'\nSTIX Objects (with match["id"]):\n{json.dumps(objs_by_id, indent=2)}')
    
    # Get STIX objects with match["type"]
    objs_by_type = collection.get_objects(type='campaign')
    print(f'\nSTIX Objects (with match["type"]):\n{json.dumps(objs_by_type, indent=2)}')
    
    # Get STIX objects with as_pages
    print('\nSTIX Objects (as_pages):')
    yesterday = datetime.datetime.now() - datetime.timedelta(days=1)
    for i, bundle in enumerate(as_pages(collection.get_objects, added_after=yesterday, per_request=1000), 1):
        print(f'Page {i}: {len(bundle["objects"])} {bundle["objects"][-1]["created"]}')
    

次のステップ

OpenCTIにTrend Threat IntelligenceフィードをTAXII2コネクタを使用して統合します。TAXII2コネクタを使用してOpenCTIにTrend Threat Intelligenceフィードを追加するを参照してください。