Как подготовить / построить функции для обнаружения аномалий (данные сетевой безопасности)

9

Моя цель - проанализировать сетевые журналы (например, Apache, syslog, аудит безопасности Active Directory и т. Д.), Используя кластеризацию / обнаружение аномалий для целей обнаружения вторжений.

Из журналов у меня много текстовых полей, таких как IP-адрес, имя пользователя, имя хоста, порт назначения, порт источника и т. Д. (Всего 15-20 полей). Я не знаю, есть ли какие-либо атаки в журналах, и хочу выделить наиболее подозрительные события (выбросы).

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

Если я использую обнаружение аномалий на основе кластеризации (например, нахожу кластеры, а затем выбираю точки, которые находятся далеко от всех центров кластеров), мне нужно найти расстояние между различными точками. Так как у меня 15-20 полей, это будет многомерное пространство, где измерения - это имя пользователя, порт, IP-адрес и так далее. Однако расстояние Махаланобиса можно применять только к нормально распределенным объектам. Это означает, что нет способа найти расстояние между точками данных и построить кластеры ...

Например, давайте представим, что у меня есть пользователи Алиса, Боб, Кэрол, Дейв, Ева и Фрэнк в наборе данных из 20 записей. Они могут иметь следующее количество случаев в базе данных: 2,5,2,5,1,5. Если я просто сопоставить имена пользователей с номерами, например,

Alice --> 1
Bob --> 2
Carol --> 3
Dave --> 4
Eve --> 5
Frank --> 6

Тогда мое распределение вероятностей для имен пользователей будет выглядеть следующим образом:

p (1) = 0,1, p (2) = 0,25, p (3) = 0,1, p (4) = 0,25, p (5) = 0,05, p (6) = 0,25

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

Таким образом, простое сопоставление полей, таких как имя пользователя, действие, номер порта, IP-адрес и т. Д., С номерами ничего не приносит.

Поэтому я хотел бы спросить, как обрабатываются текстовые поля / функции, обычно создаваемые для того, чтобы сделать возможным обнаружение аномалии / выброса без присмотра?

РЕДАКТИРОВАТЬ: структура данных.

У меня есть около 100 столбцов в таблице базы данных, содержащей информацию из событий Active Directory. Из этих 100 столбцов я выбираю наиболее важные (с моей точки зрения): SubjectUser, TargetUser, SourceIPaddress, SourceHostName, SourcePort, компьютер, DestinationIPaddress, DestinationHostName, DestinationPort, действие, статус, FilePath, EventID, WeekDay, DayTime.

События - это события Active Directory, где EventID определяет, что было зарегистрировано (например, создание билета Kerberos, вход пользователя в систему, выход пользователя из системы и т. Д.).

Пример данных выглядит следующим образом:

+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| ID | SubjectUser | TargetUser | SourceIPaddress | SourceHostName | SourcePort | Компьютер | DestinationIPaddress | DestinationHostName | DestinationPort | Действие | Состояние | FilePath | EventID | WeekDay | WeekTay | DayTime |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| 171390673 | |? |? |? |? | domaincontroller1.domain.com | 1.1.1.1 | domaincontroller1.domain.com |? | / Authentication / Проверка | / Успех |? | 4624 | 1 | 61293 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| 173348232 |? |? |? |? |? | domaincontroller2.domain.com | 2.2.2.2 | domaincontroller2.domain.com |? | / Authentication / Проверка | / Успех |? | 4624 | 1 | 61293 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| 180176916 | |? |? |? |? | domaincontroller2.domain.com | 2.2.2.2 | domaincontroller2.domain.com |? | / Authentication / Проверка | / Успех |? | 4624 | 1 | 61293 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
| 144144725 | | John.Doe | 3.3.3.3 | domaincontroller3.domain.com | 2407 | domaincontroller3.domain.com | 3.3.3.4 | domaincontroller3.domain.com |? | / Authentication / Проверка | / Успех |? | 4624 | 3 | 12345 |
+ ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +

Всего у меня около 150 миллионов событий. В разных событиях заполнены разные поля, и не все события связаны с входом / выходом пользователя из системы.

Андрей Сапегин
источник
«Однако расстояние Махаланобиса можно применять только к нормально распределенным объектам». На самом деле, эллиптической формы. Можете ли вы опубликовать первые несколько строк вашего набора данных (или некоторые поддельные числа, но имеющие те же функции, что и реальные вещи)?
user603
Я предполагаю, что эллиптическая форма означает произведение двух нормально распределенных признаков, с различными средними и стандартными отклонениями, но все же нормально распределенными.
Андрей Сапегин
Нет, означает эллиптическую форму в виде тени футбольного мяча в 2D, футбольного мяча в 3D и в целом футбола D-размера в D-пространстве.
user603
Из любопытства. Не могли бы вы поделиться некоторыми данными / с каким набором данных вы работаете? Это общественное / академическое исследование?
Сабалаба
К сожалению, это не публичный набор данных, и я не могу поделиться им. Однако должен быть известный набор данных KDDCup 1999 или набор данных Scan34 от Honeynet ( old.honeynet.org/scans/scan34 ). Оба набора данных имеют журналы (не сетевой трафик) для анализа (Apache, Snort, syslog и т. Д.). В моем наборе данных большинство журналов являются журналами Active Directory. Я не уверен, есть ли какие-либо общедоступные события AD / Windows, доступные для анализа (ранее я использовал самогенерируемый набор данных из-за отсутствия реального). Кроме того, набор данных у меня очень большой (150 млн записей).
Андрей Сапегин

Ответы:

2

Я определенно не эксперт по обнаружению аномалий . Тем не менее, это интересная область, и вот мои два цента. Во-первых, учитывая ваше замечание, что «расстояние Махаланобиса может быть применено только к нормально распределенным объектам». Я наткнулся на какое-то исследование, в котором утверждается, что этот показатель все еще можно использовать в случае ненормальных данных. Посмотрите сами на этот документ и этот технический отчет .

Я также надеюсь, что вы найдете полезными следующие ресурсы по обнаружению неконтролируемых аномалий (AD) в контексте безопасности ИТ-сети с использованием различных подходов и методов: в этом документе представлена геометрическая основа для AD без контроля; эта статья , в которой используется кластеризационный подход на основе плотности и сетки ; слайды этой презентации , в которых упоминается использование самоорганизующихся карт для AD.

Наконец, я предлагаю вам взглянуть на следующие мои ответы, которые, на мой взгляд, имеют отношение к теме и, таким образом, могут быть полезны: ответ на подходы кластеризации , ответ на кластеризацию без учета расстояний и ответ на варианты программного обеспечения для AD .

