mentat-is / gulp

g(ULP) - graphical universal log processor
https://gulp.sh
Other
18 stars 2 forks source link

evaluate implementation of ML #4

Open valerino opened 1 month ago

valerino commented 1 month ago

i am not so expert at AI/ML yet, so a better and educated opinion is needed here :) the following are just from our brainstorming at the moment.

valerino commented 1 month ago

from what i understand, security-analytics may work to detect known threats based on sigma rules (=our SigmaGroupFilters), anomaly-detection may be used to detect new threats.

for both, i have in mind an approach like the following:

  1. create detectors to run during ingestion (and also manually)
  2. on detector trigger, create a note on our collab platform (the same as we do for sigma query)
calligraf0 commented 1 month ago

would LLM be of any benefit out of the report phase (i.e. integrate with the identification step above) ?

I think this could technically be applied outside of the reports/story lines "context" as well.

For example: LLMs could also be used to supply extra context about a specific annotated event/group of events (e.g. explaining why the event was flagged as, for example, "Kerberoasting" - providing reference articles to deepen the knowledge, etc). This would probably need a well trained model about those topics though.

This could finally also help users spot false positives and learn more about the attacks. But at this point we are mainly describing a sort of "dynamic" knowledge base, it'd be interesting to evaluate the added benefits over a "static" and manually curated KB for sure!

Mireg-V commented 1 month ago

Descrizione

È necessario implementare un modello di intelligenza artificiale locale (come microservizio autonomo come LLama o un altro che possa essere distribuito localmente) che possa lavorare con un enorme insieme di dati, riconoscendo le anomalie e generando istruzioni per formare le risposte. Un modello di apprendimento automatico (ML) analizzerà i dati in più round, aumentando gradualmente la gamma di memoria per il riconoscimento dei modelli. L'algoritmo cercherà eventi che potrebbero essere correlati: ``Ad esempio: se una porta viene aperta, controllerà se e come viene utilizzata, filtrando i casi in cui la porta viene utilizzata in modo improprio o con dati non standard''.

Il modello non deve solo trovare le anomalie, ma anche salvare gli eventi con l'aggiunta di un “prompt” - un testo con una spiegazione se μ è abbastanza grande (bisogna sperimentare il valore), dove l'IA (non il ML) creerà una catena di eventi e spiegherà all'utente cosa sta succedendo. La versione finale prevede la creazione di un albero a grafo in cui ogni evento è rappresentato come un nodo con una temperatura (μ - temperatura/float) la cui somma è 1 per tutti gli eventi nel nodo. Questo albero può essere di qualsiasi profondità (e gli alberi possono anche fare riferimento a nodi o eventi di risposta di altri alberi), e l'utente sarà in grado di interagire con l'IA attraverso l'interfaccia, di ricevere risposte e di vedere l'evidenziazione degli eventi sulla timeline, nonché di vedere le relazioni tra di essi.

Dettagli

  1. Analisi dei dati ML: A ogni tornata, l'intervallo di ricerca di modelli e anomalie viene aumentato fino a quando non viene raggiunto il limite di memoria o la profondità dell'analisi. Ad esempio, se viene rilevata l'apertura di una porta, il modello cerca altri eventi in cui quella porta è in uso. Se invece vengono rilevati eventi con dati non standard, questi vengono segnalati come potenzialmente anomali”.

  2. Albero del grafico:

    • Ciascun evento ha dei trigger e un valore di temperatura μ la cui somma è 1.
    • Il grafo-albero può raggiungere qualsiasi profondità, modellando le relazioni tra gli eventi.
    • La temperatura (μ) indica la probabilità o il grado di importanza dell'evento nel contesto dell'anomalia.
  3. Interfaccia utente:

    • L'interfaccia consente all'utente di dialogare con il modello AI ponendo domande (il modello risponde esaminando i dati grafici ed eventi trasmessi).
    • Rispondere ed evidenziare gli eventi rilevanti sulla timeline.
    • L'utente può vedere le analogie e le connessioni tra gli eventi costruite dal modello in base alle analisi utilizzando l'evidenziazione, le note, i collegamenti e i nodi.

Architettura di esempio

Esempio di grafico con nodi e temperatura μ: { descrizione: “temperatura”, tipo: float, } - utilizzato per indicare la probabilità calcolata di quale evento in un nodo è più pericoloso

μ dipende dalla probabilità che:

  1. L'evento finale della catena
  2. Sia un canale per altri eventi

Somma di tutti i nodi allo stesso livello = 1

Tradotto con DeepL.com (versione gratuita)

