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.