Drop event if condition

Hi all. We are trying to accomplish such task:
Log auth events from windows security logs.
We set winlogbeat to export data to logstash. But problem is that there are too much incoming events with the same id. So we need to filter it by certain field.
We made logstash filter like:

if [event][code] == 4624 and [winlog][event_data][LogonType] != 10 {
drop { }

But its no go. All 4624 events dropped

Then we made winlogbeat settings like:
– name: Security
event_id: 4624
processors:
– drop_event.when.not.equals.winlog.event_data.LogonType: 10

But it does not work too. Also blocks all 4624 events.

Can someone explain, how correctly filter event by field value?

What does the event look like? Either use

output { stdout { codec => rubydebug } }

or copy an event from the JSON tab of an expanded event in the Discover view of kibana.

{
"_index": "logstash-2020.01.17",
"_type": "_doc",
"_id": "jFF_sm8B1NsmaK3yBbik",
"_version": 1,
"_score": null,
"_source": {
"event": {
"created": "2020-01-17T07:54:25.032Z",
"kind": "event",
"code": 4624,
"action": "Logon",
"provider": "Microsoft-Windows-Security-Auditing"
},
"winlog": {
"provider_name": "Microsoft-Windows-Security-Auditing",
"keywords": [
"Аудит успеха"
],
"task": "Logon",
"activity_id": "{77f1652e-cb04-001e-4165-f17704cbd501}",
"provider_guid": "{54849625-5478-4994-a5ba-3e3b0328c30d}",
"record_id": 19178,
"api": "wineventlog",
"event_id": 4624,
"computer_name": "SRV",
"process": {
"thread": {
"id": 8572
},
"pid": 1004
},
"channel": "Security",
"version": 2,
"opcode": "Сведения",
"event_data": {
"KeyLength": "0",
"TargetUserSid": "S-1-5-18",
"RestrictedAdminMode": "-",
"SubjectUserSid": "S-1-5-18",
"SubjectUserName": "SRV$",
"ProcessId": "0x3b8",
"TargetLogonId": "0x3e7",
"ElevatedToken": "%%1842",
"TransmittedServices": "-",
"WorkstationName": "-",
"SubjectDomainName": "Domain",
"ProcessName": "C:\Windows\System32\services.exe",
"IpPort": "-",
"TargetLinkedLogonId": "0x0",
"LogonType": "5",
"LogonProcessName": "Advapi ",
"ImpersonationLevel": "%%1833",
"LogonGuid": "{00000000-0000-0000-0000-000000000000}",
"SubjectLogonId": "0x3e7",
"TargetOutboundUserName": "-",
"LmPackageName": "-",
"TargetDomainName": "NT AUTHORITY",
"IpAddress": "-",
"AuthenticationPackageName": "Negotiate",
"VirtualAccount": "%%1843",
"TargetUserName": "СИСТЕМА",
"TargetOutboundDomainName": "-"
}
},
"agent": {
"type": "winlogbeat",
"version": "7.5.1",
"id": "bc5112ba-5bd9-49bc-975d-b11e08201e86",
"hostname": "SRV",
"ephemeral_id": "e23089d2-d9fc-444c-91c2-625d88df8f29"
},
"host": {
"name": "SRV",
"id": "b3112a40-f39a-46de-be62-2fd42228c4a9",
"hostname": "SRV",
"os": {
"kernel": "10.0.17763.1 (WinBuild.160101.0800)",
"build": "17763.1",
"name": "Windows Server 2019 Standard",
"platform": "windows",
"version": "10.0",
"family": "windows"
},
"architecture": "x86_64"
},
"log": {
"level": "сведения"
},
"@timestamp": "2020-01-17T07:54:24.402Z",
"tags": [
"beats_input_codec_plain_applied",
"logstash_output_tag"
],
"message": "Вход в учетную запись выполнен успешно.\n\nСубъект:\n\tИД безопасности:\t\tS-1-5-18\n\tИмя учетной записи:\t\tSRV$\n\tДомен учетной записи:\t\tDomain\n\tИД входа:\t\t0x3E7\n\nСведения о входе:\n\tТип входа:\t\t5\n\tОграниченный режим администрирования:\t-\n\tВиртуальная учетная запись:\t\tНет\n\tРасширенный маркер:\t\tДа\n\nУровень олицетворения:\t\tОлицетворение\n\nНовый вход:\n\tИД безопасности:\t\tS-1-5-18\n\tИмя учетной записи:\t\tСИСТЕМА\n\tДомен учетной записи:\t\tNT AUTHORITY\n\tИД входа:\t\t0x3E7\n\tСвязанный ИД входа:\t\t0x0\n\tСетевое имя учетной записи:\t-\n\tСетевой домен учетной записи:\t-\n\tGUID входа:\t\t{00000000-0000-0000-0000-000000000000}\n\nСведения о процессе:\n\tИД процесса:\t\t0x3b8\n\tИмя процесса:\t\tC:\Windows\System32\services.exe\n\nСведения о сети:\n\tИмя рабочей станции:\t-\n\tСетевой адрес источника:\t-\n\tПорт источника:\t\t-\n\nПодробные сведения о проверке подлинности:\n\tПроцесс входа:\t\tAdvapi \n\tПакет проверки подлинности:\tNegotiate\n\tПромежуточные службы:\t-\n\tИмя пакета (только NTLM):\t-\n\tДлина ключа:\t\t0\n\nДанное событие возникает при создании сеанса входа. Оно создается на компьютере, к которому был установлен доступ.\n\nПоля "Субъект" указывают на учетную запись локальной системы, запросившую вход. Обычно это служба, например служба "Сервер", или локальный процесс, такой как Winlogon.exe или Services.exe.\n\nВ поле "Тип входа" указан тип выполненного входа. Самыми распространенными являются типы 2 (интерактивный) и 3 (сетевой).\n\nПоля "Новый вход" указывают на учетную запись, для которой создан новый сеанс входа, то есть на учетную запись, в которую выполнен вход.\n\nВ полях, которые относятся к сети, указан источник запроса на удаленный вход. Имя рабочей станции доступно не всегда, и в некоторых случаях это поле может оставаться незаполненным.\n\nПоле "Уровень олицетворения" задает допустимую степень олицетворения для процессов в данном сеансе входа.\n\nПоля сведений о проверке подлинности содержат подробные данные о конкретном запросе на вход.\n\t- GUID входа — это уникальный идентификатор, который позволяет сопоставить данное событие с событием KDC.\n\t- В поле "Промежуточные службы" указано, какие промежуточные службы участвовали в данном запросе на вход.\n\t- Поле "Имя пакета" указывает на подпротокол, использованный с протоколами NTLM.\n\t- В поле "Длина ключа" указывается длина созданного ключа сеанса. Это поле может иметь значение "0", если ключ сеанса не запрашивался.",
"@version": "1",
"message_head": "Вход в учетную запись выполнен успешно.",
"ecs": {
"version": "1.1.0"
}
},
"fields": {
"@timestamp": [
"2020-01-17T07:54:24.402Z"
],
"event.created": [
"2020-01-17T07:54:25.032Z"
]
},
"sort": [
1579247664402
]
}

event above is the one should be blocked by policy. The field structure is identical, but we need to filter out "LogonType": "5" and others, (except 10) as i wrote earlier

Looking at you doc, [winlog][event_data][LogonType] is a string, so they're all != 10, that's why your condition is always met.

Try:

if [event][code] == 4624 and [winlog][event_data][LogonType] != "10" {
  drop{}
}

Thank you very much! it works now

No problem :wink:

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.