Обратился к нам в компанию клиент, очередных горе разработчиков. Не могу мол понять, почему то сайт не работает. Хостинг вроде оплатил, домен продлен, что не так с сайтом совсем не знает.
После более подробной беседы, выяснилось:
- Аккаунт хостинга, на котором был расположен сайт, ранее был блокирован за рассылку спама.
- По словам клиента проблема решилась, когда он обратился к предыдущим разработчикам, они восстановили доступ и все снова стало работать как раньше.
- Какие именно манипуляции проводили разработчики он не знает, так как хостинг зарегистрирован не на него, а на какого то его друга, который и посоветовал ему этих ребят.
- Сайт снова не работает, но связаться с кем либо из них, на данный момент, он не может.
Нам стало интересно, что же там такое происходит с сайтом, что он уже второй раз выходит из строя. Мы попросили клиента связаться со своим другом, на которого оформлен хостинг и узнать у него доступы к панели управления, а сами связались со службой технической поддержки хостинга, для уточнения причин неработоспособности сайта.
Для тех кто зашел прочитать непосредственно про взлом, можете смело жмакать сюда. Ну а для тех кому интересна вся история целиком, как все было обнаружено, читайте полностью.
После ответа службы поддержки стало ясно, что доступ к панели управления заблокирован, как и сам аккаунт, за распространение спам писем и получить доступ к нему возможно только по предоставлению данных для входа и IP к которому будет привязан временный доступ.
Да, все верно, те же грабли. Разница в этот раз была лишь в том, что по словам друга, который согласился предоставить данные от хостинга, сайта на аккаунте больше нет и восстановить ничего не выйдет. Так ему сказали те самые разработчики, которые очень «эффективно» решили проблему в прошлый раз.
Немного порассуждав, мы решили попытать счастья и постараться восстановить сайт из бэкапов, которые должны были храниться у хостинг провайдера. Предоставили всю необходимую информацию и IP адрес, с которого будет производиться вход. Зашли в аккаунт и первым делом решили посмотреть историю запросов к службе поддержки, по предыдущему случаю блокировки.
Переписка оказалась небольшой и нам удалось выяснить, что:
- Был подобран пароль к админке сайта.
- Через модуль установки плагинов, был вшит скрипт рассылки спам писем.
- Никаких профилактических работ ребята не предпринимали, а попросту решили восстановить сайт из бэкапа, при этом не трогая базу данных и не меняя пароля к ней и админке сайта.
- По прошествии какого то времени аккаунт снова был заблокирован, по причине того, что они не устранили скрипт.
Проверив фалы в корневом каталоге, мы обнаружили, что сайт существует и никто его не удалял, как нам сообщил ранее друг клиента. Более того, последний вход в аккаунт был произведен как раз после предыдущего инцидента взлома. Больше в аккаунт никто не заходил.
Мы создали новый запрос в техподдержку, с просьбой уточнить, в каких именно файлах был обнаружен вредоносный скрипт, для того, что бы иметь хоть какое то представление, что искать.
Как же производили взлом и рассылку
Получив ответ службы поддержки, мы нашли нужный файл и увидели там это:
Пройдясь по всем файлам сайта, было обнаружено такое же содержимое еще в 74 файлах шаблона. Проанализировав код, проверив все пути, мы поняли, что:
- После взлома админки сайта, по средствам установки плагина, был внедрен вредоносный скрипт
- Через переменную $_POST на адрес сайта посылался запрос содержащий исполнительный код, который выполнялся во всех файлах, в которых была данная строка, а в данном случае таких фалов было 74.
- После выполнения скрипта, с аккаунта производилась рассылка спам писем, адреса которых хранились во все той же базе данных сайта, которую предыдущие разработчики не удосужились проверить.
- Так же, в базе данных была обнаружена таблица не относящаяся к сайту, в которой хранился зашифрованный base64 код, который не только выполнял восстановление удаленных вредоносных строк во всех файлах, но и занимался более интересными вещами (об этом чуть ниже).
- Горе гении, которые якобы выполняли очистку в прошлый раз, видимо не захотели углубляться в проблему и выполнять тяжелую работу по очистке всех файлов вручную, дабы избежать повторного заражения. Либо же они имели непосредственное отношение к данному скрипту (так как очистка сайта от вирусов, по прайсу, указанному на их сайте, стоила не маленькую сумму).
Мы почистили все файлы, очистили базу данных, сменили все доступы от сайта и хостинга, а так же сообщили техподдержке о том, что проблема устранена. Аккаунт был разблокирован и сайт снова стал доступен.
О скрипте, найденном в базе данных взломанного сайта
Скрипт, который был зашифрован в кодировке base64 и хранился в базе данных в виде текста, не только выполнял функцию восстановления всех удаленных строк вредоносного кода, но и являлся скриптом брутфорса.
Основная функция которую он выполнял, заключалась в посыле POST и GET запросов, на адреса админок различных сайтов, с логинами и паролями, так же хранимыми в одной из таблиц базы данных. После успешно выполненной операции по подбору, он записывал правильную пару логин: пароль в еще одну таблицу, доступ к которой можно было получить обратившись с правильным запросом к одному их 74 зараженных файлов, прямо из окна браузера.
Такими манипуляциями злоумышленники не только ускоряли процесс сбора паролей, но и увеличивали базу сайтов, с которых велась спам рассылка и выполнялся подбор паролей к другим сайтам.
Такой цикл может продолжаться бесконечно. Если один из владельцев сайта находит вирус и удаляет его, то это небольшая потеря для злоумышленников, потому как в их распоряжении огромная база таких вот лазеек, которая увеличивается с каждым днем.
P.S. для тех кто желает видеть скрипт
Скриншоты и примеры вредоносного скрипта небыли выложены по причине того, что всегда найдутся личности, использующие пример кода как основу для своих детищ, а я не хочу являться причиной создания и распространения очередного вредоносного скрипта.
https://habrahabr.ru/