Darktrace のログを収集する

以下でサポートされています。

このドキュメントでは、Bindplane エージェントを使用して Darktrace ログを Google Security Operations に取り込む方法について説明します。

Darktrace は、脅威と異常をリアルタイムで検出する AI を活用したサイバーセキュリティ プラットフォームです。パーサーは、CEF 形式と JSON 形式の両方の Darktrace ログを処理し、フィールドを抽出して統合データモデル(UDM)にマッピングします。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • Windows Server 2016 以降、または systemd を使用する Linux ホスト
  • Bindplane エージェントと Darktrace アプライアンス間のネットワーク接続
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • Darktrace ウェブ UI への特権アクセス

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  3. Ingestion Authentication File をダウンロードします。
  4. Bindplane エージェントがインストールされるシステムにファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

Bindplane エージェントをインストールする

次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。

Windows のインストール

  1. 管理者としてコマンド プロンプトまたは PowerShell を開きます。
  2. 次のコマンドを実行します。

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sc query observiq-otel-collector
    

    サービスは RUNNING と表示されます。

Linux のインストール

  1. root 権限または sudo 権限でターミナルを開きます。
  2. 次のコマンドを実行します。

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sudo systemctl status observiq-otel-collector
    

    サービスが [active (running)] と表示されます。

その他のインストール リソース

その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。

syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

構成ファイルを見つける

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

構成ファイルを編集します。

  • config.yaml の内容全体を次の構成に置き換えます。

    receivers:
        tcplog:
            listen_address: "0.0.0.0:10282"
    
    exporters:
        chronicle/darktrace:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: DARKTRACE
            raw_log_field: body
    
    service:
        pipelines:
            logs/darktrace_to_chronicle:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/darktrace
    

構成パラメータ

各プレースホルダを次のように置き換えます。

  • レシーバーの構成:

    • listen_address: リッスンする IP アドレスとポート:
      • すべてのインターフェースでリッスンする 0.0.0.0(推奨)
      • ポート 10282 はデフォルトの Darktrace CEF syslog ポートです(必要に応じて調整してください)。
  • エクスポータの構成:

    • creds_file_path: 取り込み認証ファイルのフルパス:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: Google SecOps コンソールからコピーしたお客様 ID
    • endpoint: リージョナル エンドポイント URL:
      • 米国: malachiteingestion-pa.googleapis.com
      • ヨーロッパ: europe-malachiteingestion-pa.googleapis.com
      • アジア: asia-southeast1-malachiteingestion-pa.googleapis.com
      • 完全なリストについては、リージョン エンドポイントをご覧ください。

構成ファイルを保存する

  • 編集後、ファイルを保存します。
    • Linux: Ctrl+OEnterCtrl+X の順に押します。
    • Windows: [ファイル>保存] をクリックします。

Bindplane エージェントを再起動して変更を適用する

  • Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。

    sudo systemctl restart observiq-otel-collector
    
    1. サービスが実行されていることを確認します。

      sudo systemctl status observiq-otel-collector
      
    2. ログでエラーを確認します。

      sudo journalctl -u observiq-otel-collector -f
      
  • Windows で Bindplane エージェントを再起動するには、次のいずれかのオプションを選択します。

    • 管理者としてコマンド プロンプトまたは PowerShell を開きます。

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • サービス コンソール:

      1. Win+R キーを押して「services.msc」と入力し、Enter キーを押します。
      2. observIQ OpenTelemetry Collector を見つけます。
      3. 右クリックして [再起動] を選択します。
      4. サービスが実行されていることを確認します。

        sc query observiq-otel-collector
        
      5. ログでエラーを確認します。

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Darktrace で syslog を構成する

  1. Darktrace ウェブ UI にログインします。
  2. [管理者> システム構成] に移動します。
  3. [アラート設定を確認] をクリックします。
  4. 次の構成の詳細を入力します。
    • CEF Syslog Alerts: [True] を選択します。
    • CEF Syslog サーバー: Bindplane の IP アドレスを入力します。
    • CEF Syslog サーバー ポート: Bindplane ポート番号(10282 など)を入力します。
    • CEF Syslog TCP アラート: [True] を選択します。
  5. [保存] をクリックします。

