[доморощенный] web honeypot своими руками

в 11:34, , рубрики: data mining, php, информационная безопасность, обучение, Программирование, метки:

В статье Что и зачем ищут на сайтах «боты тёмной стороны силы» мы рассмотрели типичные примеры из журналов разных сайтов.
Однако, намного интереснее вариация на тему радиоигры в разведке. Что это такое и как его готовить — расскажу далее.
Перечислим основные положения. Если Вы с ними не согласны, то лучше не тратьте Ваше время и не читайте дальше. Итак, основные положения:

  • вы увлекаетесь информационной безопасностью, администрированием web или учитесь на соответствующих специальностях;
  • у вас есть немного желания, времени и ресурсов, которые вы можете потратить, чтобы почувствовать себя исследователем;
  • вы не ожидаете сразу стать супер гуру, но, развивая предложенные в статье частные решения, можете с интересом для себя изучить некоторые вопросы.

Honeypot, если кратко, это разновидность ловушки, с помощью которой исследователь собирает материал. Информацию о разновидностях, существующих решениях, в т.ч. OpenSource, легко найти в сети, поэтому не будем на них останавливаться.

Перейдем к сути:

  • берем хостинг;
  • берем домен;
  • заворачиваем все поступающие запросы на свой скрипт;
  • анализируем поступающие запросы и, помимо накопления статистики, включаемся в игру.

берем хостинг

Необходимо определиться с площадкой, где будет расположен наш honeypot. Для снижения порога вхождения выберем shared-хостинг, т.к. это избавляет от вопросов системного администрирования (установка, оптимальная настройка, защита и обновления), быстро и достаточно дешево. Серверы (диапазоны IP web-серверов) хостинговых компаний известны и никогда не жалуются на отсутствие внимания со стороны ботов.
Желающие могут сразу взяться за VPS/VDS, главное, не застрять на этапе настройки сервера.

берем домен

Новый домен, как правило, сразу привлекает к себе внимание ботов, хотя и «старые» домены тоже отлично подойдут. Если использовать действующий домен (сайт), то могут возникнуть побочные эффекты из-за возможных ошибок перенаправления или излишней нагрузки.
По грубым оценка на начало 2015 года новый домен и несколько месяцев хостинга уложатся в сумму 1000 рублей.

заворачиваем все поступающие запросы на свой скрипт

Решений для этой задачи масса, зависят от используемого web-сервера и уровня влияния на настройки сервера. Предложенный простейший вариант подойдет для нового домена. Это не мешает главному делу и позволяет скорее перейти к самому, на наш взгляд, интересному.

простейший вариант .htaccess

RewriteEngine On
RewriteRule .* index.php [L]    

Все запросы заворачиваются на index.php.
Для более тонкой настройки перенаправлений, особенно для действующего сайта, надо не лениться и обратиться к документации или статьям, например, Как на самом деле работает mod_rewrite. Пособие для продолжающих

анализируем поступающие запросы накапливаем статистику

В скрипте, на который заворачиваем запросы, мы реализуем следующий функционал:

  • журналирование некоторых данных из $_SERVER для накопления статистики;
  • возможность поиска шаблонов (паттернов) в поступающих из $_SERVER данных;
  • эффективный механизм подключения обработчиков для некоторых шаблонов (про эффективность можно посмотреть в Нестандартная оптимизация проектов на PHP);
  • (на будущее) упрощенный и не требовательный к ресурсам механизм сессий на стороне сервера.

включаемся в игру

В вот, наконец, мы подошли к главному. Что же будет представлять из себя игра?
Проанализировав статистику, вы выбираете бота, которого хотите исследовать. Идентифицировать бота можно попытаться по разным признакам (диапазоны IP, время сканирования, User-Agent, характерные запросы URL и т.д.)
После этого Вы маскируетесь под ожидания бота и, выдавая ему ту информацию и файлы, которые он ожидает, полностью описываете его поведение от этапа сканирования до попыток применения экспроитов, нестандартных вызовов, скачивания специфических файлов и т.д.
Например, бот ожидает некоторый css файл — получите, после этого пытается обратиться к специфическому файлу — ищете в сети информацию о нем и выдаете, передает параметры — пытаемся подделать ответ и т.д. Здесь как раз пригодится легковесная реализация сессий.
Конечно, между первым обращением и построением всей цепочки ответов может пройти несколько итераций с элементами угадывания и ручного поиска информации. Но это и есть борьба умов (Вы <-> разработчик алгоритма бота), настоящие шахматы!

небольшая подсказка

Чтобы ботам было сложнее выявить Ваш анализ, целесообразно (в разумных пределах) использовать элемент случайности при выдаче результатов. А именно, ваш алгоритм ещё не знает «правильного ответа» для бота или запрос ранее не встречался — выдайте с вероятностью ХХ% сообщение имитирующее ошибку сервера или пустой файл, пробуют SQL-injection — выдайте правдоподобное сообщение об ошибке СУБД или PHP и т.д.

вместо заключения

Дерзайте! И пусть Ваш труд будет во благо!

Предупреждая предложения сразу выложить готовый код (почему это не сделано):

  • чтобы не сковывать полет фантазии;
  • чтобы «не копипастили» студенты профильных специальностей/кафедр (привет КБиММУ в ТвГУ);
  • чтобы не облегчать задачу ботоводам, которые сразу отсекут начинающих исследователей в процессе тестирования предложенного (если бы он был) в статье кода.

Автор: nvv

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js