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

Начало

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

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

Разработка функций и сбор данных

Первым шагом является сбор соответствующих данных о событиях безопасности из многочисленных источников, включая Cloud SCC, Cloud Logging и Cloud Monitoring. Предварительная обработка и преобразование формата необходимы, чтобы сделать эти данные подходящими для обучения модели ML. Например, нерелевантные характеристики могут быть удалены, пропущенные значения могут быть обработаны, а категориальные переменные могут быть закодированы как часть предварительной обработки данных. По сути, ваши данные готовы к использованию для дальнейших шагов, точно так же, как вы не любите открытые разговоры, машина также ненавидит нечистые данные.

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

Следующие шаги?

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

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

Давайте возьмем несколько примеров

Сбор данных: Импорт данных журнала для анализа из облачной утилиты ведения журнала для нашего проекта с определенной отметкой времени и отправка вновь полученных данных в препроцессор для возврата чистого фрейма данных в включить удаление ненужного беспорядка и полей из данных

# Import necessary libraries
from google.cloud import logging

# Create a client for Cloud Logging
client = logging.Client()

# Retrieve logs from the specified time range and filter based on log types
logs = client.list_entries(filter_='timestamp >= TIMESTAMP("2023-06-01T00:00:00Z") AND logName="projects/your-project-name/logs/cloudaudit.googleapis.com%2Factivity"')

# Preprocess and transform the logs into a pandas DataFrame
# Perform necessary data cleaning, feature engineering, and encoding
# Return the preprocessed DataFrame
def preprocess_logs(logs):
    # Code for preprocessing the logs
    return preprocessed_logs

# Call the preprocessing function on the retrieved logs
preprocessed_logs = preprocess_logs(logs)

Разработка функций: здесь мы используем критерий хи-квадрат и SelectKBest, чтобы облегчить очистку полученного набора данных и удалить поля, которые нам не нужны, вручную заполнив метки полей данных, тем самым подогнав данные. в обработанный фрейм данных, с которым мы можем работать сейчас!

import pandas as pd
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

# Define the feature engineering and selection function
def feature_engineering_selection(preprocessed_logs):
    # Perform feature engineering tasks
    # Create new features, aggregate data, extract statistical features, etc.

    # Select the most relevant features using SelectKBest and chi-squared test
    X = preprocessed_logs.drop(columns=['label'])
    y = preprocessed_logs['label']
    selector = SelectKBest(chi2, k=10)
    selected_features = selector.fit_transform(X, y)

    # Return the preprocessed logs with selected features
    return selected_features

# Call the feature engineering and selection function
selected_features = feature_engineering_selection(preprocessed_logs)

Обучение нашей модели: А, да, теперь наша работа здесь сделана, дайте компьютеру поработать. Используя простой подход train_test_split с RandomForestClassifier, мы обучаем данные для обнаружения событий, подпадающих под критические, высокие или любые другие категории серьезности, указанные метками в облачном аудите, и регистрируем подходящие данные, которые мы сгенерировали на предыдущем шаге. Не стесняйтесь настраивать модель, чтобы получить точность по вашему желанию.

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(
    selected_features, preprocessed_logs['label'], test_size=0.2, random_state=42)

# Train a Random Forest classifier
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)

# Evaluate the model on the test set
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Model accuracy:", accuracy)

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

# Generate alerts based on the trained model's predictions
def generate_alerts(X_test, y_pred):
    alerts = []
    for i in range(len(X_test)):
        if y_pred[i] == 1:
            alert = {
                'event_id': X_test[i]['event_id'],
                'severity': 'High',
                'description': 'Potential security event detected.',
                'timestamp': X_test[i]['timestamp']
            }
            alerts.append(alert)
    return alerts

# Call the alert generation function
alerts = generate_alerts(X_test, y_pred)

# Perform appropriate actions and responses based on the generated alerts
# For example, send alerts to the security team, trigger incident response workflows, etc.

Если вы хотите упростить процесс с помощью VertexAI

а. Объедините зависимости и код машинного обучения в модуль Python.
b. Укажите сценарий обучения и любые дополнительные параметры настройки при создании пользовательского задания AI Platform в Vertex AI.
c. При необходимости настройте задание на использование необходимых аппаратных ускорителей и версии среды выполнения для машинного обучения.
d. Дайте Vertex AI задание, и он настроит необходимые ресурсы и начнет процесс обучения.
e. Следите за развитием задачи и, когда она будет завершена, извлеките обученную модель.

Мы не будем углубляться в процесс VertexAI в этом блоге, но обязательно вернемся к использованию этого удивительного инструмента в следующей статье ;)

Случаи использования

Может показаться немного странным использовать этот подход для создания предупреждений и управления данными, когда Центр управления безопасностью и другие облачные подходы могут сделать это с легкостью. Обсуждаемый подход часто используется для рекомендации результатов для пользовательского трафика на портах и ​​службах, использующих нестандартные рабочие порты. Также в незначительных случаях использования, таких как:

  1. Обнаружение аномалий сетевого трафика.Аномалии, такие как странные шаблоны связи, неожиданная передача данных или подозрительные IP-адреса, можно обнаружить, просматривая журналы сетевого трафика и используя модели машинного обучения.
  2. Обнаружение злонамеренной активности в журналах доступа пользователей.Чтобы выявить потенциальные нарушения безопасности, модели машинного обучения могут распознавать необычные модели доступа пользователей, такие как повторные неудачные попытки входа в систему, попытки несанкционированного доступа или подозрительные действия. деятельность по счету.
  3. Обнаружение несанкционированного доступа к конфиденциальным данным.Попытки несанкционированного доступа к конфиденциальным данным, хранящимся в базах данных или файловых системах хранения, можно обнаружить путем мониторинга журналов доступа и использования алгоритмов машинного обучения.

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

Заключить

Организации могут заблаговременно выявлять возможные атаки и быстро реагировать, разрабатывая сценарии для обнаружения событий безопасности в Google Cloud. Мы можем мгновенно анализировать огромные объемы данных, автоматически выявлять аномалии и создавать оповещения для более тщательного расследования с помощью алгоритмов машинного обучения. Начиная с предлагаемых примеров кода и пояснений, пользователи Google Cloud могут разработать обнаружение событий безопасности на основе машинного обучения. Чтобы опережать изменяющиеся риски безопасности, крайне важно адаптировать эти стратегии с учетом конкретных потребностей и постоянно совершенствовать модели. Потому что, даже если вы не можете понять, машина может, если вы тоже понимаете. Ах, это рекурсия, пока!

Хотите поболтать? Свяжитесь со мной

ЛинкедИн

Твиттер