CrowdStrike Falcon Stream 로그 수집

다음에서 지원:

이 문서에서는 Bindplane을 사용하여 CrowdStrike Falcon Stream 로그를 수집하는 방법을 설명합니다. 파서는 키-값 쌍을 추출하여 통합 데이터 모델 (UDM)에 매핑하고, 다양한 구분자를 처리하고, 심각도 및 이벤트 유형과 같은 추가 컨텍스트로 데이터를 보강합니다. 또한 사용자 로그인 및 보안 결과와 같은 특정 이벤트 유형 및 필드에 대해 특정 변환을 실행합니다.

시작하기 전에

  • Google Security Operations 인스턴스가 있는지 확인합니다.
  • Windows 2016 이상 또는 systemd를 사용하는 Linux 호스트를 사용하고 있는지 확인합니다.
  • 프록시 뒤에서 실행하는 경우 방화벽 포트가 열려 있는지 확인합니다.
  • CrowdStrike Falcon 콘솔에 대한 액세스 권한이 있는지 확인합니다.
  • Falcon Stream의 API 사용자 인증 정보 (클라이언트 ID 및 클라이언트 보안 비밀번호)를 가져옵니다.

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. 구성 파일에 액세스합니다.

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

    receivers:
        tcplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:54525"
    
    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: SYSLOG
                namespace: cs_stream
                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.jsonGoogle SecOps 처리 인증 파일 가져오기 섹션에서 인증 파일이 저장된 경로로 업데이트합니다.

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

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

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

    net stop BindplaneAgent && net start BindplaneAgent
    

CrowdStrike API 키 구성 및 가져오기

  1. 권한이 있는 계정으로 CrowdStrike Falcon에 로그인합니다.
  2. 메뉴 > 지원으로 이동합니다.
  3. API 클라이언트 > KeysSelect를 클릭합니다.
  4. 새 API 클라이언트 추가를 클릭합니다.
  5. API 범위 섹션에서 이벤트 스트림을 선택한 다음 읽기 옵션을 사용 설정합니다.
  6. 추가를 클릭합니다.
  7. 클라이언트 ID, 클라이언트 보안 비밀번호, 기본 URL을 복사하여 저장합니다.

Falcon SIEM 커넥터 설치

  1. 운영체제용 RPM 설치 프로그램 패키지를 다운로드합니다.
  2. 패키지 설치:

    • CentOS 운영체제:

      sudo rpm -Uvh <installer package>
      
    • Ubuntu 운영체제:

      sudo dpkg -i <installer package>
      
  3. 기본 설치 디렉터리:

    • Falcon SIEM 커넥터 - /opt/crowdstrike/
    • 서비스 - /etc/init.d/cs.falconhoseclientd/

이벤트를 Bindplane으로 전달하도록 SIEM 커넥터 구성

  1. SIEM 커넥터가 설치된 머신에 sudo 사용자로 로그인합니다.
  2. /opt/crowdstrike/etc/ 디렉터리로 이동합니다.
  3. cs.falconhoseclient.leef.cfg의 이름을 cs.falconhoseclient.cfg로 바꿉니다.
    • SIEM 커넥터는 기본적으로 cs.falconhoseclient.cfg 구성을 사용합니다.
  4. cs.falconhoseclient.cfg 파일을 수정하고 다음 매개변수를 수정하거나 설정합니다.
    • api_url: - 이전 단계에서 복사한 CrowdStrike Falcon Base URL입니다.
    • app_id: - Falcon Streaming API에 연결하기 위한 식별자로 사용되는 문자열입니다. 예를 들어 app_id: SECOPS-LEEF로 설정합니다.
    • client_id: - 이전 단계에서 복사한 client_id 값입니다.
    • client_secret: - 이전 단계에서 복사한 client_secret 값입니다.
    • send_to_syslog_server: true - Syslog 서버에 대한 푸시를 사용 설정합니다.
    • host: - Bindplane 에이전트의 IP 또는 호스트 이름입니다.
    • port: - Bindplane 에이전트의 포트입니다.
  5. cs.falconhoseclient.cfg 파일을 저장합니다.
  6. SIEM 커넥터 서비스를 시작합니다.

    • CentOS 운영체제:

      sudo service cs.falconhoseclientd start
      
    • Ubuntu 16.04 이상 운영체제:

      sudo systemctl start cs.falconhoseclientd.service
      
  7. 선택사항: SIEM 커넥터 서비스를 중지합니다.

    • CentOS 운영체제:

      sudo service cs.falconhoseclientd stop
      
    • Ubuntu 16.04 이상 운영체제:

      sudo systemctl stop cs.falconhoseclientd.service
      
  8. 선택사항: SIEM 커넥터 서비스를 다시 시작합니다.

    • CentOS 운영체제:

      sudo service cs.falconhoseclientd restart
      
    • Ubuntu 16.04 이상 운영체제:

      sudo systemctl restart cs.falconhoseclientd.service
      

UDM 매핑 표

로그 필드 UDM 매핑 논리
cat security_result.category_details cat 필드의 값은 security_result.category_details 필드에 직접 매핑됩니다.
commandLine target.process.command_line commandLine 필드의 값은 target.process.command_line 필드에 직접 매핑됩니다.
cs1 security_result.summary cs1Label이 'incidentType'인 경우 cs1 값은 security_result.summary에 매핑됩니다. 그렇지 않으면 cs1Label의 키와 cs1의 값을 사용하여 security_result.detection_fields에 키-값 쌍으로 매핑됩니다.
cs1Label security_result.detection_fields.key cs1이 이슈 유형이 아닌 경우 security_result.detection_fields에서 키로 사용됩니다.
cs2 security_result.detection_fields.value security_result.detection_fields에서 cs2Label의 키와 cs2의 값으로 키-값 쌍으로 매핑됩니다.
cs2Label security_result.detection_fields.key cs2와 함께 security_result.detection_fields의 키로 사용됩니다.
cs3 security_result.detection_fields.value security_result.detection_fields에서 cs3Label의 키와 cs3의 값으로 키-값 쌍으로 매핑됩니다.
cs3Label security_result.detection_fields.key cs3와 함께 security_result.detection_fields의 키로 사용됩니다.
cs4 security_result.about.url cs4Label가 'falconHostLink'인 경우 cs4 값이 security_result.about.url에 매핑됩니다. 그렇지 않으면 security_result.detection_fields에서 cs4Label의 키와 cs4의 값으로 키-값 쌍으로 매핑됩니다.
cs4Label security_result.detection_fields.key cs4가 falconHostLink가 아닌 경우 security_result.detection_fields의 키로 사용됩니다.
description metadata.description description 필드의 값은 metadata.description 필드에 직접 매핑됩니다. 비어 있으면 incidentDescription 또는 msg 또는 serviceName가 대신 사용됩니다.
devTime metadata.event_timestamp devTime 필드의 값이 파싱되어 metadata.event_timestamp 필드에 매핑됩니다.
deviceCustomDate1 metadata.event_timestamp devTime가 없으면 deviceCustomDate1 필드의 값이 파싱되어 metadata.event_timestamp 필드에 매핑됩니다.
domain principal.administrative_domain 정규 표현식을 사용하여 userName 필드에서 추출하고 principal.administrative_domain에 매핑했습니다.
duser principal.user.userid duser 값이 있으면 usrName 필드를 덮어쓴 후 사용자 필드를 채우는 데 사용됩니다.
endpointName security_result.detection_fields.value security_result.detection_fields에서 'endpointName' 키로 키-값 쌍으로 매핑됩니다.
eventType metadata.product_event_type eventType 필드의 값은 metadata.product_event_type 필드에 직접 매핑됩니다.
falconHostLink security_result.about.url falconHostLink 필드의 값은 security_result.about.url 필드에 직접 매핑됩니다.
filePath target.process.file.full_path filePath 필드의 값은 target.process.file.full_path 필드에 직접 매핑됩니다.
identityProtectionIncidentId security_result.detection_fields.value security_result.detection_fields에서 'identityProtectionIncidentId' 키를 사용하여 키-값 쌍으로 매핑됩니다.
incidentDescription metadata.description description가 비어 있으면 incidentDescription 필드의 값이 metadata.description 필드에 매핑됩니다.
incidentType security_result.summary incidentType 필드의 값은 security_result.summary 필드에 직접 매핑됩니다.
log_type metadata.log_type log_type 필드의 값은 metadata.log_type 필드에 직접 매핑됩니다.
msg metadata.description descriptionincidentDescription가 비어 있으면 msg 필드의 값이 metadata.description 필드에 매핑됩니다.
numbersOfAlerts security_result.detection_fields.value security_result.detection_fields에서 'numbersOfAlerts' 키로 키-값 쌍으로 매핑됩니다.
numberOfCompromisedEntities security_result.detection_fields.value security_result.detection_fields에서 'numberOfCompromisedEntities' 키와 함께 키-값 쌍으로 매핑됩니다.
product metadata.product_name product 필드의 값은 metadata.product_name 필드에 직접 매핑됩니다.
resource target.resource.name resource 필드의 값은 target.resource.name 필드에 직접 매핑됩니다.
serviceName target.application serviceName 필드의 값은 target.application 필드에 직접 매핑됩니다. metadata.description의 대체로도 사용됩니다.
severityName security_result.severity severityName 필드의 값은 대문자로 변환된 후 security_result.severity 필드에 매핑됩니다. 매핑 로직에는 다양한 심각도 이름에 대한 특정 변환이 포함되어 있습니다.
sha256 target.file.sha256 sha256 필드의 값은 target.file.sha256 필드에 직접 매핑됩니다.
src principal.ip src 필드의 값은 principal.ip 필드에 직접 매핑됩니다.
srcMAC principal.mac 하이픈을 콜론으로 대체한 후 srcMAC 필드의 값이 principal.mac 필드에 직접 매핑됩니다.
state security_result.detection_fields.value security_result.detection_fields에서 'state' 키를 사용하여 키-값 쌍으로 매핑됩니다.
success security_result.action success가 'true'인 경우 security_result.action은 'ALLOW'로 설정됩니다. success가 'false'인 경우 security_result.action은 'BLOCK'으로 설정됩니다.
userName principal.user.userid usrName이 없으면 userName 필드의 값이 사용자 필드를 채우는 데 사용됩니다. 도메인이 있는 경우 추출됩니다.
usrName principal.user.userid/target.user.userid 있는 경우 usrName 필드의 값은 eventType에 따라 principal.user.userid 또는 target.user.userid에 매핑됩니다. 이메일 주소인 경우 해당 email_addresses 필드에도 추가됩니다.
vendor metadata.vendor_name vendor 필드의 값은 metadata.vendor_name 필드에 직접 매핑됩니다.
version metadata.product_version version 필드의 값은 metadata.product_version 필드에 직접 매핑됩니다.
(파서 로직) extensions.auth.mechanism eventType이 'saml2Assert' 또는 'twoFactorAuthenticate'인 경우 'USERNAME_PASSWORD'로 설정합니다.
(파서 로직) extensions.auth.type eventType이 'assert' 또는 'userAuthenticate'인 경우 'AUTHTYPE_UNSPECIFIED'로 설정합니다.
(파서 로직) metadata.event_timestamp 원시 로그의 collection_time 또는 timestamp 필드의 타임스탬프가 이벤트 타임스탬프로 사용됩니다.
(파서 로직) metadata.event_type eventType 및 기타 필드를 기반으로 결정됩니다. 기본값은 'GENERIC_EVENT'이며 'USER_LOGIN', 'GROUP_MODIFICATION', 'GROUP_DELETION', 'SERVICE_STOP', 'SERVICE_START' 또는 'USER_UNCATEGORIZED'로 변경할 수 있습니다.
(파서 로직) target.resource.type eventType이 'remove_group', 'update_group' 또는 'delete_group'인 경우 'GROUP'으로 설정합니다.

변경사항

2025-01-10

개선사항:

  • 'OperationBlocked'가 'true'인 경우 'security_result.action'이 'BLOCK'에 매핑되었습니다.
  • 'OperationBlocked'가 'false'인 경우 'security_result.action'이 'ALLOW'에 매핑되었습니다.
  • 'event_type'이 'IdentityProtectionEvent'인 경우 'event_data.IncidentDescription'이 'security_result.summary'에 매핑되었습니다.
  • 'event_type'이 'IdentityProtectionEvent'인 경우 'event_data.SeverityName'이 'security_result.severity'에 매핑되었습니다.

2025-01-09

개선사항:

  • 'event_data.Technique'가 'security_result.rule_name'에 매핑되었습니다.
  • 'event_data.CommandLine'이 'target.process.command_line'에 매핑되었습니다.
  • 'event_data.IOCType'이 'ipv4'인 경우 'event_data.IOCValue'가 'target.ip' 및 'target.asset.ip'에 매핑되었습니다.
  • 'event_data.IOCType'이 'hash_sha256'인 경우 'event_data.IOCValue'가 'target.file.sha256'에 매핑되었습니다.

2024-12-12

개선사항:

  • 'event.SeverityName'이 'security_result.severity'에 매핑되었습니다.
  • 'event.Description'이 'security_result.summary'에 매핑되었습니다.
  • 'event.PatternDispositionFlags.OperationBlocked'를 기반으로 'security_result.action'을 매핑했습니다.

