Все мои сайты сидят под jAntivirus. Ежедневно происходят проверки всех сайтов на предмет новых внешних ссылок.
И вот сегодня приехал отчет о том что на одном из сайтов обнаружена новая внешняя сылка на сайт www.habitale.ru
Что за ерунда — подумал я.. вроде там Говноссылок не продаю. Пошел проверил говнобиржи и точно, не продаю. А значит это четкий сигнал к проверке.
В шаблоне WordPress пусто. WordPress обновил 5 дней назад до 4.1. Перед этим был бэкап.
Пошел и снял лог с хостера в логе увидел:
46.4.90.199 - - [04/Jan/2015:17:19:21 +0300] "POST /wp-admin/maned_UHJ.php HTTP/1.0" 200 56291 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
46.4.90.199 - - [04/Jan/2015:17:19:41 +0300] "POST /wp-admin/maned_UHJ.php HTTP/1.0" 200 10371 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
46.4.90.199 - - [04/Jan/2015:17:19:50 +0300] "POST /wp-admin/maned_UHJ.php HTTP/1.0" 200 53200 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
ЧЕЗА ???
подумал снова я.
Посмотрел файлик и стало ясно, сайт взломан !
Все обфусцировано:
...
$XV7Wrn = $Imagnce($imagies[11]);
$owning = $imagies[2]($ilmaned, $unformes47);
while ($Returncing != $Imagnce($imagies[5]))
{
if ($imagies[2]($Returncing, 2) != $Imagnce($imagies[9]))
$XV7Wrn = $imagies[2]($imagies[14]($XV7Wrn, $owning), $unformes47);
$owning = $imagies[2]($imagies[14]($owning, $owning), $unformes47);
$Returncing = $imagies[8]($Returncing, 2);
}
return $XV7Wrn;
...
Рабирать код — долго и тупо, ясно что итак меня уже поимели, а куда и как — уже не узнать, ибо POST данные в логах не лежат. А по логу четко видно что меня крупно поимели и выкачали пол-интернета у меня. =)
Поискав еще я сел..
Все сайты были заражены..В случайных местах, случайные названия, разные размеры одного и того же бэкдора около 10кб. Хотя нет, я нашел еще вторую разновидность около 30кб.
Стало ясно что мне заливают что попало и запускают куда попало всякую шмаль, и осмелели настолько что стали проставлять ссылки.
Не убрав ссылку яначал вычищать хостинг сделал еще один бэкап. Но руками убрать это дело крайне утомительно да и смысла нет, в любой момент приедут снова.
Удалив самое явное, я закрыл папки wp-admin на всех блогах от всех IP, ибо эта зараза сидела именно в wp-admin у WordPress. Но бэкдор валялся не только в wp-admin, он валялся в папках с картинками, в пустых папках и других местах, так что все это опять же фуфло.
А как же грузиться ссылка в WordPress ?
Поменяв шаблон ничего не изменилось, начал с index.php и нашел заразу в той же папке wp-admin:
@include_once(‘..wp-admin/Ircalle.php’);
Вот уроды. Это 40кб какого-то дерьма, которое даже не зашифровано и вызывается при каждом запуске.
Но ссылка не исчезла, поискав /Ircalle.php на всем блоге.. нашел 3 вызова:
wp-settings.php
wp-blog-header.php
wp-includes\functions.php
Гады.. переименовав файл /Ircalle.php ссылка пропадает. Удалив вызовы из трех файлов — ссылка пропала.
Но хостинг еще не вылечен. Сигнатуры четкой нет и профилактические меры не разработаны, но уже намечены.
Раз в месяц придется сравнивать дампы хостингов на предмет подозрений, а сам jAntivirus я давно хочу переписать на Perl что и приходит пора делать.
Вот такие пироги.