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

от автора

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

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

Часть 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)

Заключение

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

ссылка на оригинал статьи http://habrahabr.ru/post/195098/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *