Обратился к нам в компанию клиент, очередных горе разработчиков. Не могу мол понять, почему то сайт не работает. Хостинг вроде оплатил, домен продлен, что не так с сайтом совсем не знает.

После более подробной беседы, выяснилось:

  • Аккаунт хостинга, на котором был расположен сайт, ранее был блокирован за рассылку спама.
  • По словам клиента проблема решилась, когда он обратился к предыдущим разработчикам, они восстановили доступ и все снова стало работать как раньше.
  • Какие именно манипуляции проводили разработчики он не знает, так как хостинг зарегистрирован не на него, а на какого то его друга, который и посоветовал ему этих ребят.
  • Сайт снова не работает, но связаться с кем либо из них, на данный момент, он не может.


Нам стало интересно, что же там такое происходит с сайтом, что он уже второй раз выходит из строя. Мы попросили клиента связаться со своим другом, на которого оформлен хостинг и узнать у него доступы к панели управления, а сами связались со службой технической поддержки хостинга, для уточнения причин неработоспособности сайта.

Для тех кто зашел прочитать непосредственно про взлом, можете смело жмакать сюда. Ну а для тех кому интересна вся история целиком, как все было обнаружено, читайте полностью. 

После ответа службы поддержки стало ясно, что доступ к панели управления заблокирован, как и сам аккаунт, за распространение спам писем и получить доступ к нему возможно только по предоставлению данных для входа и IP к которому будет привязан временный доступ.
Да, все верно, те же грабли. Разница в этот раз была лишь в том, что по словам друга, который согласился предоставить данные от хостинга, сайта на аккаунте больше нет и восстановить ничего не выйдет. Так ему сказали те самые разработчики, которые очень «эффективно» решили проблему в прошлый раз.

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

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

  1. Был подобран пароль к админке сайта.
  2. Через модуль установки плагинов, был вшит скрипт рассылки спам писем.
  3. Никаких профилактических работ ребята не предпринимали, а попросту решили восстановить сайт из бэкапа, при этом не трогая базу данных и не меняя пароля к ней и админке сайта.
  4. По прошествии какого то времени аккаунт снова был заблокирован, по причине того, что они не устранили скрипт.

 

Скриншот переписки

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

Мы создали новый запрос в техподдержку, с просьбой уточнить, в каких именно файлах был обнаружен вредоносный скрипт, для того, что бы иметь хоть какое то представление, что искать.

Как же производили взлом и рассылку

Получив ответ службы поддержки, мы нашли нужный файл и увидели там это:

Пройдясь по всем файлам сайта, было обнаружено такое же содержимое еще в 74 файлах шаблона. Проанализировав код, проверив все пути, мы поняли, что:

  1. После взлома админки сайта, по средствам установки плагина, был внедрен вредоносный скрипт
  2. Через переменную $_POST на адрес сайта посылался запрос содержащий исполнительный код, который выполнялся во всех файлах, в которых была данная строка, а в данном случае таких фалов было 74.
  3. После выполнения скрипта, с аккаунта производилась рассылка спам писем, адреса которых хранились во все той же базе данных сайта, которую предыдущие разработчики не удосужились проверить.
  4. Так же, в базе данных была обнаружена таблица не относящаяся к сайту, в которой хранился зашифрованный base64 код, который не только выполнял восстановление удаленных вредоносных строк во всех файлах, но и занимался более интересными вещами (об этом чуть ниже).
  5. Горе гении, которые якобы выполняли очистку в прошлый раз, видимо не захотели углубляться в проблему и выполнять тяжелую работу по очистке всех файлов вручную, дабы избежать повторного заражения. Либо же они имели непосредственное отношение к данному скрипту (так как очистка сайта от вирусов, по прайсу, указанному на их сайте, стоила не маленькую сумму).

Мы почистили все файлы, очистили базу данных, сменили все доступы от сайта и хостинга, а так же сообщили техподдержке о том, что проблема устранена. Аккаунт был разблокирован и сайт снова стал доступен.

О скрипте, найденном в базе данных взломанного сайта

Скрипт, который был зашифрован в кодировке base64 и хранился в базе данных в виде текста, не только выполнял функцию восстановления всех удаленных строк вредоносного кода, но и являлся скриптом брутфорса.

Основная функция которую он выполнял, заключалась в посыле POST и GET запросов, на адреса админок различных сайтов, с логинами и паролями, так же хранимыми в одной из таблиц базы данных. После успешно выполненной операции по подбору, он записывал правильную пару логин: пароль в еще одну таблицу, доступ к которой можно было получить обратившись с правильным запросом к одному их 74 зараженных файлов, прямо из окна браузера.

Такими манипуляциями злоумышленники не только ускоряли процесс сбора паролей, но и увеличивали базу сайтов, с которых велась спам рассылка и выполнялся подбор паролей к другим сайтам.

Такой цикл может продолжаться бесконечно. Если один из владельцев сайта находит вирус и удаляет его, то это небольшая потеря для злоумышленников, потому как в их распоряжении огромная база таких вот лазеек, которая увеличивается с каждым днем.

P.S. для тех кто желает видеть скрипт
Скриншоты и примеры вредоносного скрипта небыли выложены по причине того, что всегда найдутся личности, использующие пример кода как основу для своих детищ, а я не хочу являться причиной создания и распространения очередного вредоносного скрипта.

https://habrahabr.ru/

 

От news

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *