Назад к обновлениям
New releaseJul 21, 2026

honeyprompt v0.1.8

LLM-first фреймворк обмана: "Ловушка, которая отвечает!™"

Поделиться

honeyprompt

banner

Представляем honeyprompt — ориентированную на LLM обманную среду, созданную веб-разработчиками для веб-разработчиков. Личный проект-увлечение @alectrocute.

Поддерживает всех крупных облачных и локальных провайдеров LLM. SSH, HTTP, TLS, TCP, telnet и другое. Поставляется в виде небольшого контейнера (и одного статического бинарного файла), а все настройки собраны в одном honeyprompt.yaml.

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

Демо-экземпляр

Демо-экземпляр доступен по адресу 172.233.151.216, с неаутентифицированной веб-панелью здесь: http://172.233.151.216:9090. Это публичный экземпляр honeyprompt, работающий на дешевом VPS от Linode, с openrouter/free в качестве единственного провайдера/модели LLM.

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

Для самой простой настройки в 2026 году мы рекомендуем Docker и OpenRouter/openrouter/free в качестве провайдера LLM. Поддерживаются все крупные облачные и локальные провайдеры LLM. Три файла и одна команда поднимают полное развертывание по умолчанию: семь приманок на базе LLM, надежное хранение событий и панель оператора.

1. Загрузите конфигурацию по умолчанию, файл compose и шаблон .env:

# если у вас нет Docker:
# curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh

mkdir honeypot && cd honeypot
wget https://raw.githubusercontent.com/alectrocute/honeyprompt/main/honeyprompt.yaml
wget https://raw.githubusercontent.com/alectrocute/honeyprompt/main/compose.yaml
wget -O .env https://raw.githubusercontent.com/alectrocute/honeyprompt/main/.env.example

(Или клонируйте репозиторий и перейдите в него — те же три файла.)

2. Заполните .env. Требуются два значения:

OPENROUTER_API_KEY=sk-or-...            # используйте выделенный ключ с лимитом расходов
HONEYPROMPT_PANEL_PASSWORD=changeme     # пароль для базовой аутентификации панели

3. Запустите:

docker compose up -d

4. Протестируйте:

ssh -p 2222 root@localhost            # пароль: root — затем введите что угодно
curl http://localhost:2375/v1.54/containers/json   # "открытый" API Docker

5. Наблюдайте за происходящим в панели только для чтения по адресу http://127.0.0.1:9090 (войдите как admin с паролем панели). Каждое подключение, учетные данные и команда транслируются в реальном времени. Если вы развернуты на удаленном хосте, вам нужно будет открыть порт :9090 в compose.yaml. Это не рекомендуется для продакшн-развертываний.

Для продакшн-развертываний используйте пронумерованный релиз вместо latest — установите HONEYPROMPT_IMAGE в .env.

Только что загруженный вами honeyprompt.yaml — это полностью аннотированная демонстрация. Он содержит профили для:

  • Типичного корпоративного веб-сервера — порт 80, самая широкая сеть; / мгновенно отдает стандартную страницу приветствия nginx, а более глубокие пути передаются LLM для генерации полноценных HTML/CSS страниц интрасети, форм входа и панелей администратора, созданных, чтобы удержать атакующего.
  • MCP / агентских шлюзов — Streamable HTTP обнаружение, метаданные OAuth, вызовы инструментов JSON-RPC и заманчивые производственные инструменты.
  • Docker Engine API 29.5 — неаутентифицированная поверхность порта 2375, используемая реальными облачными червями.
  • Kubernetes API v1.36 — обнаружение пространств имен, рабочих нагрузок, секретов, ConfigMap и RBAC.
  • Инфраструктуры сборки AI на Ubuntu 26.04 — SSH, рабочие нагрузки GPU, Docker, kubeconfigs, состояние CI и учетные данные провайдеров.
  • Redis 8.8 — типичные RESP-зонды, используемые для кражи учетных данных, сохранения состояния и латерального перемещения.
  • Промышленного периферийного / OT оборудования — намеренно устаревшая плоскость управления Telnet, потому что современная защита все еще должна перехватывать атаки на старую инфраструктуру.

Запуск без LLM

[!ВАЖНО] Даже если вы используете LLM, определите наиболее часто используемые пути и добавьте для них статические правила. Это сэкономит огромное количество токенов LLM и ускорит ответы на запросы, которые не стоят затрат на вызов LLM. Случайные примеры: whoami, проверки работоспособности, favicon, зондирование версий и т.д.

Этот минимальный honeyprompt.yaml эмулирует SSH-машину с двумя статическими правилами и без LLM:

panel:
  enabled: true
  address: "0.0.0.0:8080"

events:
  buffer: 2000
  file: /data/events.jsonl # долговременная активность атакующего

services:
  - protocol: ssh
    address: "0.0.0.0:2222"
    description: "Ubuntu 26.04 LTS build runner"
    serverName: "gpu-runner-07"
    passwordRegex: "^(root|admin|123456)$" # какие пароли "работают"
    commands:
      - regex: "^whoami$"
        handler: "root"
      - regex: "^(.+)$"
        handler: "bash: command not found"
docker run --rm \
  -p 2222:2222 -p 8080:8080 \
  -v "$(pwd)/honeyprompt.yaml:/etc/honeyprompt/honeyprompt.yaml:ro" \
  -v honeyprompt-data:/data \
  alectrocute/honeyprompt:latest

Развертывание

Для постоянного развертывания используйте прилагаемый compose.yaml. Руководство по развертыванию охватывает выпуски на Docker Hub, необходимые секреты GitHub, настройку портов и брандмауэра, доступ к панели через SSH, обновления, откат, хранение событий и изоляцию.

Кратко: почему обман на основе LLM

От honeypot требуется только одно: оставаться убедительным достаточно долго, чтобы атакующий продолжал печатать. Каждая выполненная им команда — разведданные: инструменты, к которым он тянется, учетные данные, которые он использует повторно, уязвимости (CVE), которые, по его мнению, вы не исправили. Статические honeypot'ы теряют маскировку, как только кто-то выполняет команду, которую автор не предусмотрел. honeyprompt передает этот момент LLM, поэтому оболочка отвечает на dmesg | tail или cat /etc/shadow так, как ответила бы настоящая, и сессия продолжается.

Посмотрите отличную презентацию Adel Karimi на DEF CON 32 о Galah, (первом?) LLM honeypot, которая вдохновила этот проект: https://www.youtube.com/watch?v=XGsm4Qcc_Ag

Что логируется: два отдельных потока

Это стоит понять заранее, потому что эти два потока намеренно разделены:

  • События обмана: Каждое взаимодействие атакующего: подключения, попытки аутентификации, каждая команда или запрос, ответ, отправленный honeyprompt, какой провайдер и модель ответили, и сколько времени это заняло. Это ваши данные об угрозах. Они хранятся в ограниченном буфере в памяти для панели в реальном времени, и вы можете сохранять все это на диск.
  • Операционные логи: Запуск, какие порты были связаны, сбои провайдеров, остановка, внутренние ошибки. Это то, что вы читаете, когда неправильно ведет себя среда выполнения. Они не имеют ничего общего с активностью атакующего.

Вы настраиваете их отдельно:

# Мед: активность атакующего.
events:
  buffer: 2000 # последние события хранятся в памяти для панели
  file: /data/events.jsonl # сохраняет каждое событие в формате JSON Lines

# Собственная диагностика среды выполнения.
logging:
  level: info # debug | info | warn | error
  format: text # как выглядит на консоли: text (человеко-читаемый) или json
  file: /data/honeyprompt.log # опционально; на диске всегда JSON

Категории