Carbon Black App Control 로그 수집

다음에서 지원:

이 문서에서는 Carbon Black App Control 로그를 수집하는 방법을 설명합니다. 파서는 CEF 및 JSON 형식을 모두 지원합니다. 먼저 입력을 JSON으로 파싱하려고 시도합니다. 실패하면 입력을 CEF로 취급하고 텍스트 대체를 실행하고 CEF 필드를 추출하여 UDM에 매핑하고 이벤트 유형을 GENERIC_EVENT로 설정합니다. 그렇지 않으면 별도의 JSON별 UDM 매핑 포함 파일을 사용합니다.

시작하기 전에

  • Google Security Operations 인스턴스가 있는지 확인합니다.
  • Windows 2016 이상 또는 systemd를 사용하는 Linux 호스트를 사용하고 있는지 확인합니다.
  • 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
  • Carbon Black App Control (CB Protection) 서버 (버전 8.x 이상 권장)
  • Carbon Black App Control에 대한 권한이 있는지 확인합니다.

Google SecOps 처리 인증 파일 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 수집 에이전트로 이동합니다.
  3. 처리 인증 파일을 다운로드합니다. Bindplane가 설치될 시스템에 파일을 안전하게 저장합니다.

Google SecOps 고객 ID 가져오기

  1. Google SecOps 콘솔에 로그인합니다.
  2. SIEM 설정 > 프로필로 이동합니다.
  3. 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.

Bindplane 에이전트 설치

Windows 설치

  1. 관리자 권한으로 명령 프롬프트 또는 PowerShell을 엽니다.
  2. 다음 명령어를 실행합니다.

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux 설치

  1. 루트 또는 sudo 권한으로 터미널을 엽니다.
  2. 다음 명령어를 실행합니다.

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

추가 설치 리소스

Syslog를 수집하고 Google SecOps로 전송하도록 Bindplane 에이전트 구성

  1. 구성 파일에 액세스합니다.

    1. config.yaml 파일을 찾습니다. 일반적으로 Linux의 /etc/bindplane-agent/ 디렉터리 또는 Windows의 설치 디렉터리에 있습니다.
    2. 텍스트 편집기 (예: nano, vi, 메모장)를 사용하여 파일을 엽니다.
  2. 다음과 같이 config.yaml 파일을 수정합니다.

    receivers:
        tcplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:11592"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: JSON
                namespace: cb_app_control
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
    
  3. 인프라에서 필요에 따라 포트와 IP 주소를 바꿉니다.

  4. <customer_id>를 실제 고객 ID로 바꿉니다.

  5. /path/to/ingestion-authentication-file.jsonGoogle SecOps 처리 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로 업데이트합니다.

Bindplane 에이전트를 다시 시작하여 변경사항 적용

  • Linux에서 Bindplane 에이전트를 다시 시작하려면 다음 명령어를 실행합니다.

    sudo systemctl restart bindplane-agent
    
  • Windows에서 Bindplane Agent를 다시 시작하려면 서비스 콘솔을 사용하거나 다음 명령어를 입력하면 됩니다.

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Syslog 로그를 전송하도록 CB 앱 제어 구성

  1. 관리자 계정으로 CB 앱 제어 콘솔에 로그인합니다.
  2. 관리 > 시스템 구성 > 외부 로깅으로 이동합니다.
  3. 외부 이벤트 로깅 섹션에서 다음을 수행합니다.
    • Syslog 로깅 사용 설정: Syslog 사용 설정 체크박스를 선택합니다.
    • 서버 주소: <Bindplane Server IP>.
    • 포트: <Bindplane Server PORT>.
    • 프로토콜: TCP를 선택합니다.
    • Syslog 형식: JSON을 선택합니다.
  4. 이벤트 로깅 옵션에서 전송할 로그 유형을 선택합니다.
    • 정책 위반
    • 파일 무결성 모니터링 (FIM) 이벤트
    • 사용자 인증 이벤트
    • 위협 인텔리전스 데이터
  5. 저장을 클릭합니다.

UDM 매핑 표