Александр Блех
источник
1
Спасибо за ссылки, они очень полезны. (1) Первая упомянутая вами статья очень интересна. Кажется, что возможно преобразовать распределение в нормальное, чтобы применить расстояние Махаланобиса позже. Я постараюсь попасть в это. (2) Знаете ли вы, есть ли какие-то другие подходы, например, некоторые меры сходства, такие как расстояние между родственниками, которые не действуют на расстоянии? (3) Упомянутые вами слайды презентации сфокусированы на пакетах сетевого трафика, а не на журналах.
Андрей Сапегин
1
Что касается других подходов, я подумал о следующем 2: (1) SVM с одним классом может выяснить корреляцию между признаками, если используется высокополиномиальная модель; (2) строки журнала угроз в качестве предложений и использование сходства двоюродных братьев и сестер для группировки / кластеризации их. Первый я уже пытался реализовать, но он работает уже больше недели на 1 процессоре (я сначала обучаю модель на первой половине данных, а затем применяю ко второй. Затем наоборот). Второй подход подразумевает многомерное пространство (например, каждое другое значение имени пользователя будет признаком).
Андрей Сапегин
1
@AndreySapegin: Если результаты ваших текущих попыток не будут достаточно хорошими, вы можете попробовать другие подходы, упомянутые в статьях, на которые я ссылался. Это была идея. Еще одна вещь - попробуйте программное обеспечение ML с открытым исходным кодом GraphLab (некоторые из них теперь обозначены как Dato): dato.com/products/create/open_source.html . Программное обеспечение GraphLab является высокопроизводительным и очень масштабируемым не только для процессорных ядер, но и для процессоров и даже машин.
Александр Блех
1
@AndreySapegin: в моем потоке ResearchGate появилась статья моего университетского коллеги. Я думаю, что это может быть очень полезно для вас (использует подход ANN для обнаружения вторжений - через классную библиотеку Encog ML, автором которой он является и является основным автором - Encog также масштабируется через многоядерный процессор и графический процессор). Вот статья: researchgate.net/profile/Jeff_Heaton/publication/… . Вот информация о Encog: heatonresearch.com/encog .
Александр Блех
1
Кому бы ни присудили награду за мой ответ: я ценю вашу щедрость и признание моих усилий в направлении качественных ответов.
Александр Блех
3

Прежде всего, я думаю, что есть некоторые вещи, которым вы, возможно, придется смириться.

Одно серьезное ограничение, которое я вижу по этой проблеме, заключается в том, что вы, вероятно, должны быть готовы к довольно высокому уровню ложных срабатываний. Насколько я знаю, базовая скорость записей, являющихся частью сетевой аномалии, довольно низка (необходима цитата). Давайте назовем это коэффициентами 1000: 1, ради аргумента. Затем, даже если вы наблюдаете шаблон, который в 100 раз более вероятен, если запись является вторжением, тогда, если это законно, правило Байеса гласит, что последующие шансы равны 10: 1, что трафик все еще является законным.

Другая проблема заключается в том, что некоторые вторжения трудно обнаружить даже в принципе . Например, если кто-то с социальной точки зрения заставит меня отдать им мой компьютер, а затем они войдут в эту службу и загрузят один сверхсекретный файл, над которым я работал, это будет довольно сложно найти. По сути, достаточно решительный злоумышленник может сделать свое навязчивое поведение почти произвольно близким к нормальному поведению системы.

Более того, ваши противники - интеллектуальные, а не статистические процессы, поэтому, если вы начнете обнаруживать какой-то шаблон и отключать его, они могут просто ответить, не следуя этому шаблону. Вот почему, например, вы увидите много спам-сообщений с пробелами между всеми буквами (предлагая вам " V I A G R A" или что-то еще). Спам-фильтры выяснили, что строка «виагра» была спамом, поэтому злоумышленники просто начали делать что-то еще.

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


Кроме того, давайте поговорим о низко висящих фруктах. Здесь, я думаю, вам может быть полезно перенести свою единицу анализа с отдельных записей на группу записей.

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

  • Некоторые IP-адреса, кажется, аутентифицируют как необычно много пользователей (или необычно мало)?
  • У некоторых IP-адресов необычно большое количество ошибок аутентификации?
  • Есть ли у некоторых IP-адресов необычная схема времени доступа (например, большая активность около 3:00 в их часовом поясе или запросы каждую 1 секунду в течение дня)?

Вы можете сделать аналогичные вещи для других группировок, например, имя пользователя:

  • Идет ли аутентификация этого пользователя с другого компьютера, когда он ранее использовал один и тот же компьютер для всех запросов?
  • Этот пользователь внезапно касается части файловой системы, которой он никогда раньше не касался?

