Raccogliere i log di Carbon Black App Control
Questo documento spiega come raccogliere i log di Carbon Black App Control. Il parser 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 è in esecuzione 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.
Recupera 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 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 |
Viene 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 "Criterio") |
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") |
Aggiunto 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 un'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 la chiave "installerFilename" o un'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 un'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 la chiave "ruleName" o un'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 cfp2Label) |
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 "nome") |
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 come parte dell'ID risorsa di destinazione ("ID host: {host.hostname}"). È stato mappato anche a target.hostname . |
host.id |
target.asset.asset_id |
Utilizzato come parte dell'ID risorsa di destinazione ("ID host: {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 e su "SYSTEM_AUDIT_LOG_UNCATEGORIZED" per i log JSON. |
metadata.log_type |
metadata.log_type |
Impostato 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 "Controllo app" per i log CEF e su "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 |
Impostato 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 dell'analizzatore 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
- È stato mappato il campo "agent.type" 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".
- È stato mappato il campo "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 degli errori dell'API analizzata
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.