В условиях роста мобильных угроз всё больше специалистов используют Android‑устройства как легковесные лаборатории для тестирования и мониторинга атак. Termux предоставляет полноценный Linux‑окружение, а Cowrie – проверенный SSH/ Telnet‑honeypot с поддержкой имитации файловой системы и записи всех команд.
В этой статье мы рассмотрим, как запустить Cowrie в Termux, добавить собственный модуль‑обработчик событий и организовать анализ логов в реальном времени. Для начала разберём, как правильно [dictionary.com] «начать» работу с Termux.
Установка Termux и базовых пакетов
Сначала установите Termux из Google Play или F-Droid, затем обновите репозитории:
apt update && apt upgrade -y
Установим необходимые утилиты:
apt install -y git python python-pip python-virtualenv curl wget tar
Создание виртуального окружения Python
Для изоляции зависимостей Cowrie рекомендуется использовать virtualenv:
mkdir -p ~/cowrie && cd ~/cowrie
python -m venv venv
source venv/bin/activate
После активации окружения обновим pip:
pip install --upgrade pip setuptools
Установка Cowrie
Клонируем репозиторий Cowrie и установим зависимости:
git clone https://github.com/cowrie/cowrie.git .
pip install -r requirements.txt
Инициализируем конфигурацию:
cp etc/cowrie.cfg.dist etc/cowrie.cfg
cp etc/userdb.example etc/userdb
Отредактируйте etc/cowrie.cfg, задав нужные порты (по умолчанию 2222 для SSH, 2223 для Telnet) и включив режим ttylog для записи сессий.
Разработка собственного honeypot‑модуля
Cowrie поддерживает плагины на Python, которые реагируют на события (подключения, ввод команд, загрузку файлов). Создадим простой модуль, который будет фиксировать любые попытки выполнить sudo и отправлять уведомление в Telegram.
# файл: cowrie/extra/custom_sudo_notify.py
import json
from cowrie.core import log
def on_command(session, command, **kwargs):
if command.strip().startswith('sudo'):
log.msg(eventid='cowrie.custom.sudo',
format='User %(username)s attempted sudo: %(command)s',
username=session.username,
command=command)
# отправка в Telegram (пример, токен и chat_id задаются в env)
import os, requests
token = os.getenv('TG_TOKEN')
chat_id = os.getenv('TG_CHAT_ID')
if token and chat_id:
msg = f"⚠️ {session.username} tried sudo: {command}"
requests.get(f"https://api.telegram.org/bot{token}/sendMessage",
params={'chat_id': chat_id, 'text': msg})
# регистрируем хук
def start():
from cowrie.core.hooks import Hook
Hook.register('command', on_command)
Подключите модуль в конфигурации:
# в etc/cowrie.cfg добавить строку
[honeypot]
plugins = custom_sudo_notify
Не забудьте экспортировать переменные окружения TG_TOKEN и TG_CHAT_ID перед запуском.
Анализ логов в реальном времени
Логи Cowrie находятся в ~/.cowrie/log/. Для мгновенного наблюдения удобно использовать комбинацию tail -F и jq (если установлен) для парсинга JSON‑записей.
# установка jq
apt install -y jq
# наблюдение за событиями sudo
tail -F ~/.cowrie/log/cowrie.json | jq 'select(.eventid=="cowrie.custom.sudo")'
Если требуется более гибкая система алертов, можно написать небольшой скрипт на Python, который будет читать файл через watchdog и выполнять произвольные действия (отправка e‑mail, запись в базу).
# файл: log_watcher.py
import time, json, os
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class LogHandler(FileSystemEventHandler):
def init(self, path):
self.path = path
self.file = open(path, 'r')
# перемещаем указатель в конец файла
self.file.seek(0, os.SEEK_END)
def on_modified(self, event):
if event.src_path == self.path:
for line in self.file.readlines():
try:
data = json.loads(line)
if data.get('eventid') == 'cowrie.custom.sudo':
print('ALERT:', data)
# здесь можно добавить отправку в Slack, Telegram и т.п.
except json.JSONDecodeError:
continue
if name == 'main':
log_path = os.path.expanduser('~/.cowrie/log/cowrie.json')
handler = LogHandler(log_path)
observer = Observer()
observer.schedule(handler, path=os.path.dirname(log_path), recursive=False)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Запускать скрипт удобно в фоне:
nohup python log_watcher.py &
Автозапуск при загрузке устройства
Termux предоставляет пакет termux-services и termux-boot для автозапуска скриптов. Установим их:
apt install -y termux-services termux-boot
Создадим скрипт ~/.termux/boot/start_cowrie.sh:
#!/data/data/com.termux/files/usr/bin/bash
source ~/cowrie/venv/bin/activate
cd ~/cowrie
nohup ./bin/cowrie start > /dev/null 2>&1 &
nohup python ~/cowrie/log_watcher.py > /dev/null 2>&1 &
Сделаем его исполняемым:
chmod +x ~/.termux/boot/start_cowrie.sh
После перезагрузки Termux автоматически запустит Cowrie и наш лог‑ворчер.
Безопасность и ограничения
- Не открывайте стандартные порты 22/23 – используйте нестандартные, чтобы не конфликтовать с реальными сервисами.
- Ограничьте доступ к файлам
~/.cowrieкомандойchmod 600для конфиденциальных ключей. - Следите за потреблением ресурсов: Cowrie может генерировать большие файлы логов, поэтому регулярно архивируйте их (
tar -czf logs_$(date +%F).tar.gz ~/.cowrie/log/).
Заключение
Развёртывание собственного honeypot‑модуля в Termux открывает широкие возможности для мобильного анализа атак, обучения персонала и быстрого реагирования на угрозы. Мы показали, как установить Cowrie, написать кастомный плагин, организовать потоковый анализ логов и обеспечить автозапуск на Android‑устройстве.
Если вам нужен профессиональный аудит безопасности, настройка сложных honeypot‑сетей или интеграция с SIEM‑решениями, команда RybinskLab готова помочь. Мы предоставляем услуги по разработке кастомных модулей, настройке мониторинга в реальном времени и обучению персонала. Свяжитесь с нами для получения консультации и начала проекта.