常见webshell工具及特征分析

2024-05-29 14:36

本文主要是介绍常见webshell工具及特征分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

在工作中经常会遇到各种websehll,黑客通常要通过各种方式获取 webshell,从而获得企业网站的控制权,识别出webshell文件或通信流量可以有效地阻止黑客进一步的攻击行为,下面以常见的四款webshell进行分析,对工具连接流量有个基本认识。

 

Webshell简介

webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。使用方法简单,只需上传一个代码文件,通过网址访问,便可进行很多日常操作,极大地方便了使用者对网站和服务器的管理。正因如此,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的,也可以将其称做为一种网页后门

最普通的一句话木马:

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

<?php system($_REQUEST['cmd']);>

1647168572_622dcc3c8e5be2bdf77ed.png!small?1647168572799

中国菜刀

中国菜刀(Chopper)是一款经典的网站管理工具,具有文件管理、数据库管理、虚拟终端等功能。

它的流量特征十分明显,现如今的安全设备基本上都可以识别到菜刀的流量。现在的菜刀基本都是在安全教学中使用。

github项目地址:GitHub - raddyfiy/caidao-official-version: 中国菜刀官方版本,拒绝黑吃黑,来路清晰

由于菜刀官方网站已关闭,现存的可能存在后门最好在虚拟机运行,上面项目已经进行了md5对比没有问题。

1647168736_622dcce0ee65235dabe4e.png!small?1647168737325

菜刀webshell的静态特征

菜刀使用的webshell为一句话木马,特征十分明显

常见一句话(Eval):

PHP, ASP, ASP.NET 的网站都可以:

PHP:    <?php @eval($_POST['caidao']);?>

ASP:    <%eval request("caidao")%>

ASP.NET:    <%@ Page Language="Jscript"%><%eval(Request.Item["caidao"],"unsafe");%>

菜刀webshell的动态特征

请求包中:

ua头为百度爬虫

请求体中存在eavl,base64等特征字符

请求体中传递的payload为base64编码,并且存在固定的QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7J

请求体中执行结果响应为明文,格式为X@Y    结果   X@Y之中

1647169656_622dd0781bd3f5e0ae199.png!small?1647169656466

1647169701_622dd0a59303415942bb8.png!small?1647169701877

蚁剑

AntSword(蚁剑)是一个开放源代码,跨平台的网站管理工具,旨在满足渗透测试人员以及具有权限和/或授权的安全研究人员以及网站管理员的需求。

github项目地址: GitHub - AntSwordProject/antSword: 中国蚁剑是一款跨平台的开源网站管理工具。AntSword is a cross-platform website management toolkit.

1647169735_622dd0c79624d24331faf.png!small?1647169735843

蚁剑webshell静态特征

GitHub - AntSwordProject/AwesomeScript: AntSword Shell 脚本分享/示例蚁剑官方为我们提供了制作好的后门,官方的脚本均做了不同程度“变异”,蚁剑的核心代码是由菜刀修改而来的,所有普通的一句话木马也可以使用。

Php中使用assert,eval执行, asp 使用eval ,在jsp使用的是Java类加载(ClassLoader),同时会带有base64编码解码等字符特征

1647170192_622dd290d6a8ca1ba57bf.png!small?1647170193460

蚁剑webshell动态特征

默认编码连接时

这里我们直接使用菜刀的一句话webshell

每个请求体都存在@ini_set(“display_errors”, “0”);@set_time_limit(0)开头。并且存在base64等字符

响应包的结果返回格式为  随机数 结果  随机数

1647170363_622dd33b14182b1081659.png!small?1647170363388

使用base64编码器和解码器时

1647170543_622dd3efd9afd3e6d3ee7.png!small?1647170544145

蚁剑会随机生成一个参数传入base64编码后的代码,密码参数的值是通过POST获取随机参数的值然后进行base64解码后使用eval执行

响应包的结果返回格式为  随机数 编码后的结果  随机数

1647170560_622dd400c8203be11f45c.png!small?1647170561263

1647170574_622dd40e76d5fd70dd9c2.png!small?1647170574792

冰蝎

冰蝎是一款动态二进制加密网站管理客户端。

github地址:https://github.com/rebeyond/Behinder

1647170705_622dd49185e0ab8d4cfd1.png!small?1647170705765

冰蝎文件夹中,server 文件中存放了各种类型的木马文件

1647170725_622dd4a54fb0c5bfa44c6.png!small?1647170725592

冰蝎webshell木马静态特征

这里主要分析3.0版本的

采用采用预共享密钥,密钥格式为md5(“admin”)[0:16], 所以在各种语言的webshell中都会存在16位数的连接密码,默认变量为k。

在PHP中会判断是否开启openssl采用不同的加密算法,在代码中同样会存在eval或assert等字符特征

1647171068_622dd5fc62003abea147f.png!small?1647171068688

在aps中会在for循环进行一段异或处理

1647170766_622dd4ce52c0785e2eaa2.png!small?1647170766623

在jsp中则利用java的反射,所以会存在ClassLoader,getClass().getClassLoader()等字符特征

1647170932_622dd574b367b573c99bf.png!small?1647170933096

冰蝎2.0 webshell木马动态特征

在了解冰蝎3.0之前,先看看2.0是怎么交互等

2.0中采用协商密钥机制。第一阶段请求中返回包状态码为200,返回内容必定是16位的密钥

Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

1647171493_622dd7a52508b5654fbf4.png!small?1647171493436

建立连接后 所有请求 Cookie的格式都为: Cookie: PHPSESSID=; path=/;

1647171672_622dd858ad7a9cc4904db.png!small?1647171673147

冰蝎3.0 webshell木马动态特征

在3.0中改了,去除了动态密钥协商机制,采用预共享密钥,全程无明文交互,密钥格式为md5(“admin”)[0:16],但还是会存在一些特征

在使用命令执行功能时,请求包中content-length 为5740或5720(可能会根据Java版本而改变)

每一个请求头中存在Pragma: no-cache,Cache-Control: no-cache

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

1647171814_622dd8e64e59b47c2e210.png!small?1647171814762

哥斯拉

哥斯拉继菜刀、蚁剑、冰蝎之后具有更多优点的Webshell管理工具

github地址:https://github.com/BeichenDream/Godzilla

1647171870_622dd91e7df2a0e35e913.png!small?1647171870876

哥斯拉的webshell需要动态生成,可以根据需求选择各种不同的加密方式

1647171893_622dd935168bb389388b1.png!small?1647171893715

哥斯拉webshell木马静态特征

选择默认脚本编码生成的情况下,jsp会出现xc,pass字符和Java反射(ClassLoader,getClass().getClassLoader()),base64加解码等特征

1647171938_622dd962545b9fe2b3ffb.png!small?1647171938717

php,asp则为普通的一句话木马

1647171992_622dd9982fef522992b58.png!small?1647171992556

哥斯拉webshell动态特征

所有请求中Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

所有响应中Cache-Control: no-store, no-cache, must-revalidate,

以上两个只能作为弱特征参考

同时在所有请求中Cookie中后面都存在;特征

1647172209_622dda71557088a32cbf4.png!small?1647172209728

不足

本文中只是分析了在php环境中的,并没有搭建其他语言环境进行分析,在之后会对各个语言的动态特征进行分析,同时尝试更多的混淆方式。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

大厂面试题

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

  读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

这篇关于常见webshell工具及特征分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1013842

相关文章

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.