//
вы читаете...
Алгоритмизация, Информационная безопасность, Математика

Практическое применение математики в информационной безопасности (часть 1/3)

Перевод статьи Vijay Sarvepalli «Practical Math for Your Security Operations. Part 1 of 3» (Источник: http://www.cert.org/).

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

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

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

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

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

Пересечение множеств A и B

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

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

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

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

Набор A

Набор B

10.11.11.1
192.168.31.11
172.16.44.1
10.253.11.1
10.131.11.19
172.17.12.1
10.11.11.1
10.253.11.1
10.0.0.11
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-запроса:

sqlite> 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.

01-02 - Relative component

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

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

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

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-адресов, которые подключались к нам либо в будние дни, либо в выходные. Данная операция называется симметрической разностью множеств.

01-03 - Symmetric Difference

Воспользуемся пакетом утилит 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:

SQL> 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
(Ac ∩ B) or (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)

Заключение

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

Реклама

Обсуждение

Комментариев нет.

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: