Raccogliere i log di Carbon Black App Control
Questo documento spiega come raccogliere i log di Carbon Black App Control. L'analizzatore supporta i formati CEF e JSON. Innanzitutto tenta di analizzare l'input come JSON. Se non riesce, tratta l'input come CEF, esegue sostituzioni di testo, estrae i campi CEF, li mappa a UDM e imposta il tipo di evento su GENERIC_EVENT
. In caso contrario, utilizza un file include di mappatura UDM specifico JSON separato.
Prima di iniziare
- Assicurati di avere un'istanza Google Security Operations.
- Assicurati di utilizzare Windows 2016 o versioni successive o un host Linux con
systemd
. - Se il servizio è eseguito dietro un proxy, assicurati che le porte del firewall siano aperte.
- Server Carbon Black App Control (CB Protection) (consigliata la versione 8.x o successive).
- Assicurati di disporre dell'accesso privilegiato a Carbon Black App Control.
Ottenere il file di autenticazione di importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione dell'importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Ottenere l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Installa l'agente Bindplane
Installazione di Windows
- Apri il prompt dei comandi o PowerShell come amministratore.
Esegui questo comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Installazione di Linux
- Apri un terminale con privilegi di root o sudo.
Esegui questo comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Risorse di installazione aggiuntive
- Per altre opzioni di installazione, consulta questa guida all'installazione.
Configurare l'agente Bindplane per importare Syslog e inviarlo a Google SecOps
Accedi al file di configurazione:
- Individua il file
config.yaml
. In genere si trova nella directory/etc/bindplane-agent/
su Linux o nella directory di installazione su Windows. - Apri il file utilizzando un editor di testo (ad esempio
nano
,vi
o Blocco note).
- Individua il file
Modifica il file
config.yaml
come segue: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
Sostituisci la porta e l'indirizzo IP come richiesto nella tua infrastruttura.
Sostituisci
<customer_id>
con l'ID cliente effettivo.Aggiorna
/path/to/ingestion-authentication-file.json
con il percorso in cui è stato salvato il file di autenticazione nella sezione Ottenere il file di autenticazione per l'importazione di Google SecOps.
Riavvia Bindplane Agent per applicare le modifiche
Per riavviare Bindplane Agent in Linux, esegui il seguente comando:
sudo systemctl restart bindplane-agent
Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurare il controllo app CB per inviare log Syslog
- Accedi alla console di CB App Control con un account amministratore.
- Vai ad Amministrazione > Configurazione di sistema > Log esterni.
- Nella sezione Registrazione eventi esterni:
- Attiva il logging Syslog: seleziona la casella di controllo Syslog Enabled (Syslog abilitato).
- Indirizzo server:
<Bindplane Server IP>
. - Porta:
<Bindplane Server PORT>
. - Protocollo: seleziona TCP.
- Formato Syslog: seleziona JSON.
- In Opzioni di registrazione eventi, seleziona i tipi di log da inviare:
- Violazioni delle norme
- Eventi di monitoraggio dell'integrità dei file (FIM)
- Eventi di autenticazione utente
- Dati di Threat Intelligence
- Fai clic su Salva.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
ABId |
principal.asset.asset_id |
Il valore ABId del log JSON viene utilizzato come parte dell'ID risorsa nel formato PRODUCT_SPECIFIC_ID:{ABId}-{Bit9Server} . |
Bit9Server |
principal.asset.asset_id |
Utilizzato come parte dell'ID risorsa del principale, combinato con ABId . Utilizzato anche per creare il campo metadata.url_back_to_product . |
CommandLine |
about.process.command_line |
Mappatura diretta. |
EventType |
metadata.product_event_type |
Mappato con il EventTypeId corrispondente tra parentesi quadre (ad es. [5] - Discovery ). |
EventTypeId |
metadata.product_event_type |
Utilizzato con EventType per compilare metadata.product_event_type . |
EventSubType |
metadata.description |
Aggiunto al campo metadata.description . |
EventSubTypeId |
metadata.description |
Non mappato esplicitamente, ma potenzialmente contribuisce alla descrizione in base alla logica interna dell'analizzatore. |
externalId |
metadata.product_log_id |
Mappatura diretta. |
FileHash |
about.file.sha256 |
Mappatura diretta. |
FileName |
additional.fields (con chiave FileName ) |
Aggiunto come campo aggiuntivo. Utilizzato anche come parte delle informazioni del file in metadata.description per alcuni eventi. |
FilePath |
about.file.full_path |
Mappatura diretta. |
FileThreat |
additional.fields (con chiave fileThreat ) |
Aggiunto come campo aggiuntivo. |
FileTrust |
additional.fields (con chiave fileTrust ) |
Aggiunto come campo aggiuntivo. |
HostId |
principal.asset.asset_id |
Utilizzato per creare l'URL che rimanda al prodotto in metadata.url_back_to_product . |
HostName |
target.hostname |
Mappatura diretta. |
HostIP |
target.ip |
Mappatura diretta. |
Message |
metadata.description |
Mappatura diretta. |
PathName |
about.file.full_path |
Mappatura diretta. |
Platform |
target.platform |
Mappato al valore enum WINDOWS . |
Policy |
additional.fields (con chiave Policy ) |
Aggiunto come campo aggiuntivo. |
PolicyId |
additional.fields (con chiave PolicyId ) |
Aggiunto come campo aggiuntivo. |
ProcessKey |
additional.fields (con chiave ProcessKey ) |
Aggiunto come campo aggiuntivo. |
ProcessPath |
about.process.command_line |
Mappatura diretta. |
ProcessPathName |
about.process.command_line |
Mappatura diretta. |
ProcessThreat |
additional.fields (con chiave ProcessThreat ) |
Aggiunto come campo aggiuntivo. |
ProcessTrust |
additional.fields (con chiave ProcessTrust ) |
Aggiunta come campo aggiuntivo. |
RuleName |
additional.fields (con chiave ruleName ) |
Aggiunto come campo aggiuntivo. |
Timestamp |
metadata.event_timestamp |
Mappatura diretta. |
UserName |
target.user.user_display_name |
Mappatura diretta. |
UserSid |
principal.user.userid |
Mappatura diretta. |
agent.ephemeral_id |
observer.labels (con chiave ephemeral_id ) |
Aggiunto come etichetta osservatore. |
agent.name |
principal.hostname , observer.hostname , observer.user.userid |
Mappato a più campi. |
agent.type |
observer.application |
Mappatura diretta. |
agent.version |
metadata.product_version |
Mappato direttamente per i log JSON. Per i log CEF, estratti dal messaggio CEF. |
cat |
security_result.category_details |
Mappatura diretta. |
cs1 |
additional.fields (con chiave rootHash o altra cs1Label) |
Aggiunta come campo aggiuntivo con la chiave definita da cs1Label . |
cs1Label |
additional.fields |
Utilizzato come chiave per il campo aggiuntivo compilato da cs1 . |
cs2 |
additional.fields (con chiave installerFilename o altra cs2Label) |
Aggiunta come campo aggiuntivo con la chiave definita da cs2Label . |
cs2Label |
additional.fields |
Utilizzato come chiave per il campo aggiuntivo compilato da cs2 . |
cs3 |
additional.fields (con chiave Policy o altra cs3Label) |
Aggiunta come campo aggiuntivo con la chiave definita da cs3Label . |
cs3Label |
additional.fields |
Utilizzato come chiave per il campo aggiuntivo compilato da cs3 . |
cs5 |
additional.fields (con chiave ruleName o altra cs5Label) |
Aggiunta come campo aggiuntivo con la chiave definita da cs5Label . |
cs5Label |
additional.fields |
Utilizzato come chiave per il campo aggiuntivo compilato da cs5 . |
cfp1 |
additional.fields (con chiave fileTrust o altra cfp1Label) |
Aggiunta come campo aggiuntivo con la chiave definita da cfp1Label . |
cfp1Label |
additional.fields |
Utilizzato come chiave per il campo aggiuntivo compilato da cfp1 . |
cfp2 |
additional.fields (con chiave processTrust o altra etichetta cfp2) |
Aggiunta come campo aggiuntivo con la chiave definita da cfp2Label . |
cfp2Label |
additional.fields |
Utilizzato come chiave per il campo aggiuntivo compilato da cfp2 . |
deviceProcessName |
about.process.command_line |
Mappatura diretta. |
dhost |
target.hostname |
Mappatura diretta. |
dst |
target.ip |
Mappatura diretta. |
duser |
target.user.user_display_name |
Mappatura diretta. |
dvchost |
about.hostname |
Mappatura diretta. |
eventId |
additional.fields (con chiave eventId ) |
Aggiunto come campo aggiuntivo. |
fileHash |
about.file.sha256 |
Mappatura diretta. |
flexString1 |
additional.fields (con chiave fileThreat o un'altra flexString1Label) |
Aggiunta come campo aggiuntivo con la chiave definita da flexString1Label . |
flexString1Label |
additional.fields |
Utilizzato come chiave per il campo aggiuntivo compilato da flexString1 . |
flexString2 |
additional.fields (con chiave processThreat o un'altra flexString2Label) |
Aggiunta come campo aggiuntivo con la chiave definita da flexString2Label . |
flexString2Label |
additional.fields |
Utilizzato come chiave per il campo aggiuntivo compilato da flexString2 . |
fname |
additional.fields (con chiave fname ) |
Aggiunto come campo aggiuntivo. Utilizzato anche come parte delle informazioni del file in metadata.description per alcuni eventi. |
host.architecture |
target.asset.hardware.cpu_platform |
Mappatura diretta. |
host.hostname |
target.asset.asset_id |
Utilizzato nell'ambito dell'ID risorsa target (Host Id: {host.hostname} ). Mappato anche a target.hostname . |
host.id |
target.asset.asset_id |
Utilizzato nell'ambito dell'ID risorsa target (Host Id: {host.id} ). |
host.ip |
target.asset.ip |
Mappatura diretta. |
host.mac |
target.mac |
Mappatura diretta. |
host.name |
target.hostname |
Mappatura diretta. |
host.os.build |
target.platform_patch_level |
Mappatura diretta. |
host.os.kernel |
target.platform_patch_level |
Aggiunto al target.platform_patch_level . |
host.os.platform |
target.platform |
Mappato al valore enum WINDOWS . |
host.os.type |
target.platform |
Mappato al valore enum WINDOWS . |
host.os.version |
target.platform_version |
Mappatura diretta. |
log.file.path |
target.file.full_path |
Mappatura diretta. |
metadata.event_type |
metadata.event_type |
Imposta su GENERIC_EVENT per i log CEF, SYSTEM_AUDIT_LOG_UNCATEGORIZED per i log JSON. |
metadata.log_type |
metadata.log_type |
Imposta su CB_EDR . |
metadata.product_log_id |
metadata.product_log_id |
Mappato da externalId per i log CEF. Non applicabile per i log JSON. |
metadata.product_name |
metadata.product_name |
Imposta su App Control per i log CEF, CB_APP_CONTROL per i log JSON. |
metadata.product_version |
metadata.product_version |
Estratto dal messaggio CEF per i log CEF. Mappato da agent.version per i log JSON. |
metadata.vendor_name |
metadata.vendor_name |
Imposta su Carbon Black . |
msg |
metadata.description , additional.fields |
Utilizzato per compilare metadata.description e potenzialmente altri campi in base alla logica dell'analizzatore. |
sproc |
principal.process.command_line |
Mappatura diretta. |
metadata.url_back_to_product |
metadata.url_back_to_product |
Costruito utilizzando i campi Bit9Server e HostId per i log JSON. Non applicabile ai log CEF. |
security_result.severity |
security_result.severity |
Imposta su MEDIUM . |
timestamp |
events.timestamp |
Mappato direttamente per i log JSON. Per i log CEF, la logica del parser determina il timestamp in base al campo rt del log non elaborato, se disponibile, o a collection_time se rt non è presente. |
Modifiche
2022-07-01
- Miglioramento
- Il campo "agent.type" è stato mappato a "observer.application".
- È stato mappato il campo "agent.name" a "observer.user.userid".
- È stato mappato il campo "host.name" a "observer.hostname".
- Ho mappato i campi "agent.type" e "agent.name" a "observer.asset_id".
- È stato mappato il campo "agent.ephemeral_id" a "observer.labels".
- È stato mappato il campo "host.os.platform" a "target.platform".
- È stato mappato il campo "host.os.version" a "target.platform_version".
- È stato mappato il campo "host.os.kernel" a "target.platform_patch_level".
- È stato mappato il campo "cloud.instance.id" a "principal.resource.product_object_id".
- È stato mappato il campo "cloud.instance.name" a "principal.resource.name".
- È stato mappato il campo "host.mac" a "target.mac".
- È stato mappato il campo "host.ip" a "target.asset.ip".
- È stato mappato il campo "host.id" a "target.asset.asset_id".
- È stato mappato il campo "host.architecture" a "target.asset.hardware".
- È stato mappato il campo "message.UserSID" a "principal.user.userid".
- È stato mappato il campo "message.ProcessPath" a "about.process.command_line".
- Ho mappato i campi "cloud.machine.type" e "cloud.provider" a "principal.resource.attribute.labels".
- Sono stati aggiunti controlli condizionali per "message.Bit9Server" e "message.HostId" mappati a "metadata.url_back_to_product".
2022-06-22
- Correzione di bug
- HostId mappato a principal.asset_id
- Combinazione di Bit9Server e HostId mappata a metadata.url_back_to_product
2022-05-19
- Correzione di bug
- log richiesti analizzati nel bug
- log relativi ai problemi di parsing dell'API
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.