Я не знаю ни одного готового классификатора, который кажется особенно подходящим для этого, потому что потенциальное поведение ваших пользователей настолько различно, и вы, вероятно, в основном интересуетесь изменениями поведения с течением времени. Это означает, что вы, вероятно, захотите построить какую-то модель того, что каждый пользователь / IP / что-либо может сделать в будущем, и пометить любые отклонения от этой модели. Но это довольно интенсивный процесс, если у ваших пользователей разные модели поведения!

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

Бен Кун
источник
2
Спасибо за ваш ответ, это хороший момент. Как я понял, вы предлагаете сосредоточиться на более простом анализе, чем на обнаружении аномалий. С технической (отраслевой) точки зрения вы правы. Тем не менее, я занимаюсь исследованиями и хотел бы сосредоточиться на анализе машинного обучения. Анализ, основанный на запросах, который вы предложили, мы уже выполнили (может быть, он не совсем идентичен предложенным вами запросам, но похож) ... Еще один аргумент в пользу того, что многие предприятия в настоящее время пытаются сделать обнаружение аномалий в дополнение к «нормальному» ( более простые, но все же удовлетворяющие) запросы и правила ...
Андрей Сапегин
2

Я думаю, что в первую очередь вам нужно иметь набор данных, который записывает данные за период без атак. Этот набор данных должен охватывать изменения, присущие системе, которая ведет себя нормально. Я хотел бы подчеркнуть, что речь идет не о наличии аннотированного набора данных.

Далее я бы попытался объединить все (или подмножество) метрик в одну. Эта новая метрика должна отражать количество «сюрпризов». Например, низкое значение означает, что система работает нормально, высокое значение пика / плато означает, что есть некоторые быстрые изменения. Здесь я думаю о диаграммах стиля диаграмм CUSUM или Шухарта.

Можете ли вы привести примеры доступных данных? Это в основном строки, цифры, 1/0 показателей?

Владислав Довгальец
источник
1

Возможность состоит в том, чтобы изучить байесовскую сеть между функциями, имеющими некоторые фоновые данные, без атак. Изучение байесовской сети полезно, поскольку она выявляет условную независимость между функциями. Следовательно, вы не имеете дело со всеми возможными комбинациями функций. Например, если функция A влияет на B и C, а функции B и C вместе влияют на D, то вы изучите модель только для того, как A влияет на B, как влияет на C и как B и C совместно влияют на D. Эта модель потребует гораздо меньше параметры, чем все распределение вероятностей и является основной причиной, по которой байесовские сети используются вместо того, чтобы просто хранить все совместное распределение вероятностей. Чтобы проверить аномалию для данной байесовской сети, рассчитайте вероятность входящего набора данных, используя модель изученной байесовской сети. Если вероятность очень низкая,

Абхинав Маурья
источник
Проблема в том, что получить образец данных без атак крайне сложно. Часто никто не знает, есть ли какие-либо атаки в наборе данных.
Андрей Сапегин
0

Я думал, что ответ от Бена Куна был прагматичным и проницательным.

Теперь мой собственный опыт включает в себя классификацию текстов, экспертные системы, кластеризацию и безопасность. Учитывая это, я хотел бы подумать, что мне есть, что добавить к разговору. Но предыдущие заявления Бена Куна подчеркивают, что прямые подходы могут привести к множеству ложных срабатываний. ИТ-специалисты, когда сталкиваются со многими ложными срабатываниями, обычно «отключаются», потому что у них просто нет времени постоянно преследовать ложные срабатывания.

Так что делать?

Конечно, логи с атаками могут быть полезны, но тогда у нас есть ловушка 22, если компании каким-то образом не обмениваются данными о атаках. В то время как некоторые стартапы Силиконовой долины могут преследовать подобную угрозу, что еще мы можем сделать?

Один из возможных подходов - создать симуляцию сети, а затем найти способ генерировать атаки на симуляцию. То есть, предположим, что мы создаем симуляцию, в которой черные шляпы (также симулированные) не известны заранее белым шляпам. Учитывая эти атаки, мы можем затем попытаться создать алгоритмы, которые должны обнаруживать эти атаки. Если черные шляпы действуют независимо от белых, то у нас будет настоящая битва, которая закончится. Если злоумышленники проникли в систему или не были обнаружены, белые шляпы в некоторой степени потерпели неудачу.

