Практическое применение математики в рутине ИБ (часть 1/3)

в 5:30, , рубрики: linux, sql, информационная безопасность, математика, теория множеств

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

Если вы безопасник-аналитик, то математика является частью вашей повседневной деятельности. В данной серии статей я постараюсь показать вам практическое применение математики в деятельности вашего подразделения. Надеюсь, что данный прагматичный подход позволит расширить применение математики в вашей деятельности.

Часть 1: теория множеств, диаграмма Венна и IP-адреса

Сегодня безопасники осуществляют мониторинг с помощью различных индикаторов, размещенных в различных процессах. Хорошими примерами этих индикаторов являются списки или множества (то есть, уникальные наборы данных) IP-адресов, доменных имен, URL, сигнатур файлов и т.п. Поиск элементов данных множеств в лог-файлах, сетевом трафике, предупреждениях IDS, является очень распространенной задачей. Большинство этих действий являются простым набором операций, которые могут быть формализованы с помощью диаграмм Венна и выполнены с помощью программных средств. Наборы операций также могут быть эффективны при сравнении наборов данных, полученных в разные временные периоды для поиска соответствий или различий в этих наборах данных.

Пример 1: пересечение множеств

Начнем с простого примера: поиск IP-адресов, находящихся в двух различных наборах данных. Фактически это операция пересечения множеств, которая показана на диаграмме.

image

В этом примере мы будем искать IP-адреса клиентов, которые подключались к нашим серверам в будни и на выходных. Мы имеем два набора внешних IP-адресов:

А – подключавшиеся в выходные дни;
В – подключавшиеся в будние дни.

Примеры наборов:

Набор A Набор B
10.11.11.1 172.17.12.1
192.168.31.11 10.11.11.1
172.16.44.1 10.253.11.1
10.253.11.1 10.0.0.11
10.131.11.19 192.168.23.23
  10.144.244.233

Ниже приведен пример команды для поиска пересечения множеств с помощью утилиты rwsettool из набора SiLK tools:

[bash]$ rwsettool --intersect seta.set setb.set | rwsetcat 
10.11.11.1
10.253.11.1

Файлы seta.set и setb.set сгенерированы на основе приведенной выше таблицы с помощью утилиты rwset.

Результат данной операции аналогичен результату выполненного над этими множествами SQL-запроса:

SELECT A.IP FROM IPSETA A INNER JOIN IPSETB B ON A.IP=B.IP;
"10.11.11.1"
"10.253.11.1"
Пример 2: Разность (дополнение) множеств

Предположим, мы хотим получить список IP-адресов, которые подключаются к серверам только в выходные. Нам следует получить набор элементов, которые входят в множество B, но не входят в множество A. В теории множеств данная операция называется разностью множеств или дополнением множества A до множества B.

image

Воспользуемся утилитой rwsettool:

[bash]$ rwsettool --difference seta.set setb.set | rwsetcat
10.131.11.19 
172.16.44.1 
192.168.31.11

Аналогичный SQL-запрос:

SELECT A.IP FROM IPSETA A LEFT OUTER JOIN IPSETB B ON A.IP=B.IP WHERE B.IP is null;
"192.168.31.11" 
"172.16.44.1" 
"10.131.11.19"
Пример 3: симметрическая разность множеств A и B

Теперь мы хотим получить перечень IP-адресов, которые подключались к нам либо в будние дни, либо в выходные. Данная операция называется симметрической разностью множеств.

image

Воспользуемся пакетом утилит SiLK tools и выполним нашу задачу по формуле «симметрическая разность двух множеств есть разность между объединением данных множеств и их пересечением»:

[bash]$ rwsettool --union seta.set setb.set > setab.set
[bash]$ rwsettool --intersect seta.set setb.set | rwsettool --difference setab.set stdin | rwsetcat 
10.0.0.11 
10.131.11.19 
10.144.244.233 
172.16.44.1 
172.17.12.1 
192.168.23.23 
192.168.31.11

Аналогичный SQL-запрос зависит от конкретной платформы, на которой вы его выполняете, так как для решения задачи нам потребуется оператор full outer join, который присутствует в Postgres, MS SQL и Oracle, но отсутствует в Sqlite и MySQL:

select a.ip,b.ip from ipsetb b full outer join ipseta a on a.ip=b.ip where a.ip is null or b.ip is null;
IP IP 
--------------- ---------------
172.17.12.1
10.0.0.11 
192.168.23.23 
10.144.244.233 
10.131.11.19 
172.16.44.1 
192.168.31.11
Другие операции

В следующем посте я расскажу о статистике и вероятности, а пока привожу таблицу с обобщением изложенного в данном посте материала.

Теория множеств Набор утилит SiLK tools SQL-запрос
Intersection
(A ∩ B)
rwsettool --intersect
INNER JOIN
Relative complement
(A B)
rwsettool --difference
(LEFT OUTER JOIN) EXCEPT 
(INNER JOIN)
Symmetric difference
(A B) ∪ (B A)
rwsettool --difference (rwsettool --union) 
(rwsettool --intersect)
(FULL OUTER JOIN) EXCEPT 
(INNER JOIN)

Заключение

Использование математики в повседневных задачах информационной безопасности может помочь в анализе и поиске аномалий в потоке данных. В этой серии постов я расскажу также о других областях математики, таких как статистика и теория вероятностей, а также коснусь алгебры и теории чисел, которые могут быть просто и со вкусом использованы в повседневной работе.

Автор: bugaga0112358

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js