- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

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

берем домен

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

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

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

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

RewriteEngine On
RewriteRule .* index.php [L]    

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

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

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

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

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

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

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

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

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

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

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

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

Автор: nvv

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/83486

Ссылки в тексте:

[1] Что и зачем ищут на сайтах «боты тёмной стороны силы»: http://habrahabr.ru/post/250313/

[2] радиоигры в разведке: https://ru.wikipedia.org/wiki/Радиоигра (разведка)

[3] хостинг: https://www.reg.ru/?rlink=reflink-717

[4] Как на самом деле работает mod_rewrite. Пособие для продолжающих: http://habrahabr.ru/company/sprinthost/blog/129560/

[5] $_SERVER: https://php.net/manual/ru/reserved.variables.server.php

[6] Нестандартная оптимизация проектов на PHP: http://habrahabr.ru/post/250985/

[7] Источник: http://habrahabr.ru/post/250573/