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 처리 인증 파일 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 수집 에이전트로 이동합니다.
- 처리 인증 파일을 다운로드합니다. Bindplane가 설치될 시스템에 파일을 안전하게 저장합니다.
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필로 이동합니다.
- 조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.
Bindplane 에이전트 설치
Windows 설치
- 관리자 권한으로 명령 프롬프트 또는 PowerShell을 엽니다.
다음 명령어를 실행합니다.
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux 설치
- 루트 또는 sudo 권한으로 터미널을 엽니다.
다음 명령어를 실행합니다.
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
추가 설치 리소스
- 추가 설치 옵션은 이 설치 가이드를 참고하세요.
Syslog를 수집하고 Google SecOps로 전송하도록 Bindplane 에이전트 구성
구성 파일에 액세스합니다.
config.yaml
파일을 찾습니다. 일반적으로 Linux의/etc/bindplane-agent/
디렉터리 또는 Windows의 설치 디렉터리에 있습니다.- 텍스트 편집기 (예:
nano
,vi
, 메모장)를 사용하여 파일을 엽니다.
다음과 같이
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
인프라에서 필요에 따라 포트와 IP 주소를 바꿉니다.
<customer_id>
를 실제 고객 ID로 바꿉니다./path/to/ingestion-authentication-file.json
를 Google SecOps 처리 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로 업데이트합니다.
Bindplane 에이전트를 다시 시작하여 변경사항 적용
Linux에서 Bindplane 에이전트를 다시 시작하려면 다음 명령어를 실행합니다.
sudo systemctl restart bindplane-agent
Windows에서 Bindplane Agent를 다시 시작하려면 서비스 콘솔을 사용하거나 다음 명령어를 입력하면 됩니다.
net stop BindPlaneAgent && net start BindPlaneAgent
Syslog 로그를 전송하도록 CB 앱 제어 구성
- 관리자 계정으로 CB 앱 제어 콘솔에 로그인합니다.
- 관리 > 시스템 구성 > 외부 로깅으로 이동합니다.
- 외부 이벤트 로깅 섹션에서 다음을 수행합니다.
- Syslog 로깅 사용 설정: Syslog 사용 설정 체크박스를 선택합니다.
- 서버 주소:
<Bindplane Server IP>
. - 포트:
<Bindplane Server PORT>
. - 프로토콜: TCP를 선택합니다.
- Syslog 형식: JSON을 선택합니다.
- 이벤트 로깅 옵션에서 전송할 로그 유형을 선택합니다.
- 정책 위반
- 파일 무결성 모니터링 (FIM) 이벤트
- 사용자 인증 이벤트
- 위협 인텔리전스 데이터
- 저장을 클릭합니다.
UDM 매핑 표
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
ABId |
principal.asset.asset_id |
JSON 로그의 ABId 는 PRODUCT_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 로그의 Bit9Server 및 HostId 필드를 사용하여 구성됩니다. 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 전문가의 답변을 받으세요.