サポートされている Darktrace のサンプルログ

  • SYSLOG + KV(CEF)

    {
    "acknowledged": false,
    "commentCount": 0,
    "pbid": 900000001,
    "time": 1604055367000,
    "creationTime": 1604055367000,
    "model": {
        "name": "Compromise::Agent Beacon to New Endpoint",
        "uuid": "dfd6f10b-b91c-4244-9fd5-7c35caf21b33",
        "description": "A device is initiating multiple connections to a new external endpoint...",
        "priority": 2,
        "category": "Informational",
        "mitre": {
        "tactics": [
            "command-and-control"
        ],
        "techniques": [
            "T1071.001"
        ]
        }
    },
    "triggeredComponents": [
        {
        "time": 1677679818000,
        "ip": " ",
        "port": 443,
        "metric": {
            "name": "externalconnections"
        },
        "triggeredFilters": [
            {
            "filterType": "Connection hostname",
            "trigger": {
                "value": "beacon.external.io"
            }
            }
        ]
        }
    ],
    "score": 0.85,
    "device": {
        "did": 90001,
        "macaddress": " ",
        "ip": " ",
        "hostname": "user-laptop-1"
    }
    }
    
  • SYSLOG + JSON

    {
    "dpi_engine": "dt-sensor-101",
    "proto": "tcp",
    "source_ip": " ",
    "source_port": 51000,
    "dest_ip": " ",
    "dest_port": 389,
    "src": " ",
    "dst": " ",
    "details": "AP request: srealm is [TESTDOMAIN.LOCAL], service is [LDAP/DC99.testdomain.local/testdomain.local], ST cipher is [aes256-cts-hmac-sha1-96]",
    "epochdate": 1690471502.2252,
    "@host": "log-collector-host",
    "uid": "ABCDEFGHIJ1234567890",
    "note": "KERBEROS::App",
    "@type": "notice"
    }
    

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
darktraceUrl security_result.url_back_to_product 値は darktraceUrl フィールドから取得されます。
darktrace_host observer.hostname 値が IP アドレスでない場合、値は darktrace_host フィールドから取得されます。
darktrace_ip observer.ip 値は darktrace_ip フィールドから取得されます。
darktrace_user observer.user.userid 値は darktrace_user フィールドから取得されます。
説明 security_result.summary、metadata.description 値は description フィールドから取得されます。
device.customFields.DT-AUTO.macaddress principal.mac 値は device.customFields.DT-AUTO.macaddress フィールドから取得されます。
device.did principal.asset.asset_id 値は device.did フィールドから取得され、文字列に変換されて Device ID: が接頭辞として付加されます。
device.firstSeen principal.asset.first_seen_time 値は device.firstSeen フィールドから取得され、文字列に変換されて、ミリ秒単位の UNIX タイムスタンプとして解析されます。
device.hostname principal.hostname、principal.asset.hostname 値は device.hostname フィールドから取得されます。
device.ip principal.ip、principal.asset.ip 値が IP アドレス形式と一致する場合、値は device.ip フィールドから取得されます。
device.ips.0.subnet additional.fields.subnet 値は device.ips.0.subnet フィールドから取得され、subnet という接頭辞が付加されます。
device.ips.ip principal.ip、principal.asset.ip この値は、リスト内の各 IP アドレスの device.ips.ip フィールドから取得されます。
device.lastSeen principal.asset.last_discover_time 値は device.lastSeen フィールドから取得され、文字列に変換されて、ミリ秒単位の UNIX タイムスタンプとして解析されます。
device.macaddress principal.mac 値は device.macaddress フィールドから取得されます。
device.objecttype principal.asset.type 値が device の場合、UDM フィールドは WORKSTATION に設定されます。
device.sid principal.resource.attribute.labels.sid 値は device.sid フィールドから取得され、文字列に変換されます。
device.typelabel principal.resource.attribute.labels.typelabel 値は device.typelabel フィールドから取得されます。
device.typename principal.resource.attribute.labels.typename 値は device.typename フィールドから取得されます。
dst target.ip、target.asset.ip 値は dst フィールドから取得されます。
dpt target.port 値は dpt フィールドから取得され、整数に変換されます。
dvc principal.ip、principal.asset.ip dvc の値が IP アドレスの場合、UDM フィールドに追加されます。
dvchost principal.hostname、principal.asset.hostname 値は dvchost フィールドから取得されます。
endpoint target.url 値は endpoint フィールドから取得されます。
event_time metadata.event_timestamp 値は event_time フィールドから取得され、ISO8601 タイムスタンプとして解析されます。
externalId metadata.product_log_id 値は externalId フィールドから取得されます。
incidentEventUrl principal.url 値は incidentEventUrl フィールドから取得されます。
ip principal.ip、principal.asset.ip 値が IP アドレス形式と一致する場合、値は ip フィールドから取得されます。
issue_msg security_result.summary 値は issue_msg フィールドから取得されます。
メッセージ security_result.description 値は message フィールドから取得されます。
method network.http.method 値は method フィールドから取得されます。
model.description metadata.description 値は model.description フィールドから取得されます。
model.name metadata.product_event_type 値は model.name フィールドから取得されます。
model.now.category security_result.severity 値が critical の場合、UDM フィールドは CRITICAL に設定されます。値が Informational の場合、UDM フィールドは INFORMATIONAL に設定されます。値が Suspicious の場合、UDM フィールドは HIGH に設定され、カテゴリは NETWORK_SUSPICIOUS に設定されます。
model.now.description metadata.description 値は model.now.description フィールドから取得されます。
model.now.message security_result.description 値は model.now.message フィールドから取得されます。
model.now.name metadata.product_event_type 値は model.now.name フィールドから取得されます。
model.now.pid principal.process.pid 値は model.now.pid フィールドから取得され、文字列に変換されます。
model.now.uuid principal.user.userid 値は model.now.uuid フィールドから取得され、イベントタイプは USER_UNCATEGORIZED に設定されます。
model.pid principal.process.pid 値は model.pid フィールドから取得され、文字列に変換されます。
model.then.description principal.resource.attribute.labels.Model Then Description 値は model.then.description フィールドから取得されます。
model.then.name principal.resource.attribute.labels.Model Then Name 値は model.then.name フィールドから取得されます。
model.then.pid principal.resource.attributes.labels.Model Then Pid 値は model.then.pid フィールドから取得され、文字列に変換されます。
model.then.uuid principal.resource.attribute.labels.Model Then UUID 値は model.then.uuid フィールドから取得されます。
model.uuid principal.user.userid 値は model.uuid フィールドから取得され、イベントタイプは USER_UNCATEGORIZED に設定されます。
relatedBreaches.0.modelName security_result.description 値は relatedBreaches.0.modelName フィールドから取得されます。
スコア security_result.priority、security_result.priority_details 値が 0.8 ~ 1 の場合、優先度は HIGH_PRIORITY に設定されます。値が 0.5 ~ 0.79 の場合、優先度は MEDIUM_PRIORITY に設定されます。値が 0 ~ 0.49 の場合、優先度は LOW_PRIORITY に設定されます。優先度の詳細は、Score : の後に score の値を文字列に変換したものが設定されます。
重要度 security_result.severity 値が 2 の場合、UDM フィールドは MEDIUM に設定されます。値が 2 より大きい場合、UDM フィールドは HIGH に設定されます。
shost principal.hostname、principal.asset.hostname 値は shost フィールドから取得されます。
smac principal.mac 値は smac フィールドから取得されます。
src principal.ip、principal.asset.ip 値は src フィールドから取得されます。
ステータス network.http.response_code 値は status フィールドから取得され、文字列に変換されます。
概要 metadata.description 値は summary フィールドから取得されます。
時間 値は time フィールドから取得され、文字列に変換されて、ミリ秒単位の UNIX タイムスタンプとして解析されます。
timestamp 値は timestamp フィールドから取得され、ISO8601 タイムスタンプまたはミリ秒単位の UNIX タイムスタンプとして解析されます。
title security_result.summary 値は title フィールドから取得されます。
triggeredComponents.ip intermediary.ip 値が IP アドレス形式と一致する場合、値は triggeredComponents.ip フィールドから取得されます。
triggeredComponents.port intermediary.port 値は triggeredComponents.port フィールドから取得され、整数に変換されます。
ユーザー名 principal.user.userid 値は username フィールドから取得されます。
metadata.vendor_name DARKTRACE に設定します。
metadata.product_name DCIP に設定します。
metadata.log_type DARKTRACE に設定します。
network.ip_protocol issue_msgUDP が含まれていない場合、TCP に設定します。それ以外の場合は UDP に設定します。
security_result.action status401 の場合は BLOCK に設定し、それ以外の場合は ALLOW に設定します。
security_result.severity INFORMATIONAL に設定します。
network.application_protocol method が空でない場合は、HTTP に設定します。
metadata.event_type method が空でない場合は、NETWORK_HTTP に設定します。descriptionlogged into \\\\S+ over ssh が含まれている場合、USER_LOGIN に設定します。target_ip が空でない場合は、NETWORK_CONNECTION に設定します。それ以外の場合は STATUS_UPDATE に設定します。
extensions.auth.type descriptionlogged into \\\\S+ over ssh が含まれている場合、MACHINE に設定します。
security_result.category issue_msgExfiltration が含まれている場合、DATA_EXFILTRATION に設定します。issue_msgCompromise が含まれている場合、NETWORK_MALICIOUS に設定します。それ以外の場合は NETWORK_SUSPICIOUS に設定します。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。