로그 필드 UDM 매핑 논리
ABId principal.asset.asset_id JSON 로그의 ABIdPRODUCT_SPECIFIC_ID:{ABId}-{Bit9Server} 형식의 애셋 ID의 일부로 사용됩니다.
Bit9Server principal.asset.asset_id ABId와 함께 사용자의 저작물 ID의 일부로 사용됩니다. metadata.url_back_to_product 필드를 구성하는 데도 사용됩니다.
CommandLine about.process.command_line 직접 매핑됩니다.
EventType metadata.product_event_type 대괄호 안에 해당하는 EventTypeId와 매핑됩니다 (예: [5] - Discovery).
EventTypeId metadata.product_event_type EventType와 함께 사용하여 metadata.product_event_type를 채웁니다.
EventSubType metadata.description metadata.description 필드에 추가되었습니다.
EventSubTypeId metadata.description 명시적으로 매핑되지는 않지만 파서의 내부 로직에 따라 설명에 기여할 수 있습니다.
externalId metadata.product_log_id 직접 매핑됩니다.
FileHash about.file.sha256 직접 매핑됩니다.
FileName additional.fields (FileName 키 포함) 추가 입력란으로 추가되었습니다. 일부 이벤트의 경우 metadata.description의 파일 정보의 일부로 사용됩니다.
FilePath about.file.full_path 직접 매핑됩니다.
FileThreat additional.fields (fileThreat 키 포함) 추가 입력란으로 추가되었습니다.
FileTrust additional.fields (fileTrust 키 포함) 추가 입력란으로 추가되었습니다.
HostId principal.asset.asset_id metadata.url_back_to_product에서 제품으로 돌아가는 URL을 구성하는 데 사용됩니다.
HostName target.hostname 직접 매핑됩니다.
HostIP target.ip 직접 매핑됩니다.
Message metadata.description 직접 매핑됩니다.
PathName about.file.full_path 직접 매핑됩니다.
Platform target.platform enum 값 WINDOWS에 매핑됩니다.
Policy additional.fields (Policy 키 포함) 추가 입력란으로 추가되었습니다.
PolicyId additional.fields (PolicyId 키 포함) 추가 입력란으로 추가되었습니다.
ProcessKey additional.fields (ProcessKey 키 포함) 추가 입력란으로 추가되었습니다.
ProcessPath about.process.command_line 직접 매핑됩니다.
ProcessPathName about.process.command_line 직접 매핑됩니다.
ProcessThreat additional.fields (ProcessThreat 키 포함) 추가 입력란으로 추가되었습니다.
ProcessTrust additional.fields (ProcessTrust 키 포함) 추가 입력란으로 추가되었습니다.
RuleName additional.fields (ruleName 키 포함) 추가 입력란으로 추가되었습니다.
Timestamp metadata.event_timestamp 직접 매핑됩니다.
UserName target.user.user_display_name 직접 매핑됩니다.
UserSid principal.user.userid 직접 매핑됩니다.
agent.ephemeral_id observer.labels (ephemeral_id 키 포함) 관찰자 라벨로 추가되었습니다.
agent.name principal.hostname, observer.hostname, observer.user.userid 여러 필드에 매핑됩니다.
agent.type observer.application 직접 매핑됩니다.
agent.version metadata.product_version JSON 로그에 직접 매핑됩니다. CEF 로그의 경우 CEF 메시지에서 추출됩니다.
cat security_result.category_details 직접 매핑됩니다.
cs1 additional.fields (키 rootHash 또는 다른 cs1Label 사용) cs1Label로 정의된 키를 사용하여 추가 필드로 추가되었습니다.
cs1Label additional.fields cs1로 채워지는 추가 필드의 키로 사용됩니다.
cs2 additional.fields (키 installerFilename 또는 다른 cs2Label 포함) cs2Label로 정의된 키가 있는 추가 필드로 추가되었습니다.
cs2Label additional.fields cs2로 채워지는 추가 필드의 키로 사용됩니다.
cs3 additional.fields (키 Policy 또는 다른 cs3Label 포함) cs3Label로 정의된 키가 있는 추가 필드로 추가되었습니다.
cs3Label additional.fields cs3로 채워지는 추가 필드의 키로 사용됩니다.
cs5 additional.fields (키 ruleName 또는 다른 cs5Label 포함) cs5Label로 정의된 키가 있는 추가 필드로 추가되었습니다.
cs5Label additional.fields cs5로 채워지는 추가 필드의 키로 사용됩니다.
cfp1 additional.fields (키 fileTrust 또는 다른 cfp1Label 사용) cfp1Label로 정의된 키가 있는 추가 필드로 추가되었습니다.
cfp1Label additional.fields cfp1로 채워지는 추가 필드의 키로 사용됩니다.
cfp2 additional.fields (키 processTrust 또는 다른 cfp2Label 사용) cfp2Label로 정의된 키를 사용하여 추가 필드로 추가되었습니다.
cfp2Label additional.fields cfp2로 채워지는 추가 필드의 키로 사용됩니다.
deviceProcessName about.process.command_line 직접 매핑됩니다.
dhost target.hostname 직접 매핑됩니다.
dst target.ip 직접 매핑됩니다.
duser target.user.user_display_name 직접 매핑됩니다.
dvchost about.hostname 직접 매핑됩니다.
eventId additional.fields (eventId 키 포함) 추가 입력란으로 추가되었습니다.
fileHash about.file.sha256 직접 매핑됩니다.
flexString1 additional.fields (fileThreat 키 또는 다른 flexString1Label 사용) flexString1Label로 정의된 키를 사용하여 추가 필드로 추가되었습니다.
flexString1Label additional.fields flexString1로 채워지는 추가 필드의 키로 사용됩니다.
flexString2 additional.fields (processThreat 키 또는 다른 flexString2Label 사용) flexString2Label로 정의된 키를 사용하여 추가 필드로 추가되었습니다.
flexString2Label additional.fields flexString2로 채워지는 추가 필드의 키로 사용됩니다.
fname additional.fields (fname 키 포함) 추가 입력란으로 추가되었습니다. 일부 이벤트의 경우 metadata.description의 파일 정보의 일부로 사용됩니다.
host.architecture target.asset.hardware.cpu_platform 직접 매핑됩니다.
host.hostname target.asset.asset_id 타겟 애셋 ID (Host Id: {host.hostname})의 일부로 사용됩니다. target.hostname에 매핑되기도 합니다.
host.id target.asset.asset_id 타겟 애셋 ID (Host Id: {host.id})의 일부로 사용됩니다.
host.ip target.asset.ip 직접 매핑됩니다.
host.mac target.mac 직접 매핑됩니다.
host.name target.hostname 직접 매핑됩니다.
host.os.build target.platform_patch_level 직접 매핑됩니다.
host.os.kernel target.platform_patch_level target.platform_patch_level에 추가되었습니다.
host.os.platform target.platform enum 값 WINDOWS에 매핑됩니다.
host.os.type target.platform enum 값 WINDOWS에 매핑됩니다.
host.os.version target.platform_version 직접 매핑됩니다.
log.file.path target.file.full_path 직접 매핑됩니다.
metadata.event_type metadata.event_type CEF 로그의 경우 GENERIC_EVENT로, JSON 로그의 경우 SYSTEM_AUDIT_LOG_UNCATEGORIZED로 설정합니다.
metadata.log_type metadata.log_type CB_EDR로 설정합니다.
metadata.product_log_id metadata.product_log_id CEF 로그의 externalId에서 매핑됩니다. JSON 로그에는 적용되지 않습니다.
metadata.product_name metadata.product_name CEF 로그의 경우 App Control로, JSON 로그의 경우 CB_APP_CONTROL로 설정합니다.
metadata.product_version metadata.product_version CEF 로그의 CEF 메시지에서 추출됩니다. JSON 로그의 agent.version에서 매핑되었습니다.
metadata.vendor_name metadata.vendor_name Carbon Black로 설정합니다.
msg metadata.description, additional.fields 파서 로직에 따라 metadata.description 및 추가 필드를 채우는 데 사용됩니다.
sproc principal.process.command_line 직접 매핑됩니다.
metadata.url_back_to_product metadata.url_back_to_product JSON 로그의 Bit9ServerHostId 필드를 사용하여 구성됩니다. CEF 로그에는 적용되지 않습니다.
security_result.severity security_result.severity MEDIUM로 설정합니다.
timestamp events.timestamp JSON 로그에 직접 매핑됩니다. CEF 로그의 경우 파서 로직은 원시 로그의 rt 필드(있는 경우) 또는 rt가 없는 경우 collection_time를 기반으로 타임스탬프를 결정합니다.

변경사항

2022-07-01

  • 개선
  • 'agent.type' 필드가 'observer.application'에 매핑되었습니다.
  • 'agent.name' 필드가 'observer.user.userid'에 매핑되었습니다.
  • 'host.name' 필드가 'observer.hostname'에 매핑되었습니다.
  • 'agent.type' 및 'agent.name' 필드가 'observer.asset_id'에 매핑되었습니다.
  • 'agent.ephemeral_id' 필드가 'observer.labels'에 매핑되었습니다.
  • 'host.os.platform' 필드가 'target.platform'에 매핑되었습니다.
  • 'host.os.version' 필드가 'target.platform_version'에 매핑되었습니다.
  • 'host.os.kernel' 필드가 'target.platform_patch_level'에 매핑되었습니다.
  • 'cloud.instance.id' 필드가 'principal.resource.product_object_id'에 매핑되었습니다.
  • 'cloud.instance.name' 필드가 'principal.resource.name'에 매핑되었습니다.
  • 'host.mac' 필드가 'target.mac'에 매핑되었습니다.
  • 'host.ip' 필드가 'target.asset.ip'에 매핑되었습니다.
  • 'host.id' 필드가 'target.asset.asset_id'에 매핑되었습니다.
  • 'host.architecture' 필드가 'target.asset.hardware'에 매핑되었습니다.
  • 'message.UserSID' 필드가 'principal.user.userid'에 매핑되었습니다.
  • 'message.ProcessPath' 필드가 'about.process.command_line'에 매핑되었습니다.
  • 'cloud.machine.type' 및 'cloud.provider' 필드가 'principal.resource.attribute.labels'에 매핑되었습니다.
  • 'metadata.url_back_to_product'에 매핑된 'message.Bit9Server' 및 'message.HostId'에 대한 조건부 검사를 추가했습니다.

2022-06-22

  • 버그 수정
  • hostId를 principal.asset_id에 매핑했습니다.
  • Bit9Server 및 HostId 조합을 metadata.url_back_to_product에 매핑했습니다.

2022-05-19

  • 버그 수정
  • 버그에서 요청된 로그를 파싱했습니다.
  • 파싱된 API 실패 로그

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가의 답변을 받으세요.