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

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

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

анализируем поступающие запросы накапливаем статистику В скрипте, на который заворачиваем запросы, мы реализуем следующий функционал: журналирование некоторых данных из $_SERVER для накопления статистики; возможность поиска шаблонов (паттернов) в поступающих из $_SERVER данных; эффективный механизм подключения обработчиков для некоторых шаблонов (про эффективность можно посмотреть в Нестандартная оптимизация проектов на PHP); (на будущее) упрощенный и не требовательный к ресурсам механизм сессий на стороне сервера. включаемся в игру В вот, наконец, мы подошли к главному. Что же будет представлять из себя игра? Проанализировав статистику, вы выбираете бота, которого хотите исследовать. Идентифицировать бота можно попытаться по разным признакам (диапазоны IP, время сканирования, User-Agent, характерные запросы URL и т.д.)После этого Вы маскируетесь под ожидания бота и, выдавая ему ту информацию и файлы, которые он ожидает, полностью описываете его поведение от этапа сканирования до попыток применения экспроитов, нестандартных вызовов, скачивания специфических файлов и т.д. Например, бот ожидает некоторый css файл — получите, после этого пытается обратиться к специфическому файлу — ищете в сети информацию о нем и выдаете, передает параметры — пытаемся подделать ответ и т.д. Здесь как раз пригодится легковесная реализация сессий.Конечно, между первым обращением и построением всей цепочки ответов может пройти несколько итераций с элементами угадывания и ручного поиска информации. Но это и есть борьба умов (Вы разработчик алгоритма бота), настоящие шахматы! небольшая подсказка Чтобы ботам было сложнее выявить Ваш анализ, целесообразно (в разумных пределах) использовать элемент случайности при выдаче результатов. А именно, ваш алгоритм ещё не знает «правильного ответа» для бота или запрос ранее не встречался — выдайте с вероятностью ХХ% сообщение имитирующее ошибку сервера или пустой файл, пробуют SQL-injection — выдайте правдоподобное сообщение об ошибке СУБД или PHP и т.д.

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

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

© Habrahabr.ru