595 визитов за 19 дней: что ищут боты на сайте, который «никому не нужен»

595 визитов за 19 дней: что ищут боты на сайте, который «никому не нужен»

Есть фраза, которую я слышу от каждого второго владельца бизнеса, когда речь заходит про безопасность сайта: «Да кому я нужен». Маленькая компания, три страницы, десяток заказов в месяц. Кому интересно её ломать? Логично же звучит. Я и сам так рассуждал ровно до того дня, пока не решил проверить эту удобную мысль простым и дешёвым экспериментом на собственном рабочем сайте.

А потом мы подбросили своему корпоративному сайту приманку и девятнадцать дней просто смотрели, кто в неё придёт.

Что за ловушка

Идея простая до неприличия. Разбрасываешь по сайту пару десятков дверей, которых там быть не должно: страница входа в WordPress, файл с паролями, дамп базы в корне. Ни одна никуда не ведёт, точнее, ведёт прямиком в наш лог: кто пришёл, когда, каким методом и по какому адресу. Живому человеку там делать нечего, смотреть нечего. Значит, всё, что прилетает на эти двери, это не живые посетители, а автоматика, и её можно посчитать поштучно.

Ловушка стоит сбоку и ядро сайта не трогает: запрос перехватывается раньше, чем его увидит движок, записывается и получает обычную страницу «не найдено». Для бота всё буднично: постучался, получил от ворот поворот, поехал дальше. А у нас осталась точная запись.

За 19 дней прилетело 595 обращений с 97 разных адресов. В пересчёте на месяц под девятьсот. В среднем тридцать в сутки. В пик доходило до ста двадцати. Поток не иссякал ни на сутки: ни ночью, ни в выходные, ни в праздники.

За чем именно приходили

Вот вся статистика, разложенная по целям.

  • Файлы бэкапов (.sql, .zip, /backup/): 195 обращений, 33%
  • WordPress (wp-login, wp-admin): 184, 31%
  • Конфиги и секреты (.env, .git, .aws, .ssh): 86, 14%
  • Панели БД (phpMyAdmin, Adminer): 61, 10%
  • Прочее: 50, 8%
  • Срабатывания honeytokens (наживка): 17, 3%
  • Попытки RCE (phpunit): 2, 0,3%

Плотнее всего долбились в phpMyAdmin. Шестьдесят один заход в одну панель. Дальше дежурный набор: файл `.env` с паролями, вход в WordPress, папка `/backup/`. Мелькнул даже `архив.sql`: кто-то не поленился научить своих ботов русским именам файлов. Примета рунета.

Почему «кому я нужен» это ловушка мышления

Вас никто не выбирал. Ни один человек не сидел и не думал: «а взломаю-ка я сайт вон той компании». Всё скучнее и страшнее: по сети едет конвейер сканеров: адрес за адресом, подряд, и на каждом сайте дёргает одни и те же ручки. Вы не цель. Вы просто следующая строка в его бесконечном списке адресов.

Поэтому отговорка не работает вообще. Боту всё равно, кто вы, чем торгуете и сколько у вас посетителей. Ему нужны не вы, ему нужна незакрытая дверь. Одна на весь сайт. И если она есть, размер бизнеса не спасёт, а наоборот: у маленьких как раз чаще забытый дамп в корне и админка с паролем по умолчанию.

Находка 1. Главная добыча это забытый бэкап

Треть всех визитов, 195 из 595, это охота за резервными копиями. Логика скрипта холодная: один дамп базы, забытый в корне сайта, отдаёт всё разом — структуру, логины, хеши паролей, а нередко и данные клиентов. Взламывать ничего не нужно, достаточно скачать по прямой ссылке.

Незащищённый дамп в открытой папке это не риск, это уже утечка. Просто вы о ней пока не знаете. И если в дампе персональные данные, это инцидент по 152-ФЗ: обязанность уведомить Роскомнадзор и ответственность по статье 13.11 КоАП, где для юрлица счёт идёт на миллионы, а при повторе штраф становится оборотным.

