Good Day.
I am trying to parse the following threat inetl log with IP_ADDRESS and I am getting:
LOG_PARSING_GENERATED_INVALID_EVENT: "generic::invalid_argument: unknown or unset entity type"
If the log is a MD5, SHA1 or SHA256 or DOMAIN_NAME event then the parser works.
The log is as follows:
{
"id": "2105",
"event_id": "102",
"object_id": "343",
"object_relation": "ip-dst",
"category": "Network activity",
"type": "ip-dst",
"to_ids": true,
"uuid": "c4e7ea82-b7bc-414b-8d68-7b1d5739182f",
"timestamp": "1609421134",
"distribution": "5",
"sharing_group_id": "0",
"comment": "",
"deleted": false,
"disable_correlation": false,
"first_seen": null,
"last_seen": null,
"value": "1.1.1.1"
}
The parser is as follows:
filter {
mutate {
replace => {
"id" => ""
"type" => ""
"value" => ""
"confidence" => ""
"category" => ""
"timestamp" => ""
"entity_type" => ""
"entity_event" => ""
"uuid" => ""
}
}
json {
source => "message"
array_function => "split_columns"
}
mutate {
replace => {
"event.idm.entity.metadata.vendor_name" => "IOC"
"event.idm.entity.metadata.product_name" => "IOC"
"event.idm.entity.metadata.description" => "%{category}"
"event.idm.entity.metadata.product_entity_id" => "%{uuid}"
}
}
if [type] == "sha256" {
mutate {
replace => {
"event.idm.entity.metadata.entity_type" => "FILE"
"event.idm.entity.entity.file.sha256" => "%{value}"
}
}
}
else if [type] == "sha1" {
mutate {
replace => {
"event.idm.entity.metadata.entity_type" => "FILE"
"entity_event.entity.resource.type" => "%{type}"
}
}
}
else if [type] == "domain" {
mutate {
replace => {
"event.idm.entity.metadata.entity_type" => "DOMAIN_NAME"
"event.idm.entity.entity.hostname" => "%{value}"
}
}
}
else if [type] == "md5" {
mutate {
replace => {
"event.idm.entity.metadata.entity_type" => "FILE"
"event.idm.entity.entity.file.md5" => "%{value}"
}
}
}
# else if [type] in ["uri", "url", "link"] {
# mutate {
# replace => {
# "event.idm.entity.metadata.entity_type" => "URL"
# "event.idm.entity.entity.url" => "%{value}"
# }
# }
# }
else if [type] == "ip-dst" and [value] != "" {
mutate {
replace => {
"event.idm.entity.metadata.entity_type" => "IP_ADDRESS"
}
}
if [event][idm][entity][metadata][entity_type] == "IP_ADDRESS" {
mutate {
merge => {
"event.idm.entity.entity.ip" => "value"
}
on_error => "value_empty"
}
mutate {
convert => {
"value" => "bytes"
}
on_error => "failed_to_convert_value"
}
mutate {
rename => {
"value" => "event.ioc.ip_and_ports.ip_address"
}
on_error => "value_not_found"
}
}
}
statedump {}
mutate {
merge => { "@output" => "event" }
}
}
