В статье Что и зачем ищут на сайтах «боты тёмной стороны силы» мы рассмотрели типичные примеры из журналов разных сайтов.
Однако, намного интереснее вариация на тему радиоигры в разведке. Что это такое и как его готовить — расскажу далее.
Перечислим основные положения. Если Вы с ними не согласны, то лучше не тратьте Ваше время и не читайте дальше. Итак, основные положения:
вы увлекаетесь информационной безопасностью, администрированием web или учитесь на соответствующих специальностях;
у вас есть немного желания, времени и ресурсов, которые вы можете потратить, чтобы почувствовать себя исследователем;
вы не ожидаете сразу стать супер гуру, но, развивая предложенные в статье частные решения, можете с интересом для себя изучить некоторые вопросы.
Honeypot, если кратко, это разновидность ловушки, с помощью которой исследователь собирает материал. Информацию о разновидностях, существующих решениях, в т.ч. OpenSource, легко найти в сети, поэтому не будем на них останавливаться.
заворачиваем все поступающие запросы на свой скрипт;
анализируем поступающие запросы и, помимо накопления статистики, включаемся в игру.
берем хостинг
Необходимо определиться с площадкой, где будет расположен наш honeypot. Для снижения порога вхождения выберем shared-хостинг, т.к. это избавляет от вопросов системного администрирования (установка, оптимальная настройка, защита и обновления), быстро и достаточно дешево. Серверы (диапазоны IP web-серверов) хостинговых компаний известны и никогда не жалуются на отсутствие внимания со стороны ботов.
Желающие могут сразу взяться за VPS/VDS, главное, не застрять на этапе настройки сервера.
берем домен
Новый домен, как правило, сразу привлекает к себе внимание ботов, хотя и «старые» домены тоже отлично подойдут. Если использовать действующий домен (сайт), то могут возникнуть побочные эффекты из-за возможных ошибок перенаправления или излишней нагрузки.
По грубым оценка на начало 2015 года новый домен и несколько месяцев хостинга уложатся в сумму 1000 рублей.
заворачиваем все поступающие запросы на свой скрипт
Решений для этой задачи масса, зависят от используемого web-сервера и уровня влияния на настройки сервера. Предложенный простейший вариант подойдет для нового домена. Это не мешает главному делу и позволяет скорее перейти к самому, на наш взгляд, интересному.
(на будущее) упрощенный и не требовательный к ресурсам механизм сессий на стороне сервера.
включаемся в игру
В вот, наконец, мы подошли к главному. Что же будет представлять из себя игра?
Проанализировав статистику, вы выбираете бота, которого хотите исследовать. Идентифицировать бота можно попытаться по разным признакам (диапазоны IP, время сканирования, User-Agent, характерные запросы URL и т.д.)
После этого Вы маскируетесь под ожидания бота и, выдавая ему ту информацию и файлы, которые он ожидает, полностью описываете его поведение от этапа сканирования до попыток применения экспроитов, нестандартных вызовов, скачивания специфических файлов и т.д.
Например, бот ожидает некоторый css файл — получите, после этого пытается обратиться к специфическому файлу — ищете в сети информацию о нем и выдаете, передает параметры — пытаемся подделать ответ и т.д. Здесь как раз пригодится легковесная реализация сессий.
Конечно, между первым обращением и построением всей цепочки ответов может пройти несколько итераций с элементами угадывания и ручного поиска информации. Но это и есть борьба умов (Вы <-> разработчик алгоритма бота), настоящие шахматы!
небольшая подсказка
Чтобы ботам было сложнее выявить Ваш анализ, целесообразно (в разумных пределах) использовать элемент случайности при выдаче результатов. А именно, ваш алгоритм ещё не знает «правильного ответа» для бота или запрос ранее не встречался — выдайте с вероятностью ХХ% сообщение имитирующее ошибку сервера или пустой файл, пробуют SQL-injection — выдайте правдоподобное сообщение об ошибке СУБД или PHP и т.д.
вместо заключения
Дерзайте! И пусть Ваш труд будет во благо!
Предупреждая предложения сразу выложить готовый код (почему это не сделано):
чтобы не сковывать полет фантазии;
чтобы «не копипастили» студенты профильных специальностей/кафедр (привет КБиММУ в ТвГУ);
чтобы не облегчать задачу ботоводам, которые сразу отсекут начинающих исследователей в процессе тестирования предложенного (если бы он был) в статье кода.