Находка 2. Ищут не пароли, а ключи

86 обращений пришлись на секреты. Бот не подбирает пароль, он ищет ключ, который вы сами случайно выложили наружу. Чаще всего метили в файл `.env`: там обычно и пароль к базе, и токены сервисов. Реже, но метко пробовали приватный SSH-ключ.

Разница принципиальная. Пароль надо угадать, а ключ просто поднимают с земли. Утёкший SSH-ключ это не «дырка в сайте», это вход на сервер целиком. Строка подключения из `.env` даёт доступ к базе напрямую, и на дешёвом хостинге она нередко открыта наружу. Токен от платёжки или рассылки: операции и письма от вашего имени.

Находка 3. WordPress ломают, даже когда его нет

Почти треть визитов, 184 штуки, ушла на WordPress: вход и админку. Смешное: WordPress у нас нет и никогда не было. Боту неинтересно, какой у вас движок, он бьёт веером по дырам всех популярных CMS сразу, вдруг где-то откликнется. Сюда же 61 стук в панели управления базой.

Веер бота ничего не стоит: он перебирает тысячи сайтов в час, ему хватит одного попадания. Забытая тестовая CMS, оставленная после переноса панель с паролем по умолчанию, и это прямой вход в базу в обход сайта и всей защиты. Снаружи при этом всё работает как ни в чём не бывало.

Находка 4. Семнадцать срабатываний наживки

Семнадцать раз боты наступили на honeytokens, то есть фальшивые адреса, что спрятаны там, где их найдёт только тот, кто целенаправленно роется в сайте. Ногами туда не заходят. Поэтому каждое срабатывание это не шум, а адресный сигнал: прямо сейчас кто-то вас ковыряет.

Это одно из немногих окон, когда взлом ещё можно предотвратить, пока разведка не превратилась в проникновение. Проспали сигнал — узнаете об атаке из её последствий.

Чего я теперь боюсь по-настоящему

Пока боты стучат в закрытые двери, это фон, белый шум интернета. Страшно становится в ту секунду, когда одна дверь оказалась открыта:

  • Дефейс. На главной вместо вашего оффера чужая страница. Клиент видит взломанный сайт и уходит.
  • Шифровальщик. Нашли ключ или доступ к базе, зашифровали всё и просят выкуп. Нет чистого бэкапа, и бизнес встал целиком.
  • Скрытый майнер. Сервер тихо работает на чужого хозяина: сайт тормозит, хостинг блокирует аккаунт за абузу.
  • Кража клиентской базы. Тот самый дамп уезжает целиком. Дальше штрафы по 152-ФЗ и клиенты, которые узнали, что их слили.
  • Бан в поиске. Заражённый сайт метят плашкой «опасно», трафик обваливается за сутки, а снятие метки тянется неделями.
  • Спам с вашего домена. Через взломанный сайт рассылают фишинг от вашего имени, домен улетает в чёрные списки, и обычные письма клиентам перестают доходить.

Самое неприятное: узнаёшь об этом обычно не из системы мониторинга, а из требования выкупа или звонка злого клиента. Когда чинить уже долго и дорого.

Короткий вывод

Я не пытаюсь напугать до паралича. Сканирование не убрать, это фон, он идёт на любой сайт, и это нормально. Ненормально оставлять для него открытую дверь.

Уберите дампы из веб-доступа, закройте служебные файлы (`.env`, `.git`, `.ssh`), снесите забытые панели и тестовые CMS, загляните хоть раз в логи. Это не про дорогие средства защиты, это про элементарную гигиену.

А «да кому я нужен» я с тех пор не говорю. Проверено ловушкой: нужен всем. Точнее, не вы, а ваша незакрытая дверь.

Разборы законов и такие эксперименты на языке бизнеса веду в блоге vsenichev.ru и в телеграм-канале @brighside_ib.

2