honey
Описание
Honey - мультипротокольный ханипот, предназначенный для анализа внешних ботов, сканирующих, зондирующих и атакующих серверы. Он эмулирует несколько распространённых сетевых сервисов с реалистичными баннерами и сценариями входа, приманивает автоматизированные атакующие инструменты к взаимодействию с собой и незаметно фиксирует все попытки подбора учётных данных.
Honey работает как единый бинарный файл на Go и одновременно слушает пять стандартных портов сервисов: Telnet (23, эмуляция широкополосного роутера BCM96318), SSH (22, dropbear 0.53.1 встраиваемого устройства), HTTP (80, сайт WordPress 6.8.2 либо сервис Basic Authentication), HTTPS (443, сайт WordPress 6.8.2 либо сервис Basic Authentication), FTP (21, файловый сервер). Все сервисы используют единое на-диске виртуальное файловое дерево с корнем root/, каждый сервис заперт в подпути этого дерева (настраивается параметрами *_path). По умолчанию ханипот полностью пассивен: он никогда не выполняет команды атакующего и никогда не предоставляет доступ - каждое взаимодействие наблюдается, фиксируется и отклоняется. Опционально, для каждого сервиса отдельно, можно включить режимы эмуляции, предоставляющие запертую (jailed) сессию (ограниченный шелл или файловый корень, за пределы которого атакующий не может выйти), что приманивает интерактивных атакующих к выполнению команд, все из которых фиксируются. Оба режима безопасны для размещения на публичном IP-адресе.
Используемые модули
- golang.org/x/crypto/ssh - базовая реализация протокола SSH (обмен ключами, криптография, аутентификация)
- github.com/anmitsu/go-shlex - разбиение строк команд SSH на слова в стиле shell для разбора
- gliderlabs/ssh (вендор) - высокоуровневый SSH-серверный фреймворк: обработка сессий, обратные вызовы парольной аутентификации, TCP/IP-форвардинг, keep-alive
- reiver/go-telnet (вендор) - Telnet-сервер: согласование протокола, обработка соединений, опциональный TLS
- reiver/go-telnet/telsh (вендор) - Telnet-шелл-слой: запрос логина/пароля, регистрация и диспетчеризация команд
- reiver/go-oi (вендор) - примитивы ввода-вывода (длинная запись, читаемые с перемоткой потоки), используемые Telnet-стеком
- goftp (вендор) - FTP-сервер: обработка команд, аутентификация, пассивные/активные data-соединения, а также файловый драйвер
Технологии
- Go 1.21+ - весь ханипот написан на Go и компилируется в единый статический бинарный файл
- golang.org/x/crypto/ssh - реализация протокола SSH (обмен ключами, криптография, аутентификация), используемая SSH-ханипотом
- github.com/anmitsu/go-shlex - разбиение строк команд SSH на слова в стиле shell
- Вендорные протокольные стеки - серверные фреймворки Telnet, FTP и SSH закоммичены в репозиторий, поэтому проект собирается воспроизводимо с использованием лишь двух внешних модулей, перечисленных выше
- Лицензия GNU AGPL v3 (Affero GPL)