graph TD
    A[Event, μ: 0.6] --> B[Event, μ: 0.3]
    A --> C[Event, μ: 0.7]
    B --> D[Event, μ: 0.9]
    C --> E[Event, μ: 0.55]
    B --> F[Event, μ: 0.1]
    C --> G[Event, μ: 0.45]
    F --> H[Event, μ: 0.83]
    G --> I[Event, μ: 1.0]
    F --> J[Event, μ: 0.17]
    I --> K[Event, μ: 1.0]
graph TD
    A[ML Алгоритм] --> B[Структурированные данные]
    B --> D[Ищем закономерности]
    D --> H[Провераям узел на наличие закономерностей]
    H --> C[Найдена закономерность]
    C --> D
    D --> G[Выставляем μ]
    G --> X[μ < 0.9]
    X --> D
    G --> Z[μ >= 0.9]
    Z --> N[Сохраням или обьеденяем узел с уже существующим]
    N --> L[Передаём цепочку graph&event AI для генерации ответа]
    L --> F[Сохраняем ответ в таблицу]
    F --> W[Отдаём клиенту через ws если запрошен]
    W -->U["/inteligent_query" промпт+узел.ивент в графе + graph.id]
    U --> D

Оригинал:

# Описание

Нужно реализовать локальную ИИ модель (как отдельный микросервис по типу LLama или другой, который можно развернуть локально), которая сможет работать с огромным массивом данных, распознавая аномалии и генерируя инструкции для формирования ответов. Модель машинного обучения (ML) будет анализировать данные в несколько кругов, постепенно увеличивая диапазон памяти для распознавания паттернов. Алгоритм будет искать события, которые могут быть связаны:
`Например: если открывается порт, будет проверяться, используется ли он и как именно, фильтруя случаи, где порт используется не по назначению или с нестандартными данными.`

Модель должна не только находить аномалии, но и сохранять события с добавлением "prompt" — текста с объяснением, если μ достаточно большое (нужно поексперементировать со значением), где ИИ (не ML) создаст цепочку событий и объяснит, что происходит пользователю. Финальная версия включает создание граф-дерева, в котором каждое событие представляется как узел с температурой (μ - temperature/float), сумма которой равна 1 для всех событий в узле. Это дерево может иметь любую глубину (а также деревья могут ссылатся на узлы или отвельные ивенты с других деревьев), и пользователь через интерфейс сможет взаимодействовать с ИИ, получать ответы и наблюдать подсветку событий на временной шкале, а также видеть связи между ними.

# Детали

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

2. **Граф-дерево**: 
   - Каждое событие имеет триггеры и значение температуры μ, сумма которых равна 1.
   - Граф-дерево может уходить на любую глубину, моделируя связи между событиями.
   - Температура (μ) указывает на вероятность или степень важности события в контексте аномалии.

4. **Пользовательский интерфейс**: 
   - Интерфейс позволяет пользователю вести диалог с ИИ моделью, задавая вопросы (модель отвечает взирая на переданные данные `graph&event`). 
   - Отвечая и подсвечивая соответствующие события на таймлайне. 
   - Пользователь может видеть аналогии и связи между событиями, построенными моделью на основе анализа при помощи подсветок, `notes`, `links`, и `NEW rings`.

# Примерная архитектура

Пример графа с узлами и температурой
μ: {
   description: "temperature",
   type: float,
} - используется для обозначения обсчитанного шанса на то, какое событие в узле является более опасным

μ зависит от того, насколько вероятным является то, что это:
  1. Финальное событие в цепочке
  2. Является проводником для дальнейших ивентов

Сумма всех узлов на одном уровне = 1
Mireg-V commented 1 month ago

Original

Тоесть ML, который в несколько кругов анализирует данные в карте нормалей примерно как: <floats?> Event._id: [key: [warning_index, connects_with]]. Где на каждом круге мы увеличиваем диапазон памяти распознавания паттернов, пока не дойдём до лимита. Тоесть если существует ивент где открывается порт, мы должны поискать ивент где этот порт используется, а далее отфильтровать события где порт используется не по назначению (не базовой программой), или где были переданы нестандартные данные, которые не попадают под паттерн. После детекта мы должны сохранить ивент, добавляя к нему prompt, где уже ИИ модель, а не ML увидит цепочку событий, и расскажет юзеру в что происходит. Финальная версия должна включать в себя граф-дерево где (t - temperature: float)((sum of all t = 1)) Event[triggers, t]: [Event[triggers, t], [Event[triggers, t]] в любую возможую глубину. В пользовательском интерфейсе должна быть возможность вести диалог с ИИ, где ответы ИИ будут в реальном времени подсвечивать Ивенты на таймлайне, и проводить аналогии/links