Honeypot (приманка) — это контролируемый объект, предназначенный для привлечения подозрительного трафика и последующего изучения поведения злоумышленников. В отличие от «сканирования ради сканирования», корректная эксплуатация honeypot нацелена на сбор наблюдаемых данных (метаданных) в безопасной среде: что именно пытались сделать, какие протоколы использовались, какие строки/команды отдавались, и как менялся характер попыток во времени.
В этой статье я покажу подход к разработке и эксплуатации собственного honeypot‑проекта в Termux на Android. Мы развернём Cowrie и Dionaea, настроим изоляцию, исключим взаимодействие с реальными целями в Интернете и разберём сбор метаданных атак для дальнейшего анализа.
Важно: Материал ориентирован на исследовательские цели в рамках законного и безопасного стенда. Разворачивайте honeypot только в собственной лабораторной среде (например, внутри локальной сети) и не направляйте устройство/сервисы в публичный Интернет.
Требования и принципы безопасной эксплуатации
Перед установкой определите ограничения и контроль:
- Изоляция: запускайте honeypot в отдельной подсети/контейнере. На практике — отдельный Wi‑Fi сегмент или полностью изолированная лабораторная сеть.
- Локальность: используйте локальную сеть (VPN допускается только для создания локальной сети), чтобы ограничить доступ и не принимать трафик от случайных третьих лиц.
- Не распространять вред: не включайте режимы, которые могут стать источником атак. Honeypot должен только отвечать имитацией и логировать события.
- Сбор метаданных: фиксируйте события (время, источник, тип попытки, протокол, команды/строки, коды ошибок) и не пытайтесь «взаимодействовать» для компрометации.
- Хранение и защита логов: ограничьте права на каталоги логов, настройте регулярную ротацию и не публикуйте приватные данные.
Технически всё это проще сделать, сочетая Termux, контейнеризацию (где применимо) и аккуратную сеть. На Android важно также учесть ограничения по производительности и стабильности Wi‑Fi/мобильной сети.
Архитектура проекта
Рекомендуемая структура проекта:
- Слой сервисов:
Cowrie(имитация SSH/Telnet для фиксации команд и попыток аутентификации) иDionaea(хранилище и обработка атак на уровне протоколов/служб). - Слой сети и изоляции: только локальный доступ, минимально необходимые порты.
- Слой сборки и нормализации логов: скрипты, которые приводят события к единому формату (например, JSONL) и добавляют служебные поля.
- Слой анализа: подсчёты по типам попыток, источникам, времени и последовательностям действий.
Подготовка Termux
Начнём с обновления пакетов и установки базовых зависимостей. Если вы ранее не работали с Termux, используйте стандартный процесс обновления и установки утилит через репозитории Termux.
pkg update
pkg upgrade -y
pkg install -y git python termux-tools proot nanoДалее поставим полезные инструменты для логирования и обработки текстовых файлов. В зависимости от выбранного варианта сборки Cowrie/Dionaea набор пакетов может отличаться.
pkg install -y wget curl jqПримечание по Python: Cowrie и некоторые компоненты могут требовать конкретные версии зависимостей. На Android это особенно важно — фиксируйте версии и документируйте их в репозитории проекта.
Развёртывание Cowrie в Termux
Cowrie — популярный honeypot, ориентированный на протоколы SSH/Telnet и перехват попыток команд/аутентификации. В рамках лаборатории цель — наблюдать и логировать, а не действовать как «настоящий» сервер с реальными данными.
С практической точки зрения в Termux часто удобнее работать через переносимые компоненты и запуск в изолированной среде. Ниже — общий каркас: создайте рабочую директорию, клонируйте проект и настройте запуск согласно актуальной документации Cowrie.
mkdir -p ~/honeypot/cowrie
cd ~/honeypot/cowrie
git clone <URL_репозитория_Cowrie> cowrie-source
cd cowrie-sourceДальнейшие шаги зависят от конкретного репозитория (и схемы запуска). Типовая логика:
- указать сетевые параметры (желательно только локальная подсеть);
- настроить директорию логов;
- включить режимы логирования событий (аутентификация, ввод команд, ошибки);
- проверить, что сервис слушает только необходимые интерфейсы.
Пример условной конфигурации (поля могут отличаться — ориентируйтесь на структуру конфигурационных файлов вашего Cowrie):
# Пример фрагмента конфигурации (адаптируйте под ваш cowrie)
# log_dir = "/data/data/com.termux/files/home/honeypot/cowrie/logs"
# listen_host = "0.0.0.0" (желательно ограничить доступ локальной сетью средствами сети)
# ssh_port = 2222
# telnet_port = 2223Запуск (условно):
# Команда может отличаться в зависимости от версии/способа установки
python -m <модуль_запуска>Развёртывание Dionaea в Termux
Dionaea — honeypot, который перехватывает и классифицирует попытки атак на уровне протокольных взаимодействий. Для исследователя важно корректно фиксировать события и поддерживать целостность логов.
Аналогично Cowrie: создайте структуру, клонируйте исходники и настройте конфигурацию. Так как Dionaea может иметь более сложные требования к окружению, учитывайте совместимость с Termux и выбранной версией.
mkdir -p ~/honeypot/dionaea
cd ~/honeypot/dionaea
git clone <URL_репозитория_Dionaea> dionaea-source
cd dionaea-sourceПример подхода к настройке: задайте порты, ограничьте доступ локальной сетью и включите логирование событий. В конфигурации Dionaea обычно указывают параметры поведения и обработчиков.
# Пример фрагмента (адаптируйте под вашу конфигурацию Dionaea)
# services:
# - protocol: "http"
# port: 80
# log: enabled
# - protocol: "ftp"
# port: 21
# log: enabled
# storage/log_directory = "/data/data/com.termux/files/home/honeypot/dionaea/logs"Запуск (условно):
# Команда может отличаться в зависимости от сборки
./<entrypoint_или_скрипт>Сетевые настройки: только локальная лаборатория
Чтобы не принимать произвольный трафик из Интернета, организуйте только локальный контур. Практически удобный путь — подключить устройство(а) в одну локальную сеть и ограничить доступ на уровне роутера/ACL. Если вы используете VPN, применяйте его строго для создания локальной сети.
Убедитесь, что honeypot слушает нужные порты и доступен только изнутри:
- используйте порты в диапазоне, который вы контролируете;
- не делайте прямой проброс с публичного адреса;
- проверяйте, что внешний доступ отсутствует.
Проверка слушающих портов в Termux:
# В Termux наличие команды может зависеть от пакетов/окружения
ss -ltnpСбор метаданных атак: принципы и формат
«Сбор метаданных атак» означает фиксацию наблюдаемых данных без попыток эксплуатации. Для анализа обычно полезны поля:
- timestamp — время события;
- source_ip и source_port;
- service — Cowrie SSH/Telnet, Dionaea конкретный модуль;
- event_type — login_attempt, command_input, protocol_probe, payload_like_text (только как индикатор);
- raw_excerpt — короткий фрагмент строки/команды (с маскированием приватного);
- result — success/failed/error/timeout;
- session_id — корреляция событий внутри одной сессии.
Рекомендуемый формат для дальнейшей обработки — JSONL (по одной записи в строке). Ниже пример нормализации логов: вы читаете исходные логи, извлекаете поля и сохраняете в единый журнал.
mkdir -p ~/honeypot/analysis
touch ~/honeypot/analysis/metadata.jsonlУсловный скрипт-обработчик (пример структуры; вам нужно адаптировать под реальные форматы логов Cowrie/Dionaea):
cat << 'EOF' > ~/honeypot/analysis/normalize_events.py
import json
import re
from datetime import datetime
INPUT_LOG = "PUT_PATH_TO_COWRIE_OR_DIONAEA_LOG"
OUT_LOG = "metadata.jsonl"
# Пример регулярных выражений (адаптируйте под конкретный лог)
ip_re = re.compile(r"froms+(?P<ip>\d+\.\d+\.\d+\.\d+)")
time_re = re.compile(r"(?P<ts>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})")
def parse_line(line):
m_ip = ip_re.search(line)
m_ts = time_re.search(line)
if not (m_ip and m_ts):
return None
event = {
"timestamp": m_ts.group("ts"),
"source_ip": m_ip.group("ip"),
"service": "cowrie_or_dionaea",
"event_type": "unknown",
"raw_excerpt": line[:240],
"result": "observed"
}
return event
with open(INPUT_LOG, "r", encoding="utf-8", errors="ignore") as f_in,
open(OUT_LOG, "a", encoding="utf-8") as f_out:
for line in f_in:
evt = parse_line(line)
if evt:
f_out.write(json.dumps(evt, ensure_ascii=False) + "
")
EOFЗапуск нормализации:
python ~/honeypot/analysis/normalize_events.pyСтарайтесь не хранить лишнее. Маскируйте потенциально чувствительные элементы (например, длинные «сырые» строки), ограничивайте объём raw_excerpt.
Анализ событий: что смотреть в первую очередь
После того как у вас накопится metadata.jsonl, можно быстро построить базовые срезы. Например:
- топ источников по количеству событий;
- распределение event_type;
- временные пики (по часам/дням);
- частые строки/команды (с учётом маскирования);
- динамика по сессиям (сколько шагов делает клиент до прекращения).
Примеры команд для быстрых агрегаций с jq (если вы храните JSONL):
# Счётчик по event_type
cat ~/honeypot/analysis/metadata.jsonl | jq -s 'map(.event_type) | group_by(.) | map({key:.[0], count:length}) | sort_by(.count) | reverse'
# Топ source_ip
cat ~/honeypot/analysis/metadata.jsonl | jq -s 'map(.source_ip) | group_by(.) | map({key:.[0], count:length}) | sort_by(.count) | reverse'Если нужно обогатить модель (например, с привязкой к географии), делайте это без раскрытия персональных данных и только для исследовательских выводов. Гео-результаты лучше рассматривать как приближённые и использовать аккуратно.
Ротация логов, контроль объёма и жизненный цикл
Для реальной эксплуатации honeypot важны практики:
- Ротация логов (по размеру или по времени);
- Архивирование в сжатом виде;
- Ограничение прав на каталоги логов;
- Периодическая проверка что сервисы корректно слушают порты и не падают.
Пример базовой ротации (условный подход для простых случаев):
LOG_DIR=~/honeypot/cowrie/logs
ARCHIVE_DIR=~/honeypot/archive
mkdir -p "$ARCHIVE_DIR"
# Сжатие старых файлов (пример логики)
find "$LOG_DIR" -type f -mtime +7 -name ".log" -exec gzip -9 {} ;
find "$LOG_DIR" -type f -name ".gz" -mtime +7 -exec mv {} "$ARCHIVE_DIR"/ ;Типовые сценарии использования honeypot на локальном стенде
Чтобы получить полезные метаданные:
- подключайте к локальной сети тестовые хосты (ваши виртуалки/ПК) и используйте только легитимные «клиенты» для проверки поведения;
- если вам нужно воспроизведение атак — делайте это в формате учебного стенда и только с теми сценариями, которые вы заранее согласовали и контролируете;
- фиксируйте результаты до/после изменений конфигурации, чтобы не потерять причинность.
Даже в учебных условиях ключевым остаётся то, что honeypot должен оставаться наблюдателем и не превращаться в площадку для вреда третьим лицам.
Заключение
Разработка и эксплуатация собственного honeypot‑проекта в Termux с Cowrie и Dionaea — практичный способ собирать метаданные атак и изучать поведение подозрительных клиентов в контролируемой лаборатории. Главное — обеспечить изоляцию, ограничить доступ локальной сетью, вести аккуратные логи и нормализовать события для анализа.
Если хотите развернуть такой стенд под вашу инфраструктуру, подобрать безопасные настройки, организовать сбор и структуру метаданных, а также настроить мониторинг и анализ — обращайтесь в РыбинскЛАБ. Мы поможем спроектировать решение, подготовить документацию и внедрить сопровождение.