帮助需要使用awk来捕获恶意软件病毒活动

时间:2011-09-06 04:23:50

标签: linux editor sed awk gawk

我遇到了服务器问题,因为有时恶意软件会在文件的末尾或开头添加代码。我已经根据我的知识修复了安全漏洞。我的托管服务提供商已经告知现在安全性已经足够,但我已经变得偏执于我网站上的病毒/恶意软件活动。我有一个计划,但我不熟悉Linux编辑器,如sed或awk或gawk,所以需要你的帮助。我可以使用我的PHP知识来做到这一点,但这将是非常耗费资源的。

由于恶意软件/病毒在文件的开头或结尾添加代码(以便网站不显示任何错误),您能告诉我如何编写一个递归查看所有.php文件的命令(我将使用帮助在父级和所有子目录中对其他类型的文件进行更改,并在文件的开头和结尾添加特定标记,例如XXXXXX_START和YYYYYY_END。

然后我需要一个脚本来读取所有.php文件,并检查代码的第一行是否为XXXXX_START,最后一行是否为YYYYYYY_END,如果发现任何文件不同,则创建一个报告。

如果发现任何差异,我将设置一个cron来检查所有文件并通过电子邮件将报告发送给我。

我知道这不是100%万无一失,因为病毒可能会在注释行之后添加数据,但这是我能想到的最佳选择。


我已尝试以下命令在开始时添加数据 -

sed -i -r  '1i add here' *.txt

但这不是递归的,它只向父目录文件添加行。

然后我发现了 - BEGIN和END是特殊图案。它们不用于匹配输入记录。相反,它们用于向awk脚本提供启动或清理信息。在读取第一个输入记录之前,执行一次BEGIN规则。读取完所有输入后,执行一次END规则。例如:

awk 'BEGIN { print "Analysis of `foo'" }
     /foo/ { ++foobar }
     END   { print "`foo' appears " foobar " times." }' BBS-list

但不幸的是,我无法破译任何东西。

对上述细节的任何帮助都非常感谢。欢迎任何其他建议。

问候,

尼丁

3 个答案:

答案 0 :(得分:1)

使用版本控制和/或备份;如果发生可疑活动,请删除实时站点并从备份或版本控制源重新安装。

答案 1 :(得分:1)

您可以使用以下命令修改文件(还会创建名为.bak的备份文件):

find . -name "*.php" | xargs sed -i.bak '1iSTART_XXXX
$aEND_YYYY'

您可以使用以下shell脚本来检查文件:

for f in `find . -name "*.php" -print`
do
    START_LINE=`head -1 $f`
    END_LINE=`tail -1 $f`

    if [[ $START_LINE != "START_XXXX" ]]
    then
        echo "$f: Mismatched header!"
    fi

    if [[ $END_LINE != "END_YYYY" ]]
    then
        echo "$f: Mismatched footer!"
    fi
done

答案 2 :(得分:0)

$ find . -type f | grep "txt$" | xargs sed -i -r  '1i add here'

将该命令应用于当前目录中或下的所有文件。你可以将grep逻辑折叠成find,但我喜欢简单的咒语。