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

Представляем 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