Raccogliere i log di Attivo Networks BOTsink
Questo documento spiega come importare i log di Attivo Networks BOTsink in Google Security Operations utilizzando Bindplane. Il parser tenta innanzitutto di analizzare i messaggi di log in entrata come JSON. Se non riesce, utilizza una serie di pattern Grok per estrarre i campi dai messaggi formattati in Common Event Format (CEF), gestendo vari formati ed eventuali errori. Infine, esegue il mapping dei campi estratti allo schema Unified Data Model (UDM), arricchendo i dati con un contesto aggiuntivo e standardizzando l'output.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps
- Windows 2016 o versioni successive oppure un host Linux con
systemd - Se l'esecuzione avviene tramite un proxy, le porte del firewall sono aperte
- Accesso con privilegi ad Attivo Networks
Recuperare il file di autenticazione per l'importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione per l'importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.
Recuperare l'ID cliente di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli organizzazione.
Installare 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 ulteriori opzioni di installazione, consulta la 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,vio Blocco note).
- Individua il file
Modifica il file
config.yamlcome indicato di seguito:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" 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: 'ATTIVO' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labelsSostituisci la porta e l'indirizzo IP in base alle esigenze della tua infrastruttura.
Sostituisci
<customer_id>con l'ID cliente effettivo.Aggiorna
/path/to/ingestion-authentication-file.jsonal percorso in cui è stato salvato il file di autenticazione nella sezione Recuperare il file di autenticazione per l'importazione di Google SecOps.
Riavviare l'agente Bindplane per applicare le modifiche
Per riavviare l'agente Bindplane in Linux, esegui questo comando:
sudo systemctl restart bindplane-agentPer riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire questo comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurare Syslog in Attivo Networks BOTsink
- Accedi all'interfaccia utente web di Attivo Networks.
- Vai a Amministrazione > Gestione > Syslog.
- Fai clic su Aggiungi per creare un nuovo profilo Syslog.
- Fornisci un nome descrittivo per il profilo.
- In Inoltro eventi, seleziona Attivato.
- Fornisci la configurazione degli standard BOTsink:
- Molto basso: seleziona Informativo.
- Basso: seleziona Avviso.
- Medio: seleziona Avviso.
- Alto: seleziona Critico.
- Molto alto: seleziona Emergenza.
- Per Formato messaggio: seleziona CEF.
- Seleziona Aggiungi nuova connessione nella sezione del profilo.
- Fornisci i seguenti dettagli di configurazione:
- Nome server: inserisci un nome descrittivo che ti aiuti a identificare Google SecOps.
- Nome profilo: seleziona il profilo Syslog CEF che hai creato in precedenza.
- Indirizzo IP: inserisci l'indirizzo IP dell'agente Bindplane.
- Porta: inserisci il numero di porta dell'agente Bindplane (ad esempio, inserisci
514per UDP). - Protocollo: seleziona UDP.
- Fai clic su Test connessione e verifica di ricevere i dati di test nell'agente Bindplane e in Google SecOps.
- Fai clic su OK.
Tabella di mapping UDM
| Campo log | Mapping UDM | Funzione logica |
|---|---|---|
| alertID | read_only_udm.metadata.product_log_id | Il valore viene recuperato dal campo alertID. |
| cat | read_only_udm.security_result.action_details | Il valore viene recuperato dal campo cat. |
| CEFDeviceProduct | read_only_udm.metadata.product_name | Il valore viene recuperato dal campo CEFDeviceProduct. |
| CEFDeviceVendor | read_only_udm.metadata.vendor_name | Il valore viene recuperato dal campo CEFDeviceVendor. |
| CEFDeviceVersion | read_only_udm.metadata.product_version | Il valore viene recuperato dal campo CEFDeviceVersion. |
| CEFName | Utilizzato per estrarre i campi operation, result, module e descrip. |
|
| CEFSeverity | read_only_udm.security_result.severity | Eseguito il mapping dal campo CEFSeverity in base a queste regole:- error o warning: HIGH- (?i)critical: CRITICAL- (?i)notice o (?i)MEDIUM: MEDIUM- information, info, Very-Low, o Low: LOW |
| CEFSignatureID | read_only_udm.security_result.rule_id | Il valore viene recuperato dal campo CEFSignatureID. |
| cef_version | read_only_udm.additional.fields.value.string_value | Il valore viene recuperato dal campo cef_version. |
| read_only_udm.additional.fields.key | Valore statico: CEFVersion |
|
| descrip | read_only_udm.metadata.description | Il valore viene recuperato dal campo descrip. |
| dest_domain | read_only_udm.target.domain.name | Il valore viene recuperato dal campo dest_domain. |
| dhost | read_only_udm.target.hostname | Il valore viene recuperato dal campo dhost se service è NETBIOS. |
| dIPDomain | read_only_udm.target.domain.name | Il valore viene recuperato dal campo dIPDomain se dest_domain è vuoto. |
| dst | read_only_udm.target.ip | Il valore viene recuperato dal campo dst. |
| dst_os | read_only_udm.target.asset.platform_software.platform_version | Il valore viene recuperato dal campo dst_os. |
| dpt | read_only_udm.target.port | Il valore viene recuperato dal campo dpt e convertito in un numero intero. |
| dvc | read_only_udm.principal.hostname, read_only_udm.target.ip, read_only_udm.intermediary.hostname | La logica dipende dai valori dei campi dvc, src e sip. Può essere mappato al nome host principale, all'IP di destinazione o al nome host intermedio in base alla disponibilità e al formato di questi campi. |
| intf | read_only_udm.additional.fields.value.string_value | Il valore viene recuperato dal campo intf e convertito in una stringa. |
| read_only_udm.additional.fields.key | Valore statico: intf |
|
| mitreTacticName | read_only_udm.security_result.rule_name | Il valore viene recuperato dal campo mitreTacticName. |
| mitreTechniqueId | read_only_udm.security_result.detection_fields.value | Il valore viene recuperato dal campo mitreTechniqueId. |
| read_only_udm.security_result.detection_fields.key | Valore statico: Technique name |
|
| mitreTechniqueName | read_only_udm.security_result.detection_fields.value | Il valore viene recuperato dal campo mitreTechniqueName. |
| read_only_udm.security_result.detection_fields.key | Valore statico: Technique name |
|
| module | read_only_udm.additional.fields.value.string_value | Il valore viene recuperato dal campo module. |
| read_only_udm.additional.fields.key | Valore statico: module |
|
| msg | read_only_udm.metadata.description | Il valore viene recuperato dal campo msg dopo aver estratto il campo protocol. |
| operation | read_only_udm.additional.fields.value.string_value | Il valore viene recuperato dal campo operation. |
| read_only_udm.additional.fields.key | Valore statico: operation |
|
| protocol | read_only_udm.network.ip_protocol | Il valore viene recuperato dal campo protocol se è TCP o UDP. |
| result | read_only_udm.security_result.action | Eseguito il mapping dal campo result in base a queste regole:- (?i)SUCCESS o (?i)ALLOW: ALLOW- CHALLENGE: CHALLENGE- FAILURE, DENY, SKIPPED, o RATE_LIMIT: BLOCK |
| rt | read_only_udm.metadata.event_timestamp | Il valore viene recuperato dal campo rt e analizzato come timestamp Unix in millisecondi. |
| shost | read_only_udm.principal.hostname | Il valore viene recuperato dal campo shost. |
| sip | read_only_udm.principal.hostname, read_only_udm.principal.ip | La logica dipende dai valori dei campi dvc e sip. Può essere mappato al nome host principale o all'IP in base alla disponibilità e al formato di questi campi. |
| smac | read_only_udm.principal.mac | Il valore viene recuperato dal campo smac. |
| source | read_only_udm.principal.hostname | Il valore viene recuperato dal campo source. |
| source_domain | read_only_udm.principal.domain.name | Il valore viene recuperato dal campo source_domain. |
| src | read_only_udm.principal.ip | Il valore viene recuperato dal campo src. |
| subscriberName | read_only_udm.additional.fields.value.string_value | Il valore viene recuperato dal campo subscriberName. |
| read_only_udm.additional.fields.key | Valore statico: Subscriber Name |
|
| suser | read_only_udm.principal.user.userid, read_only_udm.principal.user.user_display_name | Il valore viene recuperato dal campo suser dopo aver estratto il nome utente. |
| threshold | read_only_udm.additional.fields.value.string_value | Il valore viene recuperato dal campo threshold. |
| read_only_udm.additional.fields.key | Valore statico: arp-scan-threshold |
|
| usrname | read_only_udm.principal.user.email_addresses | Il valore viene recuperato dal campo usrname se non è vuoto o N/A. |
| vlan | read_only_udm.principal.labels.value | Il valore viene recuperato dal campo vlan. |
| read_only_udm.principal.labels.key | Valore statico: vlan |
|
| read_only_udm.metadata.event_type | Determinato in base ai valori dei campi src, smac, shost, dst, protocol, dvc e service. Può essere uno dei seguenti: SCAN_NETWORK, NETWORK_CONNECTION, NETWORK_UNCATEGORIZED, STATUS_UPDATE o GENERIC_EVENT. |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.