Приманивание является одним из распространенных способов выявления активностей злоумышленников. Решения класса honeypot (горшочек с мёдом) это ресурс, представляющий собой приманку для злоумышленников. На практике это как правило специальное приложение, эмулирующее наличие уязвимых сервисов на открытых портах. Это может быть веб сервер, база данных, файловый ресурс и т.п. Основная задача honeypot это привлечение внимания злоумышленника для того, чтобы, во-первых, заставить его тратить время на взлом не представляющих реальной ценности ресурсов, во-вторых, с помощью приманки нам легче обнаружить хакера и принять защитные меры до того, как он начнет ломать реальные ресурсы, и в-третьих, с помощью honeypot мы может собирать информацию об используемых злоумышленниками методах взлома.
Однако, приманки должны не просто эмулировать уязвимые системы, они должны также сообщать обо всех действиях, выполняемых злоумышленником. Как правило, на практике все сколько-нибудь значимые действия атакующих фиксируются в журналах событий.
При этом фиксируется время, команды, введенные злоумышленником, IP адреса с которых выполнялось подключение, имена пользователей, пароли и другая информация, используемая для взлома. Конечно, лучше всего пересылать все зафиксированные события в SIEM для последующего анализа.
Типы приманок
Условно приманки можно разделить на три типа по уровню взаимодействия с атакующим. Приманки с низким уровнем взаимодействия. Обычно такие honeypot эмулируют работу сетевых сервисов с помощью открытия соответствующих портов и отклика при подключении к этим портам. Так, например, мы можем эмулировать работу СУБД. При сканировании нужный порт окажется открыт, а при последующем подключении будет выведено приглашение с соответствующим баннером, содержащим информацию по версии ОС и СУБД. Однако, по факту дальше приманка ничего эмулировать не будет. То есть злоумышленник может потратить время на подбор пароля от учетной записи, которая никуда не ведет.
То есть, по сути приманки с низким уровнем взаимодействия являются заглушками, лишь имитирующими отдельные признаки целевых сервисов.
Приманки со средним уровнем взаимодействия имитируют операционную систему и могут лучше эмулировать уязвимые приложения. Обычно они собирают больше информации, поскольку их цель — остановить злоумышленника, что дает больше времени для адекватной реакции на угрозу.
Приманки с высоким уровнем взаимодействия - это реально уязвимое ПО, взаимодействующее с различными приложениями. Классическим примером такой приманки является уязвимая ОС Metasploitable.
На что ловим
Также Honeypot могут эмулировать только отдельные сервисы. Так email-приманки представляют собой ложные адреса электронной почты. Обычно их публикуют на внешних ресурсах. Злоумышленник может отправить на этот адрес какое-либо письмо с вредоносом или фишинговой ссылкой. Отслеживая такие письма, мы будем в курсе фишинговых рассылок и других вредоносных активностей, проводимых против компании.
Еще хакеров можно ловить на пароли, перехваченные в сети с помощью сниффера. Техническими средствами обнаружить сниффер в локальной сети невозможно. Вообще, можно обжать витую пару таким образом, чтобы к сети подключались только провода, отвечающие за прием данных и тогда не один бит не сможет уйти в сеть. При наличии физического доступа к сетевым розеткам такой кабель гарантирует отсутствие влияния на сеть. Данный принцип используется в однонаправленных шлюзах (диодах данных), которые получают копии трафика из критических сегментов промышленных сетей.
Но можно выявить прослушивание трафика с помощью простейшей приманки. Создаем в локальной сети ложный сервис, например веб приложение для учета рабочего времени. Оно должно работать по HTTP и использовать передачу пароля в открытом виде или Basic аутентификацию. Очень часто в локальных сетях организаций можно встретить подобные самописные порталы, причем иногда на них используется доменная аутентификация, но пароль от доменной учетки все равно надо вводить вручную.
Далее пишем скрипт, который с некоторый случайной периодичностью успешно подключается к данному узлу. Все подключения фиксируются в логах и пересылаются в SIEM. Далее настраиваем в SIEM правило корреляции, которое смотрит с каких адресов, под какими учетками и когда были подключения к нашему веб ресурсу, если кто-то зашел с нашей учеткой из скрипта и с постороннего узла, значит в сети живет сниффер.
Но все это самодельные honeypot решения. Но есть ли что-то уже готовое? В статье уже упоминался уязвимый дистрибутив Metasploitable. Можно загрузить виртуальную машину с третьей версией данного дистрибутива. В Metasploitable есть уязвимые сервисы FTP, Apache, CUPS веб приложения Drupal, phpMyAdmin и другие приложения и службы. В целом Metasploitable вполне пригоден для использования в качестве приманки с высоким уровнем взаимодействия, если не считать того, что опытный злоумышленник довольно быстро, возможно уже на этапе сканирования поймет что это Honeypot, так как слишком уж дырявые версии ПО там используются. Поэтому для серьезного использования лучше провести некоторую кастомизацию.
Приручаем канарейку
OpenCanary является приманкой среднего уровня взаимодействия. Это honeypot с открытым кодом, написанным на Python, и поэтому ядро honeypot является кроссплатформенным, однако для некоторых функций требуются определенные операционные системы. Имеет чрезвычайно низкие требования к ресурсам и может имитировать Linux Web Server, Windows Server, MySQL Server и MSSQL-сервера и другие.
Установка этого honeypot достаточно проста.
sudo apt-get install python3-dev python3-pip python3-virtualenv python3-venv python3-scapy libssl-dev libpcap-dev
$ virtualenv env/
$ . env/bin/activate
$ pip install opencanary
Опционально можно также установить Samba и Scapy если хотим имитировать виндовые шары и SNMP.
$ sudo apt install samba # if you plan to use the Windows File Share module
$ pip install scapy pcapy-ng # if you plan to use the SNMP module
Далее нам необходимо инициализировать канарейку. Для этого выполним команду:
$ opencanaryd --copyconfig
И затем откроем конфигурационный файл на редактирование:
$ nano /etc/opencanaryd/opencanary.conf
Далее мы видим JSON файл. Его структура очень проста. В качестве примера рассмотрим блок настроек для HTTP/HTTPS.
"http.banner": "Apache/2.2.22 (Ubuntu)",
"http.enabled": false,
"http.port": 80,
"http.skin": "nasLogin",
"https.enabled": false,
"https.port": 443,
"https.skin": "nasLogin",
"https.certificate": "/etc/ssl/opencanary/opencanary.pem",
"https.key": "/etc/ssl/opencanary/opencanary.key",
Прежде всего нас интересует параметр *.enabled. Если мы хотим включить данный сервис данный параметр должен быть true. Далее *.port, по умолчанию предлагаются принятые для данных протоколов номера портов. Параметр *.banner показывает, какая версия ПО используется. Не ставьте слишком старые и дырявые номера версий, будет слишком подозрительно. Параметр http.skin указывает какой вид интерфейса будет использоваться. Для https мы должны также указать пути к файлам pem и keyб используемым для работы TLS шифрования.
Также рекомендую включить обнаружение сканирования портов, как представлено на рисунке.
Для запуска OpenCanary выполним следующие команды:
$ . env/bin/activate
$ opencanaryd –start
Если мы хотим запускать приманку как демона, то нужно выполнить еще несколько команд.
sudo nano /etc/systemd/system/opencanary.service
Добавляем блок
И настраиваем запуск
sudo systemctl enable opencanary.service
sudo systemctl start opencanary
sudo systemctl status opencanary
Проверяем приманку
Для того, чтобы убедиться в том, что OpenCanary действительно запускает соответствующие сервисы для начала проведем сканирование портов.
$ nmap -sV IP_адрес
А еще можно сразу попробовать поискать уязвимости с помощью все того же Nmap
nmap --script=vuln 127.0.0.1
Полагаю, такой результат заинтересует злоумышленника, хотя конечно уязвимость старовата. Зато веб интерфейс выглядит вполне современно.
Ну что ж, злоумышленника мы на какое-то время заняли, пока он будет настраивать hydra на перебор паролей и пытаться эксплуатировать уязвимости с помощью Metasploit у нас есть время для принятия защитных мер.
Но прежде давайте посмотрим какие события зафиксировал наш honeypot для последующей пересылки в SIEM.
Урожай логов
В стандартном файле логов /var/log/syslog можно найти множество сообщений, говорящих о попытках соединения по различным портам, попыткам эксплуатации уязвимостей, подключениях к веб интерфейсу и других подозрительных активностях. В общем, для корреляций в SIEM информации будет достаточно.
Канарейка в коробочке
Honeypot можно развернуть на виртуальной машине, в контейнере или на физическом устройстве. Однако при использовании первых двух технологий есть теоретическая опасность, что злоумышленник сможет выбраться из изолированной среды приманки и начать настоящую атаку. Для того, что максимально минимизировать подобный риск можно развернуть приманку на физическом устройстве. Можно, конечно, взять старый ноутбук, установить на нем Linux и OpenCanary.
Но более мобильным и простым в использовании является развертывание приманки на микрокомпьютере, например на Raspberry Pi. В рамках данной статьи мы не будем рассматривать особенности установки ОС на Малинку. Установка OpenCanary на Ubntu под Raspberry ничем не отличается от описанного выше процесса установки.
Заключение
Наличие грамотно сконфигурированной приманки в сети позволяет не только отвлечь злоумышленника и выиграть драгоценное время, но и вовремя обнаружить и принять необходимые меры для защиты.
Больше практических инструментов по информационной безопасности вы можете изучить в рамках онлайн-курсов от экспертов отрасли. Переходите в каталог и выбирайте подходящее направление.
Synthesis_one
Пару дней назад сделал очень простой honeypot, добавил поле в форму и скрыл через css посколько боты заполняют такие поля а обычные юзеры нет то их стало легко различать