美好的一天!今天的问题很简单。
我们在共享服务器上有很多网站,有时他们会被恶意软件攻击,他们开始发送电子邮件,或者他们试图感染其他邻居网站。
花了一些时间来清理许多服务器上的文件后,我开始认为可能有一个看看php文件的脚本对我来说真的很有帮助。
为每个网站提供完整的防病毒功能有点过多"我喜欢的是我可以远程管理的东西,这将为我提供扫描网络服务器的一些线索。
所以我想到了一个简单的PHP脚本,它只扫描每个目录和每个文件以搜索可疑模式。我实际上使用这两个正则表达式:
/eval\((base64|eval|\$_|\$\$|\$[A-Za-z_0-9\{]*(\(|\{|\[))/i
/mail\(/i
我知道,第二个是非常幼稚的,但它可以完成这项工作,因为我想知道某个php文件是否有邮件调用。
我尝试使用token_get_all
,但我找到的唯一有用的令牌是T_EVAL
,所以我回到了正则表达式。
我的问题实际上是这两个正则表达式是:
我要问的是:
eval(gzinflate(base64_decode('...');
eval(gzuncompress(base64_decode('...');
eval(gzinflate(str_rot13(base64_decode('...');
我认为eval|base64|gzinflate|gzuncompress|gzinflate
应该是"首字母"要搜索的模式,但将正则表达式修改为:
/eval\((base64|eval|gzinflate|gzuncompress|gzinflate\$_|\$\$|\$[A-Za-z_0-9\{]*(\(|\{|\[))/i
没有给出我所尊重的结果。
嗯,当然,如果你有更好的想法,那将非常受欢迎。
注意
我理解这个问题非常广泛,但我希望对这个主题有所了解,因为在没有任何保护的情况下处理数百个网站是非常耗时的。 如果这不是发布此问题的正确位置,我会删除它,我不想玷污董事会。
另一个注意
这不是"解决方案"我只想要一个有问题的结构化工具,我可以在家里(或用CRON)轻松使用,这只是警告我一些奇怪的东西,确实会有大量的误报。
答案 0 :(得分:2)
我首先想到的是专业的病毒扫描和恶意软件清除软件。如果您想尝试自己尝试,可以考虑创建PHP脚本的md5()摘要数据库。扫描目录,制作摘要,将它们存储在数据库中。在重新扫描时,比较摘要。如果有任何新的摘要(出现新的PHP文件)或丢失的摘要(PHP文件消失)或更改的摘要(PHP文件被修改),它会让你快速提醒某些东西是不同的,你可以调查一下变化出乎意料。
答案 1 :(得分:0)
一旦您的服务器遭到入侵,就无法清除它。
检测到感染后,唯一可行的安全方法是构建新服务器并将数据导入其中(检查这些数据后)
如果服务器受到感染,你就不能再相信它了,因为他可以骗你任何事情,比如文件的内容。
我知道这听起来很痛苦,但没有希望从感染中完全康复,并确保你已从中恢复过来。