Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
zettelforge — Агентная память для CTI на Python — графы знаний STIX, разрешение псевдонимов угроз, автономный RAG, MCP-сервер для агентов Claude Code и LangChain | Kitploit
Инструменты/GitHubGitHub/threatrecall/zettelforge
OSINT (Разведка открытых источников)РазведкаАнализ уязвимостейФорензикаСбор информацииАнализ вредоносных программРазведка угрозМашинное ОбучениеОбучение и ОбразованиеРеагирование на ИнцидентыБезопасность ИИ
5881 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
threatrecall/zettelforge

zettelforge

Агентная память для CTI на Python — графы знаний STIX, разрешение псевдонимов угроз, автономный RAG, MCP-сервер для агентов Claude Code и LangChain

РепозиторийСайт

ZettelForge

Единственная агентная система памяти, созданная для киберразведки угроз.

Когда уходит аналитик старшего звена, вместе с ним уходят два-три года контекста — окружение клиентов, предыдущие расследования, тактики, приёмы и процедуры (TTP) злоумышленников, шаблоны ложных срабатываний, каждое выстраданное «погодите, мы это уже видели». ZettelForge — это агентная система памяти, созданная для того, чтобы контекст оставался с командой.

Она извлекает CVE, угрозные акторы, IOCs и техники ATT&CK из заметок аналитиков и отчётов об угрозах, разрешает псевдонимы (APT28 = Fancy Bear = STRONTIUM = Sofacy), строит граф знаний в формате STIX 2.1 и возвращает каждое прошлое расследование обратно вашим аналитикам — а также Claude Code через MCP — на естественном языке. Работает полностью внутри процесса. Никаких ключей API. Никакого облака. Данные не покидают хост.

PyPI Downloads/month Star History Python 3.10+ License: MIT CI Open Issues Ask DeepWiki

Поставить звезду · pip install zettelforge · Документация · ThreatRecall (хостинг) · Журнал изменений

v2.6.2 (2026-04-27): Редактор конфигурации в вебе теперь работает с выпадающими списками для всех перечисляемых полей (провайдер LLM/встраивания, уровень логирования, действие с PII, формат синтеза) и работающей кнопкой Apply. Новый модуль [crewai] предоставляет ZettelForge в виде инструментов CrewAI — pip install zettelforge[crewai]. Полный журнал изменений

ZettelForge demo -- CTI agentic memory in action

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

Проблема

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

Универсальные системы памяти для ИИ не решают эту проблему для команд безопасности. Они не могут отличить APT28 от Fancy Bear, не знают, что CVE-2024-3094 — это бэкдор XZ Utils, не умеют парсить Sigma или YARA и не имеют понятия об идентификаторах техник MITRE ATT&CK. Когда CTI-аналитик передаёт им год разведывательных отчётов, они возвращают расплывчатый семантический поиск по истории чата.

ZettelForge создан для аналитиков, мыслящих графами угроз. Он автоматически извлекает CVE, угрозных акторов, IOCs и техники ATT&CK, разрешает псевдонимы в разных системах именования, строит граф знаний с причинно-следственными связями и извлекает воспоминания с помощью интеллектуального смешанного поиска — всё внутри процесса, без внешних зависимостей от API.

Увеличение объёма памяти закрывает 33% разрыва между малыми и большими моделями в задачах CTI (CTI-REALM, Microsoft 2026, с GPT-4 в качестве базовой большой модели). См. полный отчёт о тестировании с методологией и сравнениями.

Конвейер данных

ZettelForge architecture -- neural recall loop: ingest, enrich, retrieve, synthesize, backed by SQLite + LanceDB

Возможности

Извлечение сущностей — Автоматически определяет CVE, угрозных акторов, IOCs (IP, домены, хэши, URL, email), техники MITRE ATT&CK, кампании, наборы вторжений, инструменты, людей, места и организации. Регулярные выражения + LLM NER с типами STIX 2.1 на всём протяжении.

Граф знаний — Сущности становятся узлами, совместная встречаемость — рёбрами. LLM выводит причинные тройки («APT28 использует Cobalt Strike»). Временные рёбра и замещение отслеживают эволюцию разведывательных данных.

Разрешение псевдонимов — APT28, Fancy Bear, Sofacy, STRONTIUM — все сводятся к одному узлу актора. Работает автоматически при сохранении и извлечении.

Смешанный поиск — Векторное сходство (768-мерное fastembed, ONNX) + обход графа (BFS по рёбрам графа знаний), взвешенное классификацией намерения. Пять типов намерений: фактический, временной, реляционный, исследовательский, причинный.

Эволюция памяти — С evolve=True новые разведданные сравниваются с существующей памятью. LLM принимает решение ADD, UPDATE, DELETE или NOOP. Устаревшие данные замещаются. Противоречия разрешаются. Дубликаты пропускаются.

Синтез RAG — Синтезируйте ответы по всем сохранённым воспоминаниям с форматом direct_answer.

Внутрипроцессная архитектура — fastembed (ONNX) для встраиваний, llama-cpp-python для опционального локального вывода LLM, SQLite + LanceDB для хранения и Ollama на localhost по умолчанию. Внешние ключи API не требуются. При первом запуске может потребоваться исходящий сетевой доступ для загрузки моделей встраивания/LLM; после предварительной загрузки моделей может работать полностью офлайн (в том числе на изолированных хостах).

Журналирование аудита в схеме OCSF — Каждая операция порождает структурированное событие в формате Open Cybersecurity Schema Framework. Что делать с потоком журналов (SIEM, WORM-хранилище, ничего) — решаете вы.

Быстрый старт

30-секундный «Hello, world» (без LLM)

root@kitploit:~
pip install zettelforge
root@kitploit:~
from zettelforge import MemoryManager

mm = MemoryManager()

# Сохраняем CTI — сущности (CVE, акторы, ID ATT&CK, IOC) извлекаются через регулярные выражения
mm.remember("APT28 uses Cobalt Strike for lateral movement via T1021")
mm.remember("APT28 (Fancy Bear) targets NATO defense contractors with spear-phishing")
mm.remember("CVE-2024-3094 is the XZ Utils backdoor (CVSS 10.0) affecting sshd")

# Поиск объединяет векторный + графовый поиск; разрешение псевдонимов работает (Fancy Bear -> APT28)
for note in mm.recall("What tools does Fancy Bear use?", k=3):
    print(f"[{note.metadata.tier}] {note.content.raw}")

Это работает из чистой pip install без внешних сервисов. Встраивания выполняются внутри процесса через fastembed (модель ONNX ~80 МБ загружается при первом вызове). MemoryManager() по умолчанию пишет в ~/.amem/; переопределите через ZETTELFORGE_DATA_DIR или конфигурацию. Рабочая копия находится в examples/quickstart.py.

Добавьте LLM для синтеза и более богатого извлечения

root@kitploit:~
ollama pull qwen3.5:9b && ollama serve
root@kitploit:~
# При работающем Ollama синтез возвращает сводку по всем сохранённым заметкам
answer = mm.synthesize("Summarize known APT28 TTPs")
print(answer["synthesis"]["answer"])
# Фоновый LLM NER также обогащает сохранённые заметки дополнительными сущностями

ZettelForge автоматически обнаруживает Ollama. Чтобы использовать другого провайдера (local llama-cpp, litellm для 100+ провайдеров, mock для тестов), см. Конфигурация. Без LLM synthesize() всё равно возвращает структурированный ответ, но поле answer является запасным заполнителем — только remember и recall дают полезные результаты в режиме только pip.

Эволюция памяти

root@kitploit:~
# Поступают новые разведданные -- evolve=True включает эволюцию памяти:
# LLM извлекает факты, сравнивает с существующими заметками, принимает решение ADD/UPDATE/DELETE/NOOP
mm.remember(
    "APT28 has shifted tactics. They dropped DROPBEAR and now exploit edge devices.",
    domain="cti",
    evolve=True,   # существующая заметка об APT28 замещается, а не дублируется
)

Как это работает

Каждый вызов remember() запускает конвейер:

  1. Извлечение сущностей — регулярные выражения + LLM NER определяют CVE, наборы вторжений, угрозных акторов, инструменты, кампании, техники ATT&CK, IOCs (IPv4, домен, URL, MD5/SHA1/SHA256, email), людей, места, организации, события, деятельности и временные ссылки (19 типов)
  2. Обновление графа знаний — сущности становятся узлами, совместная встречаемость — рёбрами, LLM выводит причинные тройки
  3. Векторное встраивание — 768-мерное fastembed (ONNX, внутри процесса, 7 мс/встраивание), хранится в LanceDB
  4. Проверка замещения — обнаружение перекрытия сущностей помечает устаревшие заметки как замещённые
  5. Двухпоточная запись — быстрый путь возвращает результат за ~45 мс; причинное обогащение откладывается в фоновый рабочий процесс

Каждый вызов recall() сочетает две стратегии поиска:

  1. Векторное сходство — семантический поиск по встраиваниям
  2. Обход графа — BFS по рёбрам графа знаний, оценка по расстоянию в шагах
  3. Маршрутизация по намерению — запрос классифицируется как фактический/временной/реляционный/причинный/исследовательский, веса корректируются по типу
  4. Переранжирование кросс-энкодером — ms-marco-MiniLM переупорядочивает финальные результаты по релевантности

Использование ZettelForge в Claude Desktop за 60 секунд

root@kitploit:~
pip install zettelforge

Создайте или отредактируйте .claude.json в корне проекта (или ~/.claude/.claude.json для глобального доступа):

root@kitploit:~
{
  "mcpServers": {
    "zettelforge": {
      "command": "python3",
      "args": ["-m", "zettelforge.mcp"]
    }
  }
}

Если ZettelForge установлен в виртуальном окружении, укажите полный путь к интерпретатору Python:

root@kitploit:~
{
  "mcpServers": {
    "zettelforge": {
      "command": "/home/user/.venvs/zettelforge/bin/python",
      "args": ["-m", "zettelforge.mcp"]
    }
  }
}

Запустите Claude Code и убедитесь, что инструменты доступны:

root@kitploit:~
claude
# Внутри сессии спросите: "Какие инструменты у вас есть из zettelforge?"

Доступны семь инструментов: zettelforge_remember, zettelforge_recall, zettelforge_synthesize, zettelforge_entity, zettelforge_graph, zettelforge_stats и zettelforge_sync (требуется enterprise-пакет). См. справочник по протоколу MCP с полными схемами, примерами запросов/ответов JSON-RPC, кодами ошибок и жизненным циклом ленивого синглтона. Для устранения неполадок, путей к виртуальным окружениям и ручного тестирования инструментов см. настройка MCP-сервера.

Бенчмарки

Оценка по опубликованным академическим бенчмаркам:

В столбце Оценка указаны измерения ZettelForge, выполненные с моделями под управлением Ollama, за одним исключением: строка LOCOMO была переизмерена в v2.1.1 с использованием облачного судьи Ollama для оценки (не локальной генерации). См. полный отчёт о тестировании с методологией по бенчмаркам, историей версий и конфигурацией судьи для каждого набора.

Правила обнаружения как память (Sigma + YARA)

Правила Sigma и YARA являются примитивами памяти первого класса. При разборе, проверке и загрузке правила его теги становятся рёбрами графа: техники MITRE ATT&CK, CVE, псевдонимы угрозных акторов, инструменты и семейства вредоносных программ разрешаются в той же онтологии, что и любая другая заметка. Общий супертип DetectionRule содержит подтипы SigmaRule и YaraRule, поэтому один UUID правила адресуется в обоих форматах.

Правила Sigma проверяются по вендорской схеме JSON SigmaHQ. Правила YARA разбираются с помощью plyara и проверяются по стандарту метаданных YARA CCCS (уровни: strict, warn, non_cccs). Загрузка идемпотентна — повторная загрузка неизменённого правила возвращает исходную заметку по хэшу содержимого source_ref.

root@kitploit:~
from zettelforge import MemoryManager
from zettelforge.sigma import ingest_rule as ingest_sigma
from zettelforge.yara import ingest_rule as ingest_yara

mm = MemoryManager()
ingest_sigma("rules/proc_creation_win_office_macro.yml", mm)
ingest_yara("rules/webshell_china_chopper.yar", mm, tier="warn")
root@kitploit:~
# Массовая загрузка из SigmaHQ или частного репозитория правил
python -m zettelforge.sigma.ingest /path/to/sigma/rules/
python -m zettelforge.yara.ingest /path/to/yara/rules/ --tier warn

# Проверка для CI -- разбор + валидация, без записи
python -m zettelforge.sigma.ingest rules/ --dry-run

Объяснитель правил на основе LLM (zettelforge.detection.explainer.explain) создаёт структурированную сводку в формате JSON — намерение, ключевые поля, примечания по обходу, гипотезы ложных срабатываний — для любого DetectionRule. В v1 он выполняется синхронно по запросу; подключение асинхронной очереди обогащения запланировано на v1.1. Скорость ограничена через ZETTELFORGE_EXPLAIN_RPM (по умолчанию 60 вызовов/мин).

Ссылки: Спецификация Sigma, Правила SigmaHQ, CCCS YARA, Документация YARA.

Интеграции

ATHF (Agentic Threat Hunting Framework)

Загружайте завершённые охоты ATHF в память ZettelForge. Техники MITRE и IOCs извлекаются и связываются в графе знаний.

root@kitploit:~
python examples/athf_bridge.py /path/to/hunts/
# 12 hunt(s) parsed
# Ingested 12/12 hunts into ZettelForge

См. examples/athf_bridge.py.

ThreatRecall (Хостинг)

ThreatRecall — это коммерческая версия ZettelForge с включёнными корпоративными расширениями. По умолчанию предлагается как управляемый SaaS, с возможностью локального развёртывания (on-prem) и изолированных развёртываний для секретных сред. Корпоративные дополнения:

  • Бэкенд TypeDB STIX 2.1 — онтология с принудительной схемой и правилами вывода
  • Синхронизация с OpenCTI — двунаправленная синхронизация с вашим экземпляром OpenCTI
  • Многопользовательская аутентификация — OAuth/JWT с изоляцией данных каждого арендатора
  • Генерация правил Sigma — правила обнаружения на основе извлечённых IOCs (в разработке)

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

Записаться в лист ожидания — в настоящее время набираем партнёров по дизайну.

Конфигурация

См. config.default.yaml для всех опций.

Участие

См. CONTRIBUTING.md для настройки разработки.

Лицензия

MIT — см. LICENSE.

Создано Патриком Роландом — LinkedIn | Директор служб SOC, Summit 7 Systems | Ветеран атомного флота ВМС США | CISSP, CCP (CMMC 2.0 Professional)

Поддержите проект

ZettelForge распространяется по лицензии MIT. Поставьте звезду репозиторию, открывайте issues и отправляйте PR — любые вклады приветствуются.

Благодарности

  • Вдохновлено Zettelkasten и A-Mem (NeurIPS 2025)
  • Двухфазный конвейер вдохновлён Mem0
  • Схема STIX 2.1 основана на typedb-cti
  • Оценка проведена с использованием LOCOMO (ACL 2024) и CTIBench (NeurIPS 2024)
  • LanceDB | fastembed | Pydantic | TypeDB
Скачать инструмент
ВозможностьZettelForgeMem0GraphitiCognee
Извлечение CTI-сущностей (CVE, акторы, IOC)ДаНетНетНет
Онтология STIX 2.1ДаНетНетНет
Разрешение псевдонимов угрозных акторовДа (APT28 = Fancy Bear)НетНетНет
Граф знаний с причинными тройкамиДаНетДаДа
Классифицированный по намерению поиск (5 типов)ДаНетНетНет
Внутрипроцессная работа / не требуется внешнее APIДаНетНетНет
Журналы аудита в схеме OCSFДаНетНетНет
MCP-сервер (Claude Code)ДаНетНетНет
БенчмаркЧто измеряетОценка
CTI Retrieval (подмножество CTIBench)Атрибуция, связь с CVE, многошаговость75.0%
RAGASКачество поиска (наличие ключевых слов)78.1%
LOCOMO (ACL 2024)Восстановление контекста диалоговой памяти22.0%
ПеременнаяПо умолчаниюОписание
AMEM_DATA_DIR~/.amemДиректория данных
ZETTELFORGE_BACKENDsqliteСообщество-бэкенд SQLite. TypeDB доступен через расширение.
ZETTELFORGE_LLM_PROVIDERlocallocal (llama-cpp) или ollama