2024-10-29

개선사항:

  • 로그의 JSON 형식 지원을 추가했습니다.
  • 'request'가 'network.http.referral_url'에 매핑되었습니다.
  • 'networkDetectionType'이 'security_result.detection_fields'에 매핑되었습니다.

2022-07-18

개선사항:

  • LEEF 형식 로그에 다음 매핑이 추가되었습니다.
  • 'version' 필드가 'metadata.product_version'에 매핑되었습니다.
  • 'usrName' 및 'userName' 필드는 이메일인 경우 'principal.user.email_addresses'에 매핑되고 그 밖의 경우에는 'principal.user.userid'에 매핑됩니다.
  • 'severityName' 필드가 'security_result.severity'에 매핑되었습니다.
  • 'cat' 필드가 'security_result.category_details'에 매핑되었습니다.
  • 'incidentType' 필드가 'security_result.summary'에 매핑되었습니다.
  • 'falconHostLink' 필드가 'security_result.about.url'에 매핑되었습니다.
  • 'numberOfCompromisedEntities' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
  • 'identityProtectionIncidentId' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
  • 'numbersOfAlerts' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
  • 'state' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
  • CEF 형식 로그에 다음 매핑을 추가했습니다.
  • 'version' 필드가 'metadata.product_version'에 매핑되었습니다.
  • 'deviceCustomDate1' 필드가 'metadata.event_type'에 매핑되었습니다.
  • 'msg' 필드가 'metadata.description'에 매핑되었습니다.
  • 'cs1Label'의 값이 'incidentType'인 경우 'cs1' 필드가 'security_result.summary'에 매핑되고, 그렇지 않은 경우에는 'security_result.detection_fields[n]'에 매핑됩니다.
  • 'cs2' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
  • 'cs3' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
  • 'cs4Label'의 값이 'falconHostLink'인 경우 'cs1' 필드가 'security_result.about.url'에 매핑되고 그 밖의 경우에는 'security_result.detection_fields[n]'에 매핑되었습니다.
  • 'cn1' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
  • 'cn2' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
  • 'cn3' 필드가 'security_result.detection_fields[n]'에 매핑되었습니다.
  • 'duser' 필드는 이메일인 경우 'principal.user.email_addresses'에 매핑되고 그 밖의 경우에는 'principal.user.userid'에 매핑됩니다.

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