MetaLLM

Exploitation активный

Фреймворк в стиле Metasploit для тестирования безопасности AI и ML с более чем 40 эксплойт-модулями, нацеленными на уязвимости из OWASP LLM Top 10.


Установка
git clone https://github.com/scthornton/MetaLLM.git
cd MetaLLM
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
показать оригинал переведено ИИ

MetaLLM v2.0 — Фреймворк для тестирования безопасности ИИ/МО

Python 3.10+ Лицензия: MIT OWASP LLM Top 10 2025 Модули: 61 Тесты: 137

MetaLLM — это фреймворк для тестирования безопасности, вдохновлённый Metasploit, специально разработанный для систем ИИ и машинного обучения. Он предоставляет 61 рабочий модуль, охватывающий атаки на промпты LLM, отравление RAG, эксплуатацию агентного ИИ, компрометацию инфраструктуры MLOps, тестирование безопасности API и сетевые атаки на уровне МО — всё это управляется через интерактивный CLI с автодополнением, отслеживанием сессий и структурированными отчётами, сопоставленными с MITRE ATLAS и OWASP LLM Top 10 2025.

Баннер MetaLLM — Интерактивная консоль с поиском и типами целей

Что отличает MetaLLM

Существуют и другие инструменты для тестирования безопасности ИИ. Вот чем MetaLLM отличается от них:

Возможность MetaLLM Garak PyRIT Promptfoo
Рабочий процесс оператора в стиле Metasploit (use / set / run / sessions) Да Нет Нет Нет
Полное покрытие стека (от сети до модели и агента) Да Нет Частично Нет
Модуль отравления инструмента MCP Да Нет Нет Нет
Многоходовые адаптивные джейлбрейки (крещендо, накопление контекста) Да Нет Да Нет
Эксплойты инфраструктуры MLOps (Jupyter, MLflow, W&B, TensorBoard) Да Нет Нет Нет
Менеджер сессий с отслеживанием трофеев Да Нет Нет Нет
Целевая база данных SQLite для сохранения состояния тестирования Да Нет Нет Нет
Сопоставление отчётов с MITRE ATLAS и OWASP Да Нет Частично Частично

MetaLLM не заменяет ни один из этих инструментов. Он заполняет пробел: фреймворк, ориентированный на оператора, для практических красных команд ИИ, который охватывает всю поверхность атаки — от сетевой разведки до эксплуатации модели и сбора трофеев после эксплуатации.

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

Требования

  • Python 3.10 или выше
  • pip

Установка

git clone https://github.com/perfecXion-ai/MetaLLM.git
cd MetaLLM

python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

pip install -r requirements.txt

Запуск

python metallm.py

Базовый рабочий процесс

Выбор модуля, конфигурация и установка параметров

metalllm> use exploit/llm/prompt_injection
metalllm exploit(prompt_injection)> show options
metalllm exploit(prompt_injection)> set TARGET_URL http://target.example.com/api/chat
metalllm exploit(prompt_injection)> set PROVIDER openai
metalllm exploit(prompt_injection)> set MODEL gpt-4
metalllm exploit(prompt_injection)> run

metalllm> sessions -l          # List active sessions
metalllm> sessions -i 1        # Interact with session 1
metalllm> report generate       # Generate assessment report

Выполнение эксплойта — многоходовой адаптивный джейлбрейк с сопоставлением OWASP/MITRE

Команды CLI

Команда Описание
use <модуль> Выбрать модуль
show options Показать настраиваемые параметры активного модуля
set <ПАРАМЕТР> <значение> Установить параметр модуля
run Выполнить активный модуль
check Проверить цель без полной эксплуатации
search <термин> Поиск модулей по имени или ключевому слову
show modules Показать все доступные модули
sessions -l Показать активные сессии
sessions -i <id> Взаимодействовать с сессией
targets Управление базой данных целей
report generate Сгенерировать отчёт в формате HTML/Markdown/JSON
back Отменить выбор активного модуля
help Показать доступные команды

Категории модулей

Модули эксплуатации (44)

LLM — 12 модулей

Модуль Описание
exploit/llm/prompt_injection Многотехническая инъекция промптов
exploit/llm/prompt_injection_basic Базовые шаблоны инъекции промптов
exploit/llm/prompt_injection_advanced Продвинутая инъекция с манипуляцией контекстом
exploit/llm/jailbreak Стандартные техники джейлбрейка
exploit/llm/jailbreak_dan Варианты джейлбрейка в стиле DAN
exploit/llm/system_prompt_leak Утечка системного промпта через косвенные методы
exploit/llm/system_prompt_extraction Прямое извлечение системного промпта (многотехнический подход)
exploit/llm/context_manipulation Атаки с манипуляцией окном контекста
exploit/llm/adaptive_jailbreak Многоходовые адаптивные джейлбрейки (крещендо, накопление контекста)
exploit/llm/flipattack FlipAttack — обход путём переворота слов/сегментов
exploit/llm/encoding_bypass Обходы с помощью кодировок Base64, ROT13, hex, unicode
-- (11 уникальных модулей; prompt_injection учитывается один раз)
RAG — 5 модулей
Модуль Описание
exploit/rag/vector_injection Внедрение вредоносных векторов в конвейер поиска
exploit/rag/document_poisoning Отравление документов, обрабатываемых системами RAG
exploit/rag/knowledge_corruption Искажение записей в базе знаний
exploit/rag/retrieval_manipulation Манипуляция ранжированием и результатами поиска
exploit/rag/poisoning Общие техники отравления RAG

