Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Zeek] Add additional data sets #3340

Merged
merged 12 commits into from
Jun 28, 2022
6 changes: 6 additions & 0 deletions packages/zeek/_dev/build/docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,12 @@ contains kerberos data.

{{fields "kerberos"}}

### known_hosts
legoguy1000 marked this conversation as resolved.
Show resolved Hide resolved

The `known_hosts` dataset captures information about SSL/TLS certificates seen on the local network.
legoguy1000 marked this conversation as resolved.
Show resolved Hide resolved

{{fields "known_hosts"}}

### modbus

The `modbus` dataset collects the Zeek modbus.log file, which contains
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"ts":"2020-12-31T15:15:53.690221Z","host":"192.168.4.1","port_num":443,"subject":"L=San Jose,ST=CA,O=Ubiquiti Networks,CN=UBNT Router UI,C=US","issuer_subject":"L=San Jose,ST=CA,O=Ubiquiti Networks,CN=UBNT Router UI,C=US","serial":"98D0AD47D748CDD6"}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
fields:
"@timestamp": "2020-04-28T11:07:58.223Z"
tags:
- preserve_original_event
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"ts":"2020-12-31T15:15:53.690221Z","host":"192.168.4.1","port_num":443,"subject":"L=San Jose,ST=CA,O=Ubiquiti Networks,CN=UBNT Router UI,C=US","issuer_subject":"L=San Jose,ST=CA,O=Ubiquiti Networks,CN=UBNT Router UI,C=US","serial":"98D0AD47D748CDD6"}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"expected": [
{
"@timestamp": "2020-12-31T15:15:53.690Z",
"ecs": {
"version": "8.2.0"
},
"event": {
"category": "network",
"created": "2020-04-28T11:07:58.223Z",
"kind": "info",
"original": "{\"ts\":\"2020-12-31T15:15:53.690221Z\",\"host\":\"192.168.4.1\",\"port_num\":443,\"subject\":\"L=San Jose,ST=CA,O=Ubiquiti Networks,CN=UBNT Router UI,C=US\",\"issuer_subject\":\"L=San Jose,ST=CA,O=Ubiquiti Networks,CN=UBNT Router UI,C=US\",\"serial\":\"98D0AD47D748CDD6\"}"
},
"host": {
"ip": "192.168.4.1"
},
"network": {
"type": "ipv4"
},
"related": {
"ip": [
"192.168.4.1"
]
},
"server": {
"ip": "192.168.4.1",
"port": 443
},
"tags": [
"preserve_original_event"
],
"tls": {
"server": {
"x509": {
"issuer": {
"distinguished_name": "L=San Jose,ST=CA,O=Ubiquiti Networks,CN=UBNT Router UI,C=US"
},
"serial_number": "98D0AD47D748CDD6",
"subject": {
"distinguished_name": "L=San Jose,ST=CA,O=Ubiquiti Networks,CN=UBNT Router UI,C=US"
}
}
}
}
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
vars:
base_paths:
- "{{SERVICE_LOGS_DIR}}"
input: logfile
data_stream:
vars: ~
legoguy1000 marked this conversation as resolved.
Show resolved Hide resolved
21 changes: 21 additions & 0 deletions packages/zeek/data_stream/known_certs/agent/stream/log.yml.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
paths:
{{#each base_paths}}
{{#each ../filenames}}
- {{../this}}/{{this}}
{{/each}}
{{/each}}
exclude_files: [".gz$"]
tags:
{{#if preserve_original_event}}
- preserve_original_event
{{/if}}
{{#each tags as |tag i|}}
- {{tag}}
{{/each}}
{{#contains "forwarded" tags}}
publisher_pipeline.disable_host: true
{{/contains}}
{{#if processors}}
processors:
{{processors}}
{{/if}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
---
description: Pipeline for normalizing Zeek conn.log
legoguy1000 marked this conversation as resolved.
Show resolved Hide resolved
processors:
- rename:
field: message
target_field: event.original
- json:
field: event.original
target_field: json
- drop:
description: Drop if no timestamp (invalid json)
if: 'ctx?.json?.ts == null'

# Sets event.created from the @timestamp field generated by filebeat before being overwritten further down
- set:
field: event.created
copy_from: "@timestamp"
- set:
field: ecs.version
value: '8.2.0'
- set:
field: event.kind
legoguy1000 marked this conversation as resolved.
Show resolved Hide resolved
value: info
- set:
field: event.category
value: network
- date:
field: json.ts
formats:
- UNIX
- ISO8601
- rename:
field: json.host
target_field: host.ip
ignore_missing: true
- set:
field: network.type
value: ipv4
if: ctx.host?.ip.contains('.')
- set:
field: network.type
value: ipv6
if: ctx.host?.ip.contains(':')
- append:
field: related.ip
value: "{{host.ip}}"
if: ctx?.host?.ip != null
allow_duplicates: false
- geoip:
field: host.ip
target_field: host.geo
ignore_missing: true
- set:
field: server
copy_from: host
ignore_empty_value: true
- rename:
field: json.port_num
target_field: server.port
ignore_missing: true
- geoip:
database_file: GeoLite2-ASN.mmdb
field: server.ip
target_field: server.as
properties:
- asn
- organization_name
ignore_missing: true
- rename:
field: server.as.asn
target_field: server.as.number
ignore_missing: true
- rename:
field: server.as.organization_name
target_field: server.as.organization.name
ignore_missing: true
- rename:
field: json.subject
target_field: tls.server.x509.subject.distinguished_name
ignore_missing: true
- rename:
field: json.issuer_subject
target_field: tls.server.x509.issuer.distinguished_name
ignore_missing: true
- rename:
field: json.serial
target_field: tls.server.x509.serial_number
ignore_missing: true
- remove:
field:
- json
ignore_missing: true
- remove:
field: event.original
if: "ctx?.tags == null || !(ctx.tags.contains('preserve_original_event'))"
ignore_failure: true
ignore_missing: true
on_failure:
- set:
field: error.message
value: "{{ _ingest.on_failure_message }}"
180 changes: 180 additions & 0 deletions packages/zeek/data_stream/known_certs/fields/agent.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
- name: cloud
title: Cloud
group: 2
description: Fields related to the cloud or infrastructure the events are coming from.
footnote: "Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on."
type: group
fields:
- name: account.id
level: extended
type: keyword
ignore_above: 1024
description: "The cloud account or organization id used to identify different entities in a multi-tenant environment.\nExamples: AWS account id, Google Cloud ORG Id, or other unique identifier."
example: 666777888999
- name: availability_zone
level: extended
type: keyword
ignore_above: 1024
description: Availability zone in which this host is running.
example: us-east-1c
- name: instance.id
level: extended
type: keyword
ignore_above: 1024
description: Instance ID of the host machine.
example: i-1234567890abcdef0
- name: instance.name
level: extended
type: keyword
ignore_above: 1024
description: Instance name of the host machine.
- name: machine.type
level: extended
type: keyword
ignore_above: 1024
description: Machine type of the host machine.
example: t2.medium
- name: provider
level: extended
type: keyword
ignore_above: 1024
description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean.
example: aws
- name: region
level: extended
type: keyword
ignore_above: 1024
description: Region in which this host is running.
example: us-east-1
- name: project.id
type: keyword
description: Name of the project in Google Cloud.
- name: image.id
type: keyword
description: Image ID for the cloud instance.
- name: container
title: Container
group: 2
description: "Container fields are used for meta information about the specific container that is the source of information.\nThese fields help correlate data based containers from any runtime."
type: group
fields:
- name: id
level: core
type: keyword
ignore_above: 1024
description: Unique container id.
- name: image.name
level: extended
type: keyword
ignore_above: 1024
description: Name of the image the container was built on.
- name: labels
level: extended
type: object
object_type: keyword
description: Image labels.
- name: name
level: extended
type: keyword
ignore_above: 1024
description: Container name.
- name: host
title: Host
group: 2
description: "A host is defined as a general computing instance.\nECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes."
type: group
fields:
- name: architecture
level: core
type: keyword
ignore_above: 1024
description: Operating system architecture.
example: x86_64
- name: domain
level: extended
type: keyword
ignore_above: 1024
description: "Name of the domain of which the host is a member.\nFor example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider."
example: CONTOSO
default_field: false
- name: hostname
level: core
type: keyword
ignore_above: 1024
description: "Hostname of the host.\nIt normally contains what the `hostname` command returns on the host machine."
- name: id
level: core
type: keyword
ignore_above: 1024
description: "Unique host id.\nAs hostname is not always unique, use values that are meaningful in your environment.\nExample: The current usage of `beat.name`."
- name: ip
level: core
type: ip
description: Host ip addresses.
- name: mac
level: core
type: keyword
ignore_above: 1024
description: Host mac addresses.
- name: name
level: core
type: keyword
ignore_above: 1024
description: "Name of the host.\nIt can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use."
- name: os.family
level: extended
type: keyword
ignore_above: 1024
description: OS family (such as redhat, debian, freebsd, windows).
example: debian
- name: os.kernel
level: extended
type: keyword
ignore_above: 1024
description: Operating system kernel version as a raw string.
example: 4.4.0-112-generic
- name: os.name
level: extended
type: keyword
ignore_above: 1024
multi_fields:
- name: text
type: text
norms: false
default_field: false
description: Operating system name, without the version.
example: Mac OS X
- name: os.platform
level: extended
type: keyword
ignore_above: 1024
description: Operating system platform (such centos, ubuntu, windows).
example: darwin
- name: os.version
level: extended
type: keyword
ignore_above: 1024
description: Operating system version as a raw string.
example: 10.14.1
- name: type
level: core
type: keyword
ignore_above: 1024
description: "Type of host.\nFor Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment."
- name: containerized
type: boolean
description: >
If the host is a container.

- name: os.build
type: keyword
example: "18D109"
description: >
OS build information.

- name: os.codename
type: keyword
example: "stretch"
description: >
OS codename, if any.

Loading