Carbon Black EDR のログを収集する

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

このドキュメントでは、AWS S3 を使用してクラウド環境とオンプレミス環境から Carbon Black EDR ログを収集する方法について説明します。パーサーは、JSON、CSV、syslog 形式のメッセージからフィールドを抽出し、正規化して UDM にマッピングします。ネットワーク接続、プロセス イベント、ファイル変更、レジストリ変更、IOC ヒットなど、さまざまな Carbon Black イベントタイプを処理し、脅威インテリジェンスとデバイス情報でデータを拡充します。

始める前に

次の前提条件を満たしていることを確認します。

  • Google SecOps インスタンス。
  • AWS IAM と S3 への特権アクセス。
  • Cloud またはオンプレミスの Carbon Black EDR への特権アクセス。

オンプレミスで Carbon Black EDR を構成する

オンプレミス用に Amazon S3 バケットを構成する

  1. バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
  2. 後で使用するために、バケットの名前リージョンを保存します。
  3. IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
  4. 作成した [ユーザー] を選択します。
  5. [セキュリティ認証情報] タブを選択します。
  6. [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
  7. [ユースケース] として [サードパーティ サービス] を選択します。
  8. [次へ] をクリックします。
  9. 省略可: 説明タグを追加します。
  10. [アクセスキーを作成] をクリックします。
  11. [CSV ファイルをダウンロード] をクリックして、[アクセスキー] と [シークレット アクセスキー] を保存し、後で使用できるようにします。
  12. [完了] をクリックします。
  13. [権限] タブを選択します。
  14. [権限ポリシー] セクションで、[権限を追加] をクリックします。
  15. [権限を追加] を選択します。
  16. [ポリシーを直接アタッチする] を選択します。
  17. AmazonS3FullAccess ポリシーを検索して選択します。
  18. [次へ] をクリックします。
  19. [権限を追加] をクリックします。

オンプレミス EDR サーバーに cb-event-forwarder をインストールする

  1. CbOpenSource リポジトリがまだ存在しない場合は、インストールします。

    cd /etc/yum.repos.d
    curl -O https://opensource.carbonblack.com/release/x86_64/CbOpenSource.repo
    
  2. YUM を使用して RPM をインストールします。

    yum install cb-event-forwarder
    
  3. EDR 7.1.0 以降を使用している場合は、次のスクリプトを実行して、EDR に必要な適切な権限を設定します。

    /usr/share/cb/integrations/event-forwarder/cb-edr-fix-permissions.sh
    

JSON ログを出力するように cb-event-forwarder を構成する

  1. 構成ファイルを開きます。

    sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.conf
    
  2. 次のパラメータを変更します。

    [event_forwarder]
    output_format=json   # Enable JSON format
    output_type=s3       # Send logs to AWS S3
    s3_bucket_name=YOUR-S3-BUCKET-NAME
    s3_region=YOUR-S3-BUCKET-NAME
    s3_access_key_id=YOUR_AWS_ACCESS_KEY
    s3_secret_access_key=YOUR_AWS_SECRET_KEY
    s3_prefix=carbonblack/edr/logs
    
  3. キーボードを使用して保存して終了するには:

    • Ctrl+X、Y、Enter の順に押します。
  4. cb-event-forwarder を起動します。

    sudo systemctl enable cb-event-forwarder
    sudo systemctl restart cb-event-forwarder
    sudo systemctl status cb-event-forwarder
    

S3 用に Carbon Black Cloud Event Forwarder を構成する

AWS S3 バケットを作成する

  1. AWS Management Console にログインします。
  2. AWS リージョンがイベント転送ツールのリージョンと一致していることを確認します。
    1. AWS コンソール ページで、リージョンを見つけます。
    2. プルダウンを使用して、イベント フォワーダーの正しいリージョンを選択します。
    3. 次のリストに、各 Carbon Black EDR URL に適用される AWS リージョンを示します。
      • "instance-alias".my.carbonblack.io - リージョン: US East(N. (バージニア州北部)(us-east-1)
      • "instance-alias".my.cbcloud.de - リージョン: ヨーロッパ(フランクフルト)(eu-central-1)
      • 「instance-alias」.my.cbcloud.sg リージョン: アジア太平洋(シンガポール)(ap-southeast-1)
  3. [サービス] を選択します。
  4. S3 コンソールに移動します。
  5. [バケットを作成] をクリックして、[バケットの作成] ウィザードを開きます。
    1. [バケット名] に、バケットの一意の名前(CB-EDR など)を入力します。
    2. [リージョン] が、先ほど選択したリージョンにデフォルト設定されていることを確認します。
    3. パブリック アクセスのブロックのデフォルトを更新して、パブリック アクセスを許可します(これは、ログを Google SecOps に取り込むために必要です)。
    4. [バケットを作成] を選択します。

イベント転送ツールがイベントを書き込めるように S3 バケットを構成する

  1. IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
  2. 作成した [ユーザー] を選択します。
  3. [セキュリティ認証情報] タブを選択します。
  4. [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
  5. [ユースケース] として [サードパーティ サービス] を選択します。
  6. [次へ] をクリックします。
  7. 省略可: 説明タグを追加します。
  8. [アクセスキーを作成] をクリックします。
  9. [CSV ファイルをダウンロード] をクリックして、[アクセスキー] と [シークレット アクセスキー] を保存し、後で使用できるようにします。
  10. [完了] をクリックします。
  11. [権限] タブを選択します。
  12. [権限ポリシー] セクションで、[権限を追加] をクリックします。
  13. [権限を追加] を選択します。
  14. [ポリシーを直接アタッチする] を選択します。
  15. AmazonS3FullAccess ポリシーを検索します。
  16. ポリシーを選択します。
  17. [次へ] をクリックします。
  18. [権限を追加] をクリックします。

EDR コンソールでイベント転送を構成する

  1. VMware Carbon Black Cloud にログインします。
  2. [イベント転送] タブに移動します。
  3. プロダクトが S3 にアップロードするイベントを有効にします。
  4. [Output and Type] に移動して、[S3] に設定します。
  5. S3 バケット名を <region>:<bucket-name> の形式で指定します(例: us-east-1:cb-edr)。
  6. INI 形式の AWS 認証情報ファイルをアップロードします。
  7. プロファイルの例を次に示します。

    AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
    AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    Default region name [None]: us-east-1
    
  8. [保存] をクリックし、サービスを再起動して変更を有効にします。

フィードを設定する

Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。

  • [SIEM 設定] > [フィード]
  • [Content Hub] > [Content Packs]

[SIEM 設定] > [フィード] でフィードを設定する

フィードを構成する手順は次のとおりです。

  1. [SIEM Settings] > [Feeds] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで [単一のフィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Carbon Black EDR Logs)。
  5. [ソースタイプ] として [Amazon S3] を選択します。
  6. [ログタイプ] として [Carbon Black EDR] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。

    • リージョン: Amazon S3 バケットが配置されているリージョン。
    • S3 URI: バケット URI。
      • s3:/BUCKET_NAME
        • BUCKET_NAME は、バケットの実際の名前に置き換えます。
    • URI is a: ログストリームの構成([単一ファイル] | [ディレクトリ] | [サブディレクトリを含むディレクトリ])に応じて URI_TYPE を選択します。
    • Source deletion options: 必要に応じて削除オプションを選択します。
    • アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー。
    • シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー。
  9. [次へ] をクリックします。

  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

コンテンツ ハブからフィードを設定する

次のフィールドに値を指定します。

  • リージョン: Amazon S3 バケットが配置されているリージョン。
  • S3 URI: バケット URI。
    • s3:/BUCKET_NAME
      • BUCKET_NAME は、バケットの実際の名前に置き換えます。
  • URI is a: ログストリームの構成([単一ファイル] | [ディレクトリ] | [サブディレクトリを含むディレクトリ])に応じて URI_TYPE を選択します。
  • Source deletion options: 必要に応じて削除オプションを選択します。
  • アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー。
  • シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー。

詳細オプション

  • フィード名: フィードを識別する事前入力された値。
  • ソースタイプ: Google SecOps にログを収集するために使用される方法。
  • アセットの名前空間: フィードに関連付けられた名前空間。
  • Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
action security_result.detection_fields[?key == 'action'].value 未加工ログの action フィールドの値。
cb_server intermediary.hostname 未加工ログの cb_server フィールドの値。
cb_version metadata.product_version 未加工ログの cb_version フィールドの値。
child_pid target.process.pidingress.event.childproc イベントの場合) typeingress.event.childproc の場合の未加工ログの child_pid フィールドの値。
child_process_guid target.process.product_specific_process_idingress.event.childproc イベントの場合) typeingress.event.childproc の場合、未加工ログの child_process_guid フィールドの値と「CB:」が連結されます。
child_username target.user.useridingress.event.childproc イベントの場合) typeingress.event.childproc の場合の未加工ログの child_username フィールドの値。
childproc_guid target.process.product_specific_process_idendpoint.event.procstart イベントの場合) typeendpoint.event.procstart の場合、未加工ログの childproc_guid フィールドの値と「CB:」が連結されます。
childproc_hash.0 target.process.file.md5endpoint.event.procstart イベントの場合) typeendpoint.event.procstart の場合、未加工ログの childproc_hash 配列の最初の要素。
childproc_hash.1 target.process.file.sha256endpoint.event.procstart イベントの場合) typeendpoint.event.procstart の場合、未加工のログの childproc_hash 配列の 2 番目の要素。
childproc_name target.process.file.full_pathendpoint.event.procstart イベントの場合) typeendpoint.event.procstart の場合の未加工ログの childproc_name フィールドの値。
childproc_pid target.process.pidendpoint.event.procstart イベントの場合) typeendpoint.event.procstart の場合の未加工ログの childproc_pid フィールドの値。
childproc_publisher.0.name security_result.detection_fields[?key == 'childproc_publisher_name'].valueendpoint.event.procstart イベントの場合) typeendpoint.event.procstart の場合、未加工ログの childproc_publisher.0.name の値と連結された「childproc_publisher_name:」。
childproc_publisher.0.state security_result.detection_fields[?key == 'childproc_publisher_state'].valueendpoint.event.procstart イベントの場合) typeendpoint.event.procstart の場合、未加工ログの childproc_publisher.0.state の値と連結された「childproc_publisher_state:」。
childproc_reputation security_result.detection_fields[?key == 'childproc_reputation'].valueendpoint.event.procstart イベントの場合) typeendpoint.event.procstart の場合の未加工ログの childproc_reputation フィールドの値。
childproc_username target.user.useridendpoint.event.procstart イベントの場合) typeendpoint.event.procstart の場合の未加工ログの childproc_username フィールドの値。
clientIp principal.ipprincipal.asset.ip 未加工ログの clientIp フィールドの値。
cmdline target.process.command_linefeed.query.hit.process イベントと feed.storage.hit.process イベントの場合)、additional.fields[?key == 'cmdline_*'].value.string_valuewatchlist.storage.hit.process イベントの場合) typefeed.query.hit.process または feed.storage.hit.process の場合の未加工ログの cmdline フィールドの値。watchlist.storage.hit.process イベントの場合、キー「cmdline_*」で additional.fields に保存されます。
command_line target.process.command_lineingress.event.procstart イベントの場合) typeingress.event.procstart の場合の未加工ログの command_line フィールドの値。
comms_ip intermediary.ip 未加工ログの comms_ip フィールドの値。
computer_name principal.hostnameprincipal.asset.hostname 未加工ログの computer_name フィールドの値。
crossproc_api additional.fields[?key == 'crossproc_api'].value.string_valueendpoint.event.apicall イベントの場合) typeendpoint.event.apicall の場合の未加工ログの crossproc_api フィールドの値。
crossproc_guid additional.fields[?key == 'crossproc_guid'].value.string_valueendpoint.event.crossproc イベントの場合) typeendpoint.event.crossproc の場合の未加工ログの crossproc_guid フィールドの値。
crossproc_hash.0 additional.fields[?key == 'crossproc_md5'].value.string_valueendpoint.event.crossproc イベントの場合) typeendpoint.event.crossproc の場合、未加工ログの crossproc_hash 配列の最初の要素。
crossproc_hash.1 additional.fields[?key == 'crossproc_sha256'].value.string_valueendpoint.event.crossproc イベントの場合) typeendpoint.event.crossproc の場合、未加工のログの crossproc_hash 配列の 2 番目の要素。
crossproc_name target.process.file.full_pathendpoint.event.crossproc イベントの場合) typeendpoint.event.crossproc の場合の未加工ログの crossproc_name フィールドの値。
crossproc_publisher.0.name security_result.detection_fields[?key == 'crossproc_publisher_name'].valueendpoint.event.crossproc イベントの場合) typeendpoint.event.crossproc の場合、未加工ログの crossproc_publisher.0.name の値と連結された「crossproc_publisher_name:」。
crossproc_publisher.0.state security_result.detection_fields[?key == 'crossproc_publisher_state'].valueendpoint.event.crossproc イベントの場合) typeendpoint.event.crossproc の場合、未加工ログの crossproc_publisher.0.state の値と連結された「crossproc_publisher_state:」。
crossproc_reputation additional.fields[?key == 'crossproc_reputation'].value.string_valueendpoint.event.crossproc イベントの場合) typeendpoint.event.crossproc の場合の未加工ログの crossproc_reputation フィールドの値。
crossproc_target additional.fields[?key == 'crossproc_target'].value.string_valueendpoint.event.crossproc イベントの場合) typeendpoint.event.crossproc の場合の未加工ログの crossproc_target フィールドの値。文字列「true」または「false」に変換されます。

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