От переводчика: в ближайшее время планирую перевести остальные две части данной трилогии, надеюсь, кому-нибудь она окажется полезной.
Если вы безопасник-аналитик, то математика является частью вашей повседневной деятельности. В данной серии статей я постараюсь показать вам практическое применение математики в деятельности вашего подразделения. Надеюсь, что данный прагматичный подход позволит расширить применение математики в вашей деятельности.
Часть 1: теория множеств, диаграмма Венна и IP-адреса
Сегодня безопасники осуществляют мониторинг с помощью различных индикаторов, размещенных в различных процессах. Хорошими примерами этих индикаторов являются списки или множества (то есть, уникальные наборы данных) IP-адресов, доменных имен, URL, сигнатур файлов и т.п. Поиск элементов данных множеств в лог-файлах, сетевом трафике, предупреждениях IDS, является очень распространенной задачей. Большинство этих действий являются простым набором операций, которые могут быть формализованы с помощью диаграмм Венна и выполнены с помощью программных средств. Наборы операций также могут быть эффективны при сравнении наборов данных, полученных в разные временные периоды для поиска соответствий или различий в этих наборах данных.
Пример 1: пересечение множеств
Начнем с простого примера: поиск IP-адресов, находящихся в двух различных наборах данных. Фактически это операция пересечения множеств, которая показана на диаграмме.
В этом примере мы будем искать 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.
Воспользуемся утилитой 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-адресов, которые подключались к нам либо в будние дни, либо в выходные. Данная операция называется симметрической разностью множеств.
Воспользуемся пакетом утилит 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) |
|
|
Relative complement (A B) |
|
|
Symmetric difference (A B) ∪ (B A) |
|
|
Заключение
Использование математики в повседневных задачах информационной безопасности может помочь в анализе и поиске аномалий в потоке данных. В этой серии постов я расскажу также о других областях математики, таких как статистика и теория вероятностей, а также коснусь алгебры и теории чисел, которые могут быть просто и со вкусом использованы в повседневной работе.
Автор: bugaga0112358