Agent / MCP — 10 модулей

Модуль Описание
exploit/agent/goal_hijacking Перенаправление целей агента через внедрённые инструкции
exploit/agent/tool_misuse Злоупотребление интерфейсами вызова инструментов агента
exploit/agent/memory_manipulation Вмешательство в хранилище памяти агента
exploit/agent/plugin_abuse Эксплуатация загрузки и выполнения плагинов
exploit/agent/langchain_rce Удалённое выполнение кода (RCE) в LangChain через небезопасную десериализацию
exploit/agent/langchain_tool_injection Внедрение вредоносных инструментов в агентов LangChain
exploit/agent/crewai_task_manipulation Манипуляция определениями задач в CrewAI
exploit/agent/autogpt_goal_corruption Искажение состояния целей AutoGPT
exploit/agent/protocol_message_injection Внедрение сообщений в протокольный слой агента
exploit/agent/mcp_tool_poisoning Отравление определений и ответов инструментов MCP

Инфраструктура MLOps — 9 модулей

Модуль Описание
exploit/mlops/pickle_deserialization Удалённое выполнение кода (RCE) через десериализацию Pickle
exploit/mlops/mlflow_model_poison Отравление моделей в MLflow
exploit/mlops/mlflow_model_poisoning Вариант отравления реестра моделей MLflow
exploit/mlops/jupyter_rce Удалённое выполнение кода (RCE) в Jupyter Notebook
exploit/mlops/jupyter_notebook_rce Эксплуатация ядра Jupyter Notebook
exploit/mlops/wandb_credential_theft Извлечение учётных данных Weights & Biases
exploit/mlops/wandb_data_exfiltration Эксфильтрация данных экспериментов W&B
exploit/mlops/model_registry_manipulation Вмешательство в реестр моделей
exploit/mlops/tensorboard_attack Эксплуатация TensorBoard

API — 3 модуля

Модуль Описание
exploit/api/api_key_extraction Извлечение API-ключей из ответов и конфигураций LLM
exploit/api/excessive_agency Проверка на избыточные полномочия / действия без ограничений
exploit/api/unauthorized_access Обход авторизации API

Сеть — 5 модулей

Модуль Описание
exploit/network/adversarial_examples Создание вредоносных входных данных для ML-моделей
exploit/network/model_extraction Кража моделей через API-запросы
exploit/network/model_inversion Восстановление обучающих данных по выходам модели
exploit/network/membership_inference Определение, входили ли данные в обучающий набор
exploit/network/api_key_harvesting Сбор API-ключей из сетевого трафика

Вспомогательные модули (16)

Сканер — 5 модулей

Модуль Описание
auxiliary/scanner/llm_api_scanner Поиск API-эндпоинтов LLM
auxiliary/scanner/mlops_discovery Поиск платформ MLOps (MLflow, Kubeflow и др.)
auxiliary/scanner/rag_endpoint_enum Перечисление эндпоинтов систем RAG
auxiliary/scanner/agent_framework_detect Определение используемых фреймворков агентов
auxiliary/scanner/ai_service_port_scan Скан портов для сервисов ИИ/ML

Фингерпринтинг — 4 модуля

Модуль Описание
auxiliary/fingerprint/llm_model_detector Определение LLM за API
auxiliary/fingerprint/capability_prober Зондирование возможностей и ограничений модели
auxiliary/fingerprint/safety_filter_detect Обнаружение и анализ защитных фильтров
auxiliary/fingerprint/embedding_model_id Идентификация моделей эмбеддингов

Поиск — 3 модуля

Модуль Описание
auxiliary/discovery/vector_db_enum Перечисление векторных баз данных (Pinecone, Weaviate, Qdrant и др.)
auxiliary/discovery/model_registry_scan Скан реестров моделей
auxiliary/discovery/training_infra_disc Поиск инфраструктуры обучения

Тестирование DoS — 3 модуля

Модуль Описание
auxiliary/dos/token_exhaustion Исчерпание бюджета токенов
auxiliary/dos/rate_limit_test Тестирование границ ограничения по запросам
auxiliary/dos/context_overflow Переполнение контекстного окна

Вспомогательные модули LLM — 2 модуля

Модуль Описание
auxiliary/llm/fingerprint Фингерпринтинг LLM через анализ поведения
auxiliary/llm/fuzzer Фаззинг входных данных LLM
---
Модуль Описание
post/llm/context_extraction Извлечение контекста беседы и данных из скомпрометированных сессий

Обзор архитектуры

MetaLLM/
├── metallm.py                  # Entry point -- launches interactive CLI
├── cli/
│   ├── console.py              # REPL with tab completion and command history
│   ├── commands.py             # Command implementations
│   ├── completer.py            # Tab completion engine
│   └── formatter.py            # Output formatting
├── metallm/
│   ├── base/                   # Base classes: Module, Target, Result, Option
│   └── core/
│       ├── module_loader.py    # Dynamic module discovery and loading
│       ├── session.py          # Session manager (active sessions, loot)
│       ├── db.py               # SQLite target database
│       ├── llm_client.py       # Unified LLM client (OpenAI, Anthropic, Ollama, Google, generic HTTP)
│       └── reporting.py        # Report generation with MITRE ATLAS + OWASP mapping
├── modules/
│   ├── exploits/               # 44 exploit modules
│   │   ├── llm/                # Prompt injection, jailbreaks, extraction
│   │   ├── rag/                # Vector injection, poisoning, corruption
│   │   ├── agent/              # Goal hijacking, MCP poisoning, RCE
│   │   ├── mlops/              # Pickle deser, MLflow, Jupyter, W&B
│   │   ├── api/                # Key extraction, excessive agency
│   │   └── network/            # Model extraction, adversarial examples
│   ├── auxiliary/              # 16 auxiliary modules
│   │   ├── scanner/            # API scanning, port scanning
│   │   ├── fingerprint/        # Model detection, filter detection
│   │   ├── discovery/          # Vector DB, registry, infra discovery
│   │   ├── dos/                # Token exhaustion, rate limits
│   │   └── llm/                # Fingerprinting, fuzzing
│   └── post/                   # 1 post-exploitation module
└── tests/                      # 120 unit + 17 integration tests

Ключевые компоненты

Унифицированный клиент LLM — Модули не выполняют прямые HTTP-запросы. LLMClient обрабатывает форматирование запросов для конкретных провайдеров: OpenAI, Anthropic, Ollama, Google (Gemini) и любых совместимых с OpenAI конечных точек. Модули вызывают client.send(prompt) и получают текст в ответ.

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

База данных целей — Постоянное хранение на основе SQLite для целей, заданий, находок и трофеев. Позволяет возобновить работу без повторного ввода информации о целях.

Движок отчётности — Генерирует самодостаточные отчёты в форматах HTML, Markdown и JSON. Каждая находка сопоставляется с техниками MITRE ATLAS (49 идентификаторов техник) и категориями OWASP LLM Top 10 2025.

Тестирование

MetaLLM включает 137 тестов: 120 юнит-тестов, покрывающих базовые классы, загрузку модулей и основной фреймворк, а также 17 интеграционных тестов, выполняющих реальные эксплойты против работающего экземпляра Ollama.

Запуск юнит-тестов

pytest tests/test_base.py -v

Запуск интеграционных тестов (требуется локальный Ollama с моделью llama3.2:1b)

ollama pull llama3.2:1b
pytest tests/test_integration_ollama.py -v -s -m integration

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

  • Извлечение системного промпта — Запускает все техники извлечения против известного системного промпта. Проверяет, что модуль извлекает распознаваемый контент (например, ключевые слова из целевого промпта).
  • Обход кодировок — Тестирует base64, ROT13, шестнадцатеричные, юникод и другие техники кодирования. Проверяет выполнение всех техник без ошибок.
  • FlipAttack — Тестирует реверсирование слов, сегментов и все техники переворота. Проверяет выполнение нескольких техник и оценку результатов.
  • Адаптивный джейлбрейк — Запускает стратегии крещендо и наращивания контекста в течение нескольких ходов беседы. Проверяет управление состоянием в многоходовых диалогах и чередование сообщений пользователя и ассистента.
  • Клиент LLM — Прямые тесты против Ollama: базовая отправка, влияние системного промпта, история беседы и время отклика.

Это не мок-тесты. Каждый тест отправляет реальные промпты реальной модели и проверяет реальные ответы.

Ответственное использование

MetaLLM — это инструмент для тестирования безопасности. Он предназначен исключительно для авторизованного использования.

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

Не используйте MetaLLM для: - Несанкционированного доступа к любым системам - Атак на производственные системы без разрешения - Кражи или эксфильтрации данных - Любой деятельности, нарушающей применимое законодательство

Авторы не несут ответственности за неправомерное использование. Пользователи несут полную ответственность за соблюдение всех применимых законов и нормативных актов.

Участие в разработке

Приветствуются любые вклады. Чтобы добавить модуль:

  1. Сделайте форк репозитория
  2. Создайте ветку для новой функции
  3. Напишите модуль, следуя существующим шаблонам в modules/exploits/base.py
  4. Добавьте тесты
  5. Отправьте пулл-реквест

Все модули должны определять: name, description, author, options и реализовывать метод run(). Модули эксплойтов также должны реализовывать метод check() для неразрушающей проверки уязвимостей.

Лицензия

Лицензия MIT. Подробности в файле LICENSE.

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

Автор: Scott Thornton Контакт: scott@perfecxion.ai

Войдите, чтобы оставить комментарий