Введение
В этом практическом занятии (лабораторной работе) вы узнаете, как развернуть Cowrie, среднеинтерактивный SSH-ловушку (гонипот), которая фиксирует и анализирует поведение атакующих. Вы настроите Cowrie в виртуальной среде Python и конфигурируете ее так, чтобы она имитировала реальную SSH-службу, при этом обеспечивая полноценную запись логов.
В ходе этого практического упражнения вы протестируете ловушку, имитируя атаки и анализируя сгенерированные логи. Этот практический опыт поможет вам понять, как ловушки (гонипоты) работают как инструменты кибербезопасности для обнаружения и анализа угроз.
Установка Cowrie
На этом этапе вы установите Cowrie, среднеинтерактивную SSH-ловушку (гонипот), предназначенную для записи переборных атак (brute force attacks) и взаимодействия с оболочкой (shell interaction), выполняемых атакующими. Cowrie реализован на Python и может быть легко установлен с помощью pip. Ловушка (гонипот) - это механизм безопасности, который имитирует реальные системы, чтобы привлечь и изучить злонамеренную активность, помогая профессионалам в области безопасности понять шаблоны атак.
Сначала убедитесь, что вы находитесь в каталоге по умолчанию для работы. Именно здесь мы будем хранить все файлы проекта в порядке:
cd ~/projectУстановите необходимые системные зависимости для Cowrie. Эти пакеты предоставляют важные компоненты, необходимые для корректной работы Cowrie, включая инструменты разработки на Python и криптографические библиотеки:
sudo apt-get update && sudo apt-get install -y python3-venv python3-dev libssl-dev libffi-dev build-essentialСоздайте виртуальную среду Python для Cowrie. Виртуальные среды изолируют зависимости проекта от системной установки Python, предотвращая возможные конфликты:
python3 -m venv cowrie-envАктивируйте виртуальную среду. После активации любые пакеты Python, которые вы установите, будут помещаться в эту изолированную среду, а не в систему-wide Python:
source cowrie-env/bin/activateУстановите Cowrie с помощью pip. Pip - это менеджер пакетов Python, который загрузит и установит Cowrie вместе с его зависимостями:
pip install cowrieПроверьте установку, проверив версию Cowrie. Это подтверждает, что пакет был установлен правильно и показывает, какую версию вы используете:
cowrie --versionВы должны увидеть вывод, похожий на следующий:
cowrie 2.1.0Деактивируйте виртуальную среду после завершения работы. Это вернет вас в стандартную среду Python системы:
deactivate
Настройка параметров ловушки (гонипота)
На этом этапе вы настроите параметры ловушки (гонипота) Cowrie, чтобы настроить ее поведение и возможности записи логов. Конфигурационные файлы являются "мозгом" вашей ловушки, определяя, как она взаимодействует с потенциальными атакующими и какие данные записываются для анализа.
Сначала активируйте виртуальную среду Python, созданную на предыдущем этапе. Это изолирует зависимости Cowrie от системного Python:
cd ~/project source cowrie-env/bin/activateСгенерируйте конфигурационные файлы по умолчанию. Эти шаблоны содержат все доступные настройки со значениями по умолчанию:
cowrie-gen-configЭто создаст конфигурационные файлы в
~/project/cowrie-env/etc/cowrie/Отредактируйте основной конфигурационный файл с помощью nano, текстового редактора, подходящего для начинающих:
nano cowrie-env/etc/cowrie/cowrie.cfgИзмените следующие важные настройки (используйте стрелки для навигации, Ctrl+O для сохранения, Ctrl+X для выхода):
- Измените
listen_port = 2222наlisten_port = 22- это сделает ловушку выглядеть как стандартный SSH-сервер - Установите
enabled = trueв разделе[output_json]- это включает структурированную запись логов для более простого анализа - Установите
enabled = trueв разделе[output_textlog]- это обеспечивает запись логов в человекочитаемом формате
- Измените
Создайте отдельный каталог для файлов логов. Хранение логов отдельно облегчает их организация и анализ:
mkdir -p ~/project/cowrie-logsОбновите путь для записи логов в конфигурации, чтобы он указывал на ваш новый каталог:
nano cowrie-env/etc/cowrie/cowrie.cfgНайдите настройку
log_pathи измените ее на:log_path = /home/labex/project/cowrie-logsПроверьте внесенные изменения в конфигурации, проверив измененные настройки:
grep -E 'listen_port|enabled|log_path' cowrie-env/etc/cowrie/cowrie.cfgВы должны увидеть вывод, отражающий ваши изменения, подтверждающий, что конфигурация была сохранена правильно.
Запуск SSH-сервиса
На этом этапе вы запустите SSH-сервис ловушки (гонипота) Cowrie, который будет прослушивать входящие соединения. Поскольку мы работаем в контейнере Docker без systemd, мы будем использовать прямой запуск процесса. Этот подход проще, чем традиционный менеджмент служб, и лучше подходит для контейнеризованных окружений.
Сначала убедитесь, что вы находитесь в правильном каталоге и активируйте виртуальную среду. Виртуальная среда содержит все необходимые зависимости Python, изолированные от системы:
cd ~/project source cowrie-env/bin/activateЗапустите службу Cowrie в фоновом режиме. Флаг
-nзаставляет ее работать в не-демонном режиме (показывать вывод непосредственно в терминале), а&помещает процесс в фон, чтобы вы могли продолжать использовать терминал:cowrie start -n &Проверьте, что служба запущена, проверив список процессов. Эта команда фильтрует все запущенные процессы, чтобы показать только те, которые содержат "cowrie":
ps aux | grep cowrieВы должны увидеть вывод, похожий на следующий:
labex 12345 0.0 0.5 12345 6789 ? S 12:34 0:00 python cowrie start -nПроверьте, слушает ли служба порт 22. Это важно, так как SSH-соединения будут приходить на этот порт. Команда показывает все сетевые службы и их прослушиваемые порты:
sudo netstat -tulnp | grep 22Вы должны увидеть вывод, указывающий, что Python слушает порт 22.
Чтобы сделать службу устойчивой к закрытию сессии терминала, создайте простой скрипт для поддержания работы. Это гарантирует, что ловушка будет работать, даже если вы закроете терминал:
nano cowrie-keepalive.shДобавьте следующее содержимое:
#!/bin/bash source ~/project/cowrie-env/bin/activate cowrie start -nСделайте скрипт исполняемым, чтобы его можно было запускать напрямую:
chmod +x cowrie-keepalive.shТеперь вы можете запустить ловушку, выполнив этот скрипт. Он активирует среду и запускает Cowrie за один шаг:
./cowrie-keepalive.sh
Симуляция атаки
На этом этапе вы имитируете SSH-атаку методом перебора паролей (брутфорс) на вашу ловушку (гонипот) Cowrie, чтобы проверить ее способность записывать события. Эта симуляция показывает, как реальные злоумышленники могут пытаться получить несанкционированный доступ, и как ловушка записывает эти попытки для дальнейшего анализа.
Сначала убедитесь, что ваша ловушка Cowrie запущена (см. предыдущий шаг):
ps aux | grep cowrieЭта команда проверяет, активен ли процесс Cowrie. В выходном списке вы должны увидеть 'cowrie'.
Установите SSH-клиент, если он еще не установлен:
sudo apt-get install -y openssh-clientПакет openssh-client предоставляет команду ssh, которую мы будем использовать для подключения к нашей ловушке. Флаг '-y' автоматически подтверждает все запросы.
Симулируйте атаку методом перебора паролей, пытаясь установить несколько SSH-соединений с использованием распространенных комбинаций имени пользователя и пароля:
for i in {1..5}; do sshpass -p 'password' ssh -o StrictHostKeyChecking=no -p 22 labex@localhost sshpass -p 'admin' ssh -o StrictHostKeyChecking=no -p 22 admin@localhost sshpass -p 'root' ssh -o StrictHostKeyChecking=no -p 22 root@localhost doneЭтот скрипт пытается использовать распространенные пары имя пользователя/пароль (например, root/password) по пять раз каждая. Флаг '-o StrictHostKeyChecking=no' предотвращает запросы SSH о неизвестных хостах, упрощая автоматизацию.
Симулируйте более сложную атаку с использованием Hydra (предварительно установленного в виртуальной машине LabEx):
hydra -L /usr/share/wordlists/metasploit/unix_users.txt -P /usr/share/wordlists/metasploit/unix_passwords.txt -t 4 -vV localhost sshHydra - это мощный инструмент для перебора паролей. Здесь он пытается комбинации из предоставленных списков слов (-L для имен пользователей, -P для паролей). Флаг '-t 4' ограничивает количество параллельных попыток до 4, а '-vV' показывает подробный вывод.
Проверьте, были ли атаки записаны в журналах Cowrie:
ls -l ~/project/cowrie-logs/После выполнения атак эта команда показывает новые файлы журнала, содержащие подробности всех попыток подключения. Именно эти журналы анализируют специалисты по безопасности в реальной эксплуатации.
Проверка логов атак
На этом этапе вы проанализируете журналы атак, сгенерированные Cowrie, чтобы понять имитированные атаки из предыдущего шага. Журналы содержат ценную информацию о безопасности, связанную с попытками атак. Cowrie автоматически записывает все попытки взаимодействия в двух форматах: простой текстовый журнал для быстрого просмотра и структурированный JSON-журнал для детального анализа.
Сначала перейдите в каталог с журналами, где Cowrie хранит все свои файлы журналов:
cd ~/project/cowrie-logsПросмотрите текстовый файл журнала (самые новые записи сверху). Команда
ls -ltпоказывает файлы, отсортированные по времени изменения, аtailотображает последние 20 строк самого свежего журнала:ls -lt cowrie.log* tail -n 20 cowrie.logВы должны увидеть записи, показывающие неудачные попытки входа с временными метками, именами пользователей и IP-адресами.
Проверьте JSON-файл журнала для получения структурированных данных. Инструмент
jqпомогает разобрать JSON, аlessпозволяет прокручивать длинный вывод:jq '.' cowrie.json | lessИщите записи с "eventid": "cowrie.login.failed", которые указывают на неудачные попытки аутентификации.
Найдите конкретные шаблоны атак, нацеленные на общие административные учетные записи. Команда
grepищет текстовые шаблоны в файлах:grep -a "root" cowrie.log grep -a "admin" cowrie.logСоздайте сводку по попыткам атак. Эти команды извлекают и подсчитывают наиболее часто используемые имена пользователей и пароли из JSON-журналов:
echo "Top usernames attempted:" jq -r 'select(.eventid=="cowrie.login.failed") | .username' cowrie.json | sort | uniq -c | sort -nr echo -e "\nTop passwords attempted:" jq -r 'select(.eventid=="cowrie.login.failed") | .password' cowrie.json | sort | uniq -c | sort -nrПросмотрите информацию о исходных IP-адресах (в этой симуляции будет показан localhost). Это извлекает IP-адреса подключающихся клиентов:
jq -r 'select(.eventid=="cowrie.session.connect") | .src_ip' cowrie.json
Резюме
В этом практическом занятии вы научились развертывать SSH-ловушку (гонипот) Cowrie для мониторинга и анализа кибератак. Процесс включал настройку виртуального окружения Python, настройку портов SSH и включение JSON-журналирования для подробного сбора данных об атаках.
Вы также получили практический опыт запуска сервиса ловушки, имитации атак и анализа записанных данных. Это практическое упражнение показало, как средства безопасности могут имитировать реальные системы для эффективного обнаружения и изучения вредоносной деятельности.


