Разбор журналов событий Windows, хранящихся в системе syslog-ng с несколькими строками и вкладками - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь проанализировать пару сотен гигов журналов событий Windows, которые не были отформатированы с использованием SNARE, NXlog или Adiscon (я не уверен, как они отправили их на сервер syslog).

Проблема, с которой я сталкиваюсь, заключается в определении лучшего / наиболее эффективного способа анализа файла событий Windows с несколькими строками и несколькими вкладками.У меня нет соответствующего файла EVTX (это просто файл журнала).

Моя цель - поместить каждое событие в одну строку, без вкладок, чтобы я мог легче разобрать его, используя grep и awk.

tr -d "\n\r" < windows.log получает все содержимое в одну строку (удаляет новые строки), и теперь мне нужно будет убрать вкладки (вкладки менее важные, чем новые строки) и найти способ добавлять новую строку каждый разДО того, как увидят «14 января».

Возможно, есть лучший способ сделать это с Python, Perl или Powershell, но я ограничен в этом опыте.

Пример файла журнала:

Jan 14 00:00:02 server.host.com MSWinEventLog    5       Security        22159648        Sun Jan 13 23:59:35 2019        4634    Microsoft-Windows-Security-Auditing             N/A     Audit Success   server.host.com  12545   An account was logged off.

Subject:
        Security ID:            S-1-5-21-3015042641-2194367929-112691256-2051
        Account Name:           SVCACCT
        Account Domain:         MYDOMAIN
        Logon ID:               0xD7FC64F5

Logon Type:                     3

This event is generated when a logon session is destroyed. It may be positively correlated with a logon event using the Logon ID value. Logon IDs are only unique between reboots on the same computer.

Jan 14 00:00:02 server.host.com  MSWinEventLog    5       Security        22159649        Sun Jan 13 23:59:35 2019        4634    Microsoft-Windows-Security-Auditing             N/A     Audit Success   server.host.com   12545   An account was logged off.

Subject:
        Security ID:            S-1-5-21-3015042641-2194367929-112691256-12106
        Account Name:           SVCACCT2
        Account Domain:         MYDOMAIN
        Logon ID:               0xD7FC600A

Logon Type:                     3

This event is generated when a logon session is destroyed. It may be positively correlated with a logon event using the Logon ID value. Logon IDs are only unique between reboots on the same computer.

Пример сжатого файла журнала:

Jan 14 00:00:02 server.host.com MSWinEventLog    5       Security        22159648        Sun Jan 13 23:59:35 2019        4634    Microsoft-Windows-Security-Auditing             N/A     Audit Success   server.host.com  12545   An account was logged off. Subject: Security ID:            S-1-5-21-3015042641-2194367929-112691256-2051 Account Name:           SVCACCT Account Domain:         MYDOMAIN Logon ID:               0xD7FC64F5 Logon Type:                     3 This event is generated when a logon session is destroyed. It may be positively correlated with a logon event using the Logon ID value. Logon IDs are only unique between reboots on the same computer.

Jan 14 00:00:02 server.host.com MSWinEventLog    5       Security        22159648        Sun Jan 13 23:59:35 2019        4634    Microsoft-Windows-Security-Auditing             N/A     Audit Success   server.host.com  12545   An account was logged off. Subject: Security ID:            S-1-5-21-3015042641-2194367929-112691256-2051 Account Name:           SVCACCT2 Account Domain:         MYDOMAIN Logon ID:               0xD7FC64F5 Logon Type:                     3 This event is generated when a logon session is destroyed. It may be positively correlated with a logon event using the Logon ID value. Logon IDs are only unique between reboots on the same computer.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Вместо того, чтобы пытаться сжать каждую запись на 1 строку, а затем пытаться проанализировать ее, просто обрабатывайте каждый 12-строчный блок как одну запись.Например:

$ cat tst.awk
{
    gsub(/\r/,"")
    gsub(/^[[:space:]]+|[[:space:]]+$/,"")
    lineNr = (NR - 1) % 12 + 1
}
lineNr == 1 {
    f["hd"] = $0
}
lineNr ~ /[45679]/ {
    tag = val = $0
    sub(/:.*/,"",tag)
    sub(/[^:]+:[[:space:]]*/,"",val)
    f[tag] = val
}
lineNr == 11 {
    f["tl"] = $0
    for (tag in f) {
        print tag, "=", f[tag]
    }
    print "-------"
}

.

$ awk -f tst.awk file
tl = This event is generated when a logon session is destroyed. It may be positively correlated with a logon event using the Logon ID value. Logon IDs are only unique between reboots on the same computer.
Logon ID = 0xD7FC64F5
Logon Type = 3
Account Name = SVCACCT
Security ID = S-1-5-21-3015042641-2194367929-112691256-2051
hd = Jan 14 00:00:02 server.host.com MSWinEventLog    5       Security        22159648        Sun Jan 13 23:59:35 2019        4634    Microsoft-Windows-Security-Auditing             N/A     Audit Success   server.host.com  12545   An account was logged off.
Account Domain = MYDOMAIN
-------
tl = This event is generated when a logon session is destroyed. It may be positively correlated with a logon event using the Logon ID value. Logon IDs are only unique between reboots on the same computer.
Logon ID = 0xD7FC600A
Logon Type = 3
Account Name = SVCACCT2
Security ID = S-1-5-21-3015042641-2194367929-112691256-12106
hd = Jan 14 00:00:02 server.host.com  MSWinEventLog    5       Security        22159649        Sun Jan 13 23:59:35 2019        4634    Microsoft-Windows-Security-Auditing             N/A     Audit Success   server.host.com   12545   An account was logged off.
Account Domain = MYDOMAIN
-------

При таком подходе вы можете просто ссылаться на каждое поле по имени для печати или анализа.Вы можете расширить вышеприведенное, чтобы отобразить все отдельные поля в первой строке в отдельные теги / значения, например,

lineNr==1 {
    f["timestamp"] = $1 " " $2 " " $3
    ...
}

или с соответствием регулярному выражению, или как угодно.После того, как вы сделали вышеупомянутое, становится абсолютно тривиально анализировать или печатать все, что вам нравится в оставшейся части сценария.

0 голосов
/ 15 февраля 2019

Сначала мы удалим все управляющие символы.Затем мы ищем «14 января» и добавляем новую строку перед ним.Наконец, мы вызываем tr с флагом -s, который заменяет повторяющиеся символы одним символом.Я не совсем уверен, насколько это эффективно, но это может помочь вам начать.

tr -d "[:cntrl:]" < windows.log | sed 's/Jan 14/\'$'\n&/g' | tr -s " "

Результат

Jan 14 00:00:02 server.host.com MSWinEventLog 5 Security 22159648 Sun Jan 13 23:59:35 2019 4634 Microsoft-Windows-Security-Auditing N/A Audit Success server.host.com 12545 An account was logged off.Subject: Security ID: S-1-5-21-3015042641-2194367929-112691256-2051 Account Name: SVCACCT Account Domain: MYDOMAIN Logon ID: 0xD7FC64F5Logon Type: 3This event is generated when a logon session is destroyed. It may be positively correlated with a logon event using the Logon ID value. Logon IDs are only unique between reboots on the same computer.
Jan 14 00:00:02 server.host.com MSWinEventLog 5 Security 22159649 Sun Jan 13 23:59:35 2019 4634 Microsoft-Windows-Security-Auditing N/A Audit Success server.host.com 12545 An account was logged off.Subject: Security ID: S-1-5-21-3015042641-2194367929-112691256-12106 Account Name: SVCACCT2 Account Domain: MYDOMAIN Logon ID: 0xD7FC600ALogon Type: 3This event is generated when a logon session is destroyed. It may be positively correlated with a logon event using the Logon ID value. Logon IDs are only unique between reboots on the same computer.
...