Recopila registros de FireEye HX
En este documento, se explica cómo recopilar registros de FireEye Endpoint Security (HX) en Google Security Operations con Bindplane. El analizador intenta procesar el mensaje de entrada como JSON. Si el mensaje no está en formato JSON, usa patrones de Grok para extraer campos y, luego, realiza la asignación de la AUA condicional en función del tipo de evento extraído y otros criterios.
Antes de comenzar
- Asegúrate de tener una instancia de Google Security Operations.
- Asegúrate de usar Windows 2016 o una versión posterior, o un host de Linux con
systemd
. - Si se ejecuta detrás de un proxy, asegúrate de que los puertos del firewall estén abiertos.
- Asegúrate de tener acceso con privilegios a FireEye Endpoint Security.
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recopilación.
- Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de Bindplane
Instalación de Windows
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el siguiente comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación de Linux
- Abre una terminal con privilegios de raíz o sudo.
Ejecuta el siguiente comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalación adicionales
- Para obtener más opciones de instalación, consulta esta guía de instalación.
Configura el agente de Bindplane para transferir Syslog y enviarlo a Google SecOps
Accede al archivo de configuración:
- Ubica el archivo
config.yaml
. Por lo general, se encuentra en el directorio/etc/bindplane-agent/
en Linux o en el directorio de instalación en Windows. - Abre el archivo con un editor de texto (por ejemplo,
nano
,vi
o Bloc de notas).
- Ubica el archivo
Edita el archivo
config.yaml
de la siguiente manera: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: 'FIREEYE_HX' raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Reemplaza el puerto y la dirección IP según sea necesario en tu infraestructura.
Reemplaza
<customer_id>
por el ID de cliente real.Actualiza
/path/to/ingestion-authentication-file.json
a la ruta de acceso en la que se guardó el archivo de autenticación en la sección Obtén el archivo de autenticación de transferencia de Google SecOps.
Reinicia el agente de Bindplane para aplicar los cambios.
Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:
sudo systemctl restart bindplane-agent
Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Services o ingresar el siguiente comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configura el syslog de FireEye HX Event Streamer con la IU
- Accede a la consola de administración de FireEye HX.
- Ve a Event Streamer.
- Selecciona Habilitar Event Streamer en el host.
- Guarda los cambios en la política.
- Ve a Destinos > Configuración del servidor > Agregar destino de Syslog.
- Proporciona los siguientes detalles de configuración:
- Nombre: Ingresa un nombre único para etiquetar el recolector de registros de Google SecOps.
- Dirección IP: Ingresa la dirección IP del agente de Bindplane.
- Puerto: Ingresa el número de puerto del agente de Bindplane.
- Guarda los cambios que deseas aplicar.
Configura el syslog de FireEye HX Event Streamer con la CLI
- Accede al dispositivo FireEye HX con la interfaz de línea de comandos (CLI).
Ejecuta el siguiente comando para habilitar el modo de configuración:
enable configure terminal
Ejecuta el siguiente comando para agregar un destino de servidor de syslog remoto:
logging BINDPLANE_IP_ADDRESS port PORT_NUMBER port
- Reemplaza lo siguiente:
BINDPLANE_IP_ADDRESS
: La dirección IP del reenviador de SecOps de GooglePORT_NUMBER
es el número de puerto.
- Reemplaza lo siguiente:
Ejecuta el siguiente comando para guardar los detalles de configuración:
write mem
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
alert.agent._id | principal.asset.asset_id | El ID del agente del registro sin procesar, con el prefijo AGENT ID: |
alert.agent.url | principal.labels.value | La URL del agente del registro sin procesar. |
alert.condition._id | additional.fields.value.string_value | El ID de condición del registro sin procesar, con = caracteres quitados. |
alert.condition.url | additional.fields.value.string_value | La URL de la condición del registro sin procesar, sin los caracteres = . |
alert.decorators[].data.fireeye_report.indicator_verdict.malware_families.0 | security_result.threat_name | La familia de software malicioso del informe de FireEye en el campo de decoradores del registro sin procesar. |
alert.decorators[].data.fireeye_report.risk_summary | security_result.description | El resumen de riesgos del informe de FireEye en el campo de decoradores del registro sin procesar |
alert.decorators[].data.fireeye_verdict | security_result.severity_details | El veredicto de FireEye del campo de decoradores del registro sin procesar. |
alert.event_at | read_only_udm.metadata.event_timestamp | La marca de tiempo del evento del registro sin procesar. |
alert.event_id | read_only_udm.metadata.product_log_id | El ID del evento del registro sin procesar |
alert.event_type | read_only_udm.metadata.product_event_type | Es el tipo de evento del registro sin procesar. |
alert.event_values.fileWriteEvent/fullPath | target.file.full_path | Es la ruta de acceso completa del archivo escrito desde el registro sin procesar. |
alert.event_values.fileWriteEvent/md5 | target.file.md5 | El hash MD5 del archivo escrito desde el registro sin procesar. |
alert.event_values.fileWriteEvent/pid | principal.process.pid | El ID de proceso que escribió el archivo desde el registro sin procesar. |
alert.event_values.fileWriteEvent/processPath | principal.process.file.full_path | Es la ruta de acceso del proceso que escribió el archivo desde el registro sin procesar. Se combina con alert.event_values.fileWriteEvent/process para crear la ruta de acceso completa si el SO es Windows. |
alert.event_values.fileWriteEvent/size | target.file.size | Es el tamaño del archivo escrito desde el registro sin procesar. |
alert.event_values.fileWriteEvent/username | principal.user.userid | El usuario que escribió el archivo desde el registro sin procesar. |
alert.event_values.ipv4NetworkEvent/localIP | principal.ip | La dirección IP local del registro sin procesar |
alert.event_values.ipv4NetworkEvent/localPort | principal.port | El puerto local del registro sin procesar. |
alert.event_values.ipv4NetworkEvent/pid | principal.process.pid | El ID de proceso del registro sin procesar. |
alert.event_values.ipv4NetworkEvent/process | principal.process.file.full_path | Es el nombre del proceso del registro sin procesar. Se combina con alert.event_values.ipv4NetworkEvent/processPath para crear la ruta de acceso completa si el SO es Windows. |
alert.event_values.ipv4NetworkEvent/processPath | principal.process.file.full_path | La ruta de acceso del proceso desde el registro sin procesar. Se combina con alert.event_values.ipv4NetworkEvent/process para crear la ruta de acceso completa si el SO es Windows. |
alert.event_values.ipv4NetworkEvent/protocol | network.ip_protocol | El protocolo de red del registro sin procesar |
alert.event_values.ipv4NetworkEvent/remoteIP | target.ip | Es la dirección IP remota del registro sin procesar. |
alert.event_values.ipv4NetworkEvent/remotePort | target.port | El puerto remoto del registro sin procesar. |
alert.event_values.ipv4NetworkEvent/timestamp | read_only_udm.metadata.event_timestamp | La marca de tiempo del evento del registro sin procesar. |
alert.event_values.ipv4NetworkEvent/username | principal.user.userid | El usuario del registro sin procesar |
alert.event_values.processEvent/md5 | target.process.file.md5 | El hash MD5 del proceso del registro sin procesar. |
alert.event_values.processEvent/parentPid | principal.process.pid | El ID de proceso superior del registro sin procesar. |
alert.event_values.processEvent/parentProcess | principal.process.file.full_path | Es el nombre del proceso superior del registro sin procesar. |
alert.event_values.processEvent/parentProcessPath | principal.process.file.full_path | Es la ruta del proceso superior del registro sin procesar. |
alert.event_values.processEvent/pid | target.process.pid | El ID de proceso del registro sin procesar. |
alert.event_values.processEvent/process | target.process.file.full_path | Es el nombre del proceso del registro sin procesar. |
alert.event_values.processEvent/processCmdLine | target.process.command_line | La línea de comandos del proceso del registro sin procesar |
alert.event_values.processEvent/processPath | target.process.file.full_path | La ruta de acceso del proceso desde el registro sin procesar. |
alert.event_values.processEvent/timestamp | read_only_udm.metadata.event_timestamp | La marca de tiempo del evento del registro sin procesar. |
alert.event_values.processEvent/username | principal.user.userid | El usuario del registro sin procesar |
alert.event_values.urlMonitorEvent/hostname | target.hostname | El nombre de host del registro sin procesar. |
alert.event_values.urlMonitorEvent/localPort | principal.port | El puerto local del registro sin procesar. |
alert.event_values.urlMonitorEvent/pid | principal.process.pid | El ID de proceso del registro sin procesar. |
alert.event_values.urlMonitorEvent/process | principal.process.file.full_path | Es el nombre del proceso del registro sin procesar. Se combina con alert.event_values.urlMonitorEvent/processPath para crear la ruta de acceso completa si el SO es Windows. |
alert.event_values.urlMonitorEvent/processPath | principal.process.file.full_path | La ruta de acceso del proceso desde el registro sin procesar. Se combina con alert.event_values.urlMonitorEvent/process para crear la ruta de acceso completa si el SO es Windows. |
alert.event_values.urlMonitorEvent/remoteIpAddress | target.ip | La dirección IP remota del registro sin procesar. |
alert.event_values.urlMonitorEvent/remotePort | target.port | El puerto remoto del registro sin procesar. |
alert.event_values.urlMonitorEvent/requestUrl | target.url | La URL solicitada del registro sin procesar. |
alert.event_values.urlMonitorEvent/timestamp | read_only_udm.metadata.event_timestamp | La marca de tiempo del evento del registro sin procesar. |
alert.event_values.urlMonitorEvent/urlMethod | network.http.method | El método HTTP del registro sin procesar. |
alert.event_values.urlMonitorEvent/userAgent | network.http.user_agent | El usuario-agente del registro sin procesar |
alert.event_values.urlMonitorEvent/username | principal.user.userid | El usuario del registro sin procesar |
alert.indicator._id | security_result.about.labels.value | El ID del indicador del registro sin procesar. |
alert.indicator.name | read_only_udm.security_result.summary | Es el nombre del indicador del registro sin procesar. |
alert.indicator.url | security_result.about.labels.value | La URL del indicador del registro sin procesar. |
alert.multiple_match | read_only_udm.metadata.description | El mensaje de coincidencia múltiple del registro sin procesar |
alert.source | additional.fields.value.string_value | Es la fuente de la alerta del registro sin procesar. |
authmethod | extensions.auth.mechanism | Es el método de autenticación del registro sin procesar. Establece el valor en LOCAL si es local o LOCAL , de lo contrario, configúralo en MECHANISM_OTHER . |
authsubmethod | extensions.auth.auth_details | Es el submétodo de autenticación del registro sin procesar, convertido a mayúsculas. |
cliente | principal.ip | La dirección IP del cliente del registro sin procesar. |
conditions.data.tests[].token | security_result.detection_fields.key | Es el token de las pruebas de condiciones en el registro sin procesar. |
conditions.data.tests[].value | security_result.detection_fields.value | Es el valor de las pruebas de condiciones en el registro sin procesar. |
descripción | read_only_udm.metadata.description | Es la descripción del registro sin procesar. |
host.agent_version | read_only_udm.metadata.product_version | Es la versión del agente del registro sin procesar. |
host.containment_state | read_only_udm.principal.containment_state | El estado de contención del registro sin procesar. |
host.domain | read_only_udm.principal.administrative_domain | El dominio del registro sin procesar. |
host.hostname | read_only_udm.principal.hostname | El nombre de host del registro sin procesar. |
host.os.platform | read_only_udm.principal.platform | Es la plataforma del sistema operativo del registro sin procesar. |
host.os.product_name | read_only_udm.principal.platform_version | Es el nombre del producto del sistema operativo del registro sin procesar. |
host.primary_ip_address | read_only_udm.principal.ip | La dirección IP principal del registro sin procesar. |
host.primary_mac | read_only_udm.principal.mac | La dirección MAC principal del registro sin procesar, con los caracteres - reemplazados por : |
host_ | principal.hostname | El nombre de host del registro sin procesar. |
host_details.data.agent_version | read_only_udm.metadata.product_version | Es la versión del agente del registro sin procesar. |
host_details.data.containment_state | read_only_udm.security_result.severity_details | El estado de contención del registro sin procesar. |
host_details.data.domain | read_only_udm.principal.administrative_domain | El dominio del registro sin procesar. |
host_details.data.hostname | read_only_udm.principal.hostname | El nombre de host del registro sin procesar. |
host_details.data.os.platform | read_only_udm.principal.platform | Es la plataforma del sistema operativo del registro sin procesar. |
host_details.data.os.product_name | read_only_udm.principal.platform_version | Es el nombre del producto del sistema operativo del registro sin procesar. |
host_details.data.primary_ip_address | read_only_udm.principal.ip | La dirección IP principal del registro sin procesar. |
host_details.data.primary_mac | read_only_udm.principal.mac | La dirección MAC principal del registro sin procesar, con los caracteres - reemplazados por : . |
indicators.data.description | read_only_udm.metadata.description | Es la descripción del indicador del registro sin procesar. |
línea | target.application | La línea del registro sin procesar. |
localusername | target.user.user_display_name | El nombre de usuario local del registro sin procesar |
principal_ip | principal.ip | La dirección IP principal del registro sin procesar. |
inversa | read_only_udm.principal.application | Es el nombre del proceso del registro sin procesar. |
process_id | read_only_udm.principal.process.pid | El ID de proceso del registro sin procesar. |
referrer | network.http.referral_url | La URL de referencia del registro sin procesar. |
remoteaddress | principal.ip | La dirección remota del registro sin procesar. |
solicitud | additional.fields.value.string_value | La solicitud del registro sin procesar. |
rol | target.user.role_name | El rol del registro sin procesar |
servidor | target.resource.attribute.labels.value | El servidor del registro sin procesar. |
sessionID | network.session_id | El ID de sesión del registro sin procesar. |
gravedad, | security_result.severity | Se establece en LOW , MEDIUM o HIGH según la gravedad del registro sin procesar. |
target_host | read_only_udm.target.hostname | El nombre de host de destino del registro sin procesar |
target_ip | target.ip | La dirección IP de destino del registro sin procesar. |
target_ip1 | target.ip | La dirección IPv6 de destino del registro sin procesar |
timestamp | timestamp | La marca de tiempo del registro sin procesar. |
upstream | target.url | La URL upstream del registro sin procesar. |
nombre de usuario | target.user.userid | El nombre de usuario del registro sin procesar. |
Cambios
2024-12-12
Mejora:
- Se agregó compatibilidad con el nuevo formato de registros JSON.
2024-10-23
Mejora:
- Se asignó
cs12
aadditional.fields
. - Se asignó
cs9
atarget.process.file.md5
.
2024-10-15
Mejora:
- Se asignaron
account_name
,UUID
,Mitre
,host_details.data.sysinfo.url
,host_details.route
,host_details.data.reported_clone
yhost_details.data.timezone
asecurity_result.detection_fields
. - Se asignó
Desc
ametadata.description
. - Se asignó
Confidence
asecurity_result.confidence
. - Se asignó
alert.appliance._id
aadditional.fields
. - Se asignaron
host_details.data.stats.acqs
,host_details.data.stats.alerting_conditions
,host_details.data.stats.alerts
,host_details.data.stats.exploit_alerts
,host_details.data.stats.exploit_blocks
yhost_details.data.stats.false_positive_alerts
asecurity_result.detection_fields
.
2024-09-12
Mejora:
- Se asignaron
categoryOutcome
ycs13
aadditional.fields
. - Se asignó
cs6
atarget.process.file.sha1
. - Se asignó
cs9
atarget.process.file.md5
.
2024-08-28
Mejora:
- Se asignó
host_details.message
asecurity_result.action_details
. - Se asignaron
alert.md5values
,alert.resolution
,alert.is_false_positive
yalert.alert_type
aadditional.fields
. - Se asignó
type.threat_type
asecurity_result.threat_name
. - Se asignó
ent.lms_event_id
ametadata.product_log_id
. - Se asignó
email.smtp.mail_from
anetwork.email.from
. - Se asignó
email.headers.subject
anetwork.email.subject
. - Se asignó
email.headers.to
anetwork.email.to
. - Se asignaron
ent.type
,ent.id
,ent.name
,ent.object_source
,ent.binary
yent.attributes.scan_id
asecurity_result.detection_fields
.
2024-08-13
Mejora:
- Se asignó
cs11Label
aadditional_cs11Label.key
. - Se asignó
cs11
aadditional_cs11.value
.
2024-04-04
Mejora:
- Se agregó un patrón de Grok para recuperar datos JSON y analizar registros sin analizar.
- Se asignó
alert.sysinfo.mac_address
aprincipal.mac
. - Se asignó
host_details.data.agent_version
ametadata.product_version
. - Se asignó
alert.url
ametadata.url_back_to_product
. - Se asignó
description
ametadata.description
. - Se asignó
alert.event_type
ametadata.product_event_type
. - Se asignó
alert.agent._id
aprincipal.asset.asset_id
. - Se asignó
alert.event_id
ametadata.product_log_id
.
2024-04-03
Mejora:
- Se asignó
deviceCustomDate1Label
aadditional_deviceCustomDate1.key
. - Se asignó
deviceCustomDate1
aadditional_deviceCustomDate1.value
. - Se asignó
deviceCustomDate2
aadditional_deviceCustomDate2.value
.
2024-04-02
Mejora:
- Se agregó una verificación de regex a
fileHash
para asignar md5 y sha256, respectivamente.
2024-01-04
Mejora:
- Se agregó compatibilidad con registros descartados.
- Se asignó
client
aprincipal.ip
. - Se asignó
principal_ip
aprincipal.ip
. - Se asignó
remoteaddress
aprincipal.ip
. - Se asignó
host_
aprincipal.hostname
. - Se asignó
line
aprincipal.application
. - Se asignó
username
aprincipal.user.userid
. - Se asignó
client_app_type
aprincipal.resource.attribute.labels
. - Se asignó
upstream
atarget.url
. - Se asignó
role
atarget.user.role_name
. - Se asignó
server
atarget.resource.attribute.labels
. - Se asignó
localusername
atarget.user.user_display_name
. - Se asignó
request
aadditional.fields
. - Se asignó
mlocked
aadditional.fields
. - Se asignó
kernel_stack
aadditional.fields
. - Se asignó
sessionID
anetwork.session_id
. - Se asignó
auth_mechanism
aextensions.auth.mechanism
. - Se asignó
authsubmethod
aextensions.auth.auth_details
.
2023-05-08
Mejora:
- Se admite un nuevo tipo de registros JSON.
client_ip
se asignó aprincipal.ip
.client_src_port
se asignó aprincipal.port
.ssl_version
asignóto
network.tls.version_protocol`.ssl_cipher
se asignó anetwork.tls.cipher
.method
se asignó anetwork.http.method
.uri_path
se asignó anetwork.http.referral_url
.persistent_session_id
se asignó anetwork.session_id
.uri_query
se asignó aadditional.fields
.rewritten_uri_query
se asignó aadditional.fields
.virtualservice
se asignó aadditional.fields
.service_engine
se asignó aadditional.fields
.etag
se asignó aadditional.fields
.pool
se asignó aadditional.fields
.pool_name
se asignó aadditional.fields
.request_state
se asignó aadditional.fields
.compression
se asignó aadditional.fields
.vs_name
se asignó aadditional.fields
.request_id
se asignó aadditional.fields
.headers_received_from_server.Server
se asignó aadditional.fields
.headers_received_from_server.X-Request-Id
se asignó aadditional.fields
.headers_received_from_server.X-Server-Id
se asignó aadditional.fields
.
2023-04-24
Mejora:
- Se agregó compatibilidad con los registros en formato CEF.
2022-08-19
Corrección de errores:
- Se asignó event_values.ipv4NetworkEvent/localIP a
principal.ip
. - Se cambió el nombre del evento a event1 del registro para evitar un error de descriptor.
- Se agregó una verificación de nulidad a host_details.data.primary_ip_address antes de asignarla a
principal.ip
. - Se agregó una verificación de nulidad a host_details.data.primary_mac antes de asignarlo a
principal.mac
. - Se agregó la verificación de nulo a alert.reported_at antes de la asignación a
event.timestamp
.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.