Open valerino opened 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:
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!
È 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.
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”.
Albero del grafico:
Interfaccia utente:
grafici ed eventi
trasmessi). note
, i collegamenti
e i nodi
.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:
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
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
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.