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

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


Перечислим основные положения. Если вы с ними не согласны, то лучше не тратьте ваше время и не читайте дальше.

Итак, основные положения:
  • вы увлекаетесь информационной безопасностью, администрированием 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 и т.д.

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


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

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

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 12

    0
    от этапа сканирования до попыток применения экспроитов


    лучше звучит эксплойтов. В целом, подход работает. Подтверждаю
      0
      спасибо, исправил
      +4
      Ожидал прочитать совершенно другое.
      Не увидел в статье ни уникального опыта по построению honeypot, ни работу с уже имеющимися открытыми реализациями.
      Думал, «О, автор предлагает анализировать», надеялся что про scapy что-нибудь будет. Но нет. Только общие фразы и лежащие на поверхности мысли. И облом с исходным кодом в самом конце.
      Так и не понял для чего эта статья и кому она адресована.
        0
        Чтобы охладить завышенные ожидания в заголовок вынесено — [доморощенный] и в начале статьи предупреждение.
        Отсутствие кода в статье также постарался аргументировать.
          0
          Цель статьи — предложить простой и короткий путь для начинающих (студентов), которым сразу хочется почувствовать себя исследователем, максимально сократить порог вхождения.
          +2
          Кстати, была у меня идея запилить github-репозиторий со страницами входа в админ-панели самых популярных CMS (на пример /wp-admin, /administrator и т.д.) с функционалом ведения журнала обращений со всеми данными которые можно выдернуть.
          Ожидал увидеть что-то похожее в заметке, но оказалось что тут раскрывается даже более интересная идея. Правда конкретики вообще никакой.
            0
            Без конкретики даже лучше! Иначе это как получить прохождение от игры
              0
              rhamdeew, сохранять элементы $_SERVER в базу (текстовый файл) — не уверен что это достойно размещения на github. Или Ваша идея была в чем-то другом?
              Какую конкретику Вы хотели бы увидеть?
                0
                Нет, я именно про визуальные копии форм входа в админ-панели популярных CMS. То есть боты наткнутся к примеру на /wp-admin и будут думать что тут есть уставновленный Wordpress. Пока будут пытаться брутить несуществующий сайт информация будет аккуратно складываться в БД.
                  0
                  Не обязательно создавать полноценные формы авторизации, боты, как правило, пытаются опознать наличие панели по характерным каталогам/файлам, после чего формируют GET/POST запросы с попытками авторизации.
                  Можно собрать в БД словарь, которым пользуются боты, но едвали здесь откроется что-то новое.
              0
              Процесс игры примерно понятен, а что считать ее окончанием? Попытку атаки? Ну так ее, как мне кажется, достаточно просто спровоцировать. Кто выиграет-то, в общем?
                0
                Правила каждый исследователь может определить сам.
                На мой взгляд, каждая конкретная игра состоит из следующих этапов: выделение бота (задачи, решаемой ботами), построение схемы атаки (раскрытие алгоритма, заложенного в бот), бонусный этап — обращение к разработчикам/антивирусным компаниям, если нашли эксплуатируемый баг или источник/образец зловреда.

              Only users with full accounts can post comments. Log in, please.