# Интенсив №2. Нормализация и корреляция событий информационной безопасности ## 2.1 Правило нормализации события чтения системного файла События мы получаем с системы IBM AIX, поэтому будем использовать документации по аудиту данной системы: https://www.redbooks.ibm.com/redbooks/pdfs/sg246396.pdf Поток событий доступа к системным файлам: ```syslog= May 19 09:50:06 aix53 local0:info audit: OS_CONF_READ mp OK cat audit object read event detected /etc/shadow ``` ```syslog= Jun 3 00:10:05 aix53 local0:info audit: OS_CONF_READ mp OK cat audit object read event detected /etc/ssh/sshd_config ``` Правило нормализации события доступа к системному файлу ```bash= TEXT = '{time = DATETIME} {event_src.hostname = WORD?} {datafield1 = WORD}:{datafield2 = WORD} {event_src.rule = WORD}: {msgid = "OS_CONF_READ"} {subject.account.name = WORD} {datafield3 = STRING} {subject.process.name = STRING} audit object read event detected {object.path = STRING}' action = "access" subject = "account" object = "configuration" status = "failure" # по умолчанию считаем чтение объекта неудачным # datafield1 используется для сохранения локали # datafield2 используется для определения важности события # datafield3 используется для определения успешности события # если поле datafield3 содержит "OK" то событие чтения удачное if datafield3 == "OK" then status = "success" endif # исходя из документации на аудит AIX устанавливаем важность события switch datafield2 case "info" importance = "info" case "emerg" importance = "high" case "alert" importance = "medium" case "crit" importance = "high" case "err" importance = "high" case "warning" importance = "medium" case "notice" importance = "info" case "debug" importance = "info" endswitch event_src.vendor = "IBM" event_src.title = "AIX" event_src.category = "Operating system" event_src.subsys = "AIX audit sysbsystem" id = "IBM_AIX_audit_OS_CONF_READ_Object_read_event_detected" ``` ![](https://i.imgur.com/N8V47PJ.png) Локализация правила ![](https://i.imgur.com/oQJowRC.png) --- ## 2.2. Правило нормализации входа пользователя Поток ненормализованных событий входа: ```syslog= <134>Sep 22 05:01:48 Message forwarded from sovma131: audit: USER_Login root OK sshd user: ektest tty: ssh ``` ```syslog= <134>Sep 22 04:54:46 audit: USER_Login root OK sshd user: ektest tty: ssh ``` Правило номализации события входа пользователя: ```bash= TEXT = '<{NUMBER}>{time = DATETIME} {"Message forwarded from"?} {src.hostname = WORD?}{":"?} {event_src.rule = WORD}: {msgid = "USER_Login"} {subject.account.privileges = WORD} {datafield1 = WORD} {subject.process.cmdline = STRING } user: {subject.account.name = WORD} tty: {logon_service = WORD}' subject = "account" action = "access" object = "system" status = "failure" # по умолчанию логин неудачный # значания по умолчанию logon_auth_method = "local" # считаем что логин локальный protocol = "-" # локальный - нет сетевого протокола protocol.layer7 = "-" # локальный - нет сетевого протокола logon_auth_method = "local" # аутентификация локальная # поле datafield1 используется для определения успешности события if datafield1 == "OK" then status = "success" endif # определяем сервис через, который произошел логон, нас интересует ssh # переопределяем умолчания if logon_service == "ssh" then protocol = "tcp" protocol.layer7 = logon_service logon_auth_method = "remote" endif importance = "high" event_src.vendor = "IBM" event_src.title = "AIX" event_src.category = "Operating system" event_src.subsys = "AIX audit sysbsystem" id = "IBM_AIX_audit_USER_Login_SSH_Login_success" ``` ![](https://i.imgur.com/tlnmB0t.png) Локализация правила: ![](https://i.imgur.com/RbzXGyP.png) --- ## 2.3. Правило обогащения события входа пользователя События входа не содержат имя источника события, однако мы наверняка знаем имя AIX системы. Поэтому обогатим события входа именем системы aix53. Нормализованные события входа: ```jsonld= {"subject": "account","action": "access","object": "computer","status": "success","datafield1": "OK","event_src.category": "Operating system","event_src.rule": "audit","event_src.subsys": "AIX audit sysbsystem","event_src.title": "AIX","event_src.vendor": "IBM","id": "IBM_AIX_audit_USER_Login_SSH_Login_success","importance": "high","logon_auth_method": "remote","logon_service": "ssh","msgid": "USER_Login","protocol": "tcp","protocol.layer7": "ssh","src.hostname": "sovma131","subject.account.name": "ektest","subject.account.privileges": "root","subject.process.cmdline": "sshd","time": "2022-09-22T05:01:48Z"} ``` ```jsonld= {"subject": "account","action": "access","object": "computer","status": "success","datafield1": "OK","event_src.category": "Operating system","event_src.rule": "audit","event_src.subsys": "AIX audit sysbsystem","event_src.title": "AIX","event_src.vendor": "IBM","id": "IBM_AIX_audit_USER_Login_SSH_Login_success","importance": "high","logon_auth_method": "remote","logon_service": "ssh","msgid": "USER_Login","protocol": "tcp","protocol.layer7": "ssh","subject.account.name": "ektest","subject.account.privileges": "root","subject.process.cmdline": "sshd","time": "2022-09-22T04:54:46Z"} ``` Правило обогащения ```bash= # события логона не содержат имя машины, мы знаем как называется наша система AIX # поэтому обогатим событие логона именем источника события - aix53 event AIX_Login_access: filter { event_src.vendor == "IBM" and event_src.title == "AIX" and event_src.category == "Operating system" and event_src.subsys == "AIX audit sysbsystem" and msgid == "USER_Login" } enrichment Add_AIX_event_src_hostname enrich AIX_Login_access: enrich_fields { event_src.hostname = "aix53" } ``` ![](https://i.imgur.com/XazTHBZ.png) --- ## 2.4. Правило корреляции событий Поток номализованных событий: ```jsonld= {"subject": "account","action": "access","object": "configuration","status": "success","datafield1": "local0","datafield2": "info","datafield3": "OK","event_src.category": "Operating system","event_src.hostname": "aix53","event_src.rule": "audit","event_src.subsys": "AIX audit sysbsystem","event_src.title": "AIX","event_src.vendor": "IBM","id": "IBM_AIX_audit_OS_CONF_READ_Object_read_event_detected","importance": "info","msgid": "OS_CONF_READ","object.path": "/etc/shadow","subject.account.name": "mp","subject.process.name": "cat","time": "2022-10-19T09:50:06Z"} {"subject": "account","action": "access","object": "configuration","status": "success","datafield1": "local0","datafield2": "info","datafield3": "OK","event_src.category": "Operating system","event_src.hostname": "aix53","event_src.rule": "audit","event_src.subsys": "AIX audit sysbsystem","event_src.title": "AIX","event_src.vendor": "IBM","id": "IBM_AIX_audit_OS_CONF_READ_Object_read_event_detected","importance": "info","msgid": "OS_CONF_READ","object.path": "/etc/ssh/sshd_config","subject.account.name": "mp","subject.process.name": "cat","time": "2022-10-19T09:51:05Z"} {"action": "access", "datafield1": "OK", "event_src.category": "Operating system", "event_src.rule": "audit", "event_src.subsys": "AIX audit sysbsystem", "event_src.title": "AIX", "event_src.vendor": "IBM", "id": "IBM_AIX_audit_USER_Login_SSH_Login_success", "importance": "high", "logon_auth_method": "remote", "logon_service": "ssh", "msgid": "USER_Login", "object": "computer", "protocol": "tcp", "protocol.layer7": "ssh", "src.hostname": "sovma131", "status": "success", "subject": "account", "subject.account.name": "ektest", "subject.account.privileges": "root", "subject.process.cmdline": "sshd", "time": "2022-10-19T09:52:48Z", "uuid": "2d4b5643-21f4-4bdf-8eec-460089687551", "count": 1, "event_src.hostname": "aix53"} {"action": "access", "datafield1": "OK", "event_src.category": "Operating system", "event_src.rule": "audit", "event_src.subsys": "AIX audit sysbsystem", "event_src.title": "AIX", "event_src.vendor": "IBM", "id": "IBM_AIX_audit_USER_Login_SSH_Login_success", "importance": "high", "logon_auth_method": "remote", "logon_service": "ssh", "msgid": "USER_Login", "object": "computer", "protocol": "tcp", "protocol.layer7": "ssh", "status": "success", "subject": "account", "subject.account.name": "ektest", "subject.account.privileges": "root", "subject.process.cmdline": "sshd", "time": "2022-09-19T09:53:46Z", "uuid": "2e261534-56ce-4600-883e-5bad150e67e9", "count": 1, "event_src.hostname": "aix53"} ``` Правило корреляции: ```bash= event AIX_file_shadow_read_success: key: event_src.hostname filter { correlation_name == null and event_src.vendor == "IBM" and event_src.title == "AIX" and event_src.category == "Operating system" and event_src.subsys == "AIX audit sysbsystem" and msgid == "OS_CONF_READ" and action == "access" and object == "configuration" and status == "success" and object.path == "/etc/shadow" } event AIX_login_success: key: event_src.hostname filter { correlation_name == null and event_src.vendor == "IBM" and event_src.title == "AIX" and event_src.category == "Operating system" and event_src.subsys == "AIX audit sysbsystem" and msgid == "USER_Login" and action == "access" and object == "computer" and status == "success" } rule AIX_user_read_shadow_file_then_another_user_log_in_system: (AIX_file_shadow_read_success -> AIX_login_success)with different subject.account.name within 5m init { $first_event = true } on AIX_file_shadow_read_success { $datafield1 = msgid # msgid начального события цепочки $datafield2 = subject.account.name # subject.account.name начального события цепочки $datafield3 = subject.process.name # subject.process.name начального события цепочки $object.path = object.path } on AIX_login_success { $datafield4 = msgid # msgid конечного события в цепочке $subject.account.name = subject.account.name $subject.account.privileges = subject.account.privileges $logon_auth_method = logon_auth_method $protocol = protocol $protocol.layer7 = protocol.layer7 $logon_service = logon_service $logon_auth_method = logon_auth_method $subject.process.cmdline = subject.process.cmdline } emit { $correlation_type = "incident" $subject = "account" $action = "access" $object = "system" $status = "success" $importance = "high" $category.generic = "Access" $category.high = "Authentication" $category.low = "Remote" } ``` ![](https://i.imgur.com/YOOc4hq.png) Локализация правила корреляции: ![](https://i.imgur.com/PwoMsbD.png) Архив с файлами приложен к письму. На этом данная работа завершена.