Можно даже создать структуру стимулов, когда аналитики по безопасности из команды «Черной шляпы» будут вознаграждены за их успехи (штаны или неизвестные атаки). Аналогичным образом, группа, состоящая из белых шляп, вознаграждена за то, что остановила штаны и / или обнаружила атаки.

В этой договоренности нет ничего идеального. Очевидно, что настоящие черные шляпы могут превосходить таланты "дружелюбной" команды в черной шляпе. Тем не менее, как человек, который имеет достаточный объем анализа данных, мне кажется, что очень трудно количественно оценить успех белых шляп без лучшего понимания черных шляп. Итог это. Если мы не можем знать, что делают настоящие черные шляпы, следующая лучшая вещь - это дружелюбные черные шляпы.

У меня тоже есть довольно необычная идея. Предположим, в дополнение к дружелюбным черным шляпам и белым шляпам есть команда серых шляп. Что значит быть серой шляпой? Идея проста. Серым шляпам разрешено смотреть на то, что делают дружественные черные шляпы и белые шляпы. Но почему?

Предположим, что дружественные черные шляпы запускают атаки, используя подходы A, B и C, и белые шляпы никогда не обнаруживают ни один из этих трех подходов. Что ж, серые шляпы уполномочены смотреть на то, что делают и дружественные черные шляпы, и белые шляпы, и они пытаются рассмотреть, какие принципы могут быть использованы для обнаружения этих необнаруженных атак. Если серая шляпа находит такие принципы, серая шляпа может затем поделиться этими принципами с белой шляпой без подробного описания точных атак.

Надежда состоит в том, что эти "подсказки", предоставленные командой по серой шляпе, дают команде белой шляпе толчок в правильном направлении, не раскрывая слишком много.

Оглядываясь назад, я прошу прощения, если мой ответ на самом деле не о конкретных методах. Очевидно, мой ответ не о конкретных методах. Но по моему опыту, многие проблемы в машинном обучении, в том числе в области безопасности, часто терпят неудачу, потому что данные неадекватны. Этот подход, использующий белые шляпы, серые шляпы и черные шляпы, может помочь получить данные, которые позволят компании по обеспечению безопасности (или ИТ-персоналу) не только количественно оценить эффективность своей защиты, но и обеспечить организационную структуру, которая подталкивает команду белых шляп. постепенно улучшать свою защиту и контроль.

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


Примечание: мое использование термина «серая шляпа» здесь не является стандартным. См. Http://www.howtogeek.com/157460/hacker-hat-colors-explained-black-hats-white-hats-and-gray-hats/ . Так что вместо этого следует использовать другой термин, возможно, «полосатая шапка».

Но идея остается прежней: полосатая шляпа может помочь в посредничестве между работой дружественных черных шляп и защитников (белых шляп), так что определенные идеи и советы могут быть разумно разделены с белыми шляпами.

sfgower
источник
1
Возможно, вы случайно создали вторую учетную запись - смотрите здесь, чтобы узнать, как их объединить. Это позволит вам редактировать свои собственные сообщения.
Серебряная рыба
0

Поскольку я разместил исходный вопрос, я провел много исследований по этой теме и теперь могу предоставить свои результаты в качестве ответа.

Прежде всего, в нашей лаборатории мы разрабатываем систему SIEM, которая использует алгоритмы обнаружения аномалий. Описание системы и алгоритмов доступно в моей статье « На пути к системе для комплексного анализа событий безопасности в крупных сетях».

Кроме того, я написал краткое резюме о том, как обращаться с такими данными, в своем ответе на аналогичный вопрос о перекрестной проверке.

Андрей Сапегин
источник