Webshell 简介

概念

Webshell 简单来说是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,也可以将其称作为一种网页。常见的Weshell有大马、小马、一句话木马等,而连接Webshell的常用管理工具则有菜刀、冰蝎、蚁剑、哥斯拉等。

危害

通过管理工具连接上Webshell后就可以随心所欲的操作受害者主机,包括不局限于执行系统命令、探测内网、读取敏感文件、反弹shell、添加用户、清理痕迹、横向移动等操作,也有小部分人将代码修改后当作后门程序使用,以达到控制网站服务器的目的,也可以将其称做为一种网页后门。

特点

  • Web木马可大可小
  • 无法有效隐藏
  • 具有明显特征值
  • Web木马的特点:必须为可执行的网页格式

常用工具

冰蝎(Behinder 3.0)、蚁剑(AntSword)、哥斯拉(Godzilla Shell管理工具)

一、冰蝎(Behinder)

1.1 简介

“冰蝎”是一个基于Java开发的动态二进制加密通信流量的新型Webshell客户端,所以可以跨平台使用,目前最新版本为v3.0 bate,兼容性较之前的版本有较大提升。由于其基于流量加密的的特性,冰蝎逐渐成为了红队成员在攻防演练期间经常使用的工具。
冰蝎主要功能有:基本信息、命令执行、虚拟终端、文件管理、Socks代理、反弹shell、数据库管理、自定义代码等,功能非常强大。
notion image

1.2 加密原理

冰蝎其最大特点就是对交互流量进行对称加密,且加密秘钥是由随机数函数动态生成,因此该客户端的流量几乎无法检测。
"冰蝎"在服务端支持open_ssl时,使用AES加密算法,密钥长度16位,也可称为AES-16。此在软件及硬件(英特尔处理器的AES指令集包含六条指令)上都能快速地加解密,内存需求低,非常适合流量加密。
加密流程大致如下图所示:
notion image

1.3 特征

1.3.1 冰蝎3.0 webshell 木马静态特征

采用采用预共享密钥,密钥格式为md5(“admin”)[0:16], 所以在各种语言的webshell中都会存在16位数的连接密码,默认变量为k。
在PHP中会判断是否开启openssl采用不同的加密算法,在代码中同样会存在eval或assert等字符特征;在aps中会在for循环进行一段异或处理;在jsp中则利用java的反射,所以会存在ClassLoader,getClass().getClassLoader()等字符特征

1.3.2 冰蝎2.0 webshell 木马动态特征

  • 2.0中采用协商密钥机制。第一阶段请求中返回包状态码为200,返回内容必定是16位的密钥Accept: text/html, image/gif, image/jpeg, *; q=.2, /; q=.2
  • 建立连接后 所有请求 Cookie的格式都为: Cookie: PHPSESSID=; path=/

1.3.3 冰蝎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

1.4 特点

流量加密,难以被检测;
webshell免杀性好;
加密方式是AES加密。

二、蚁剑(AntSword)

2.1 简介

中国蚁剑是一款开源的跨平台网站管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。通俗的讲,中国蚁剑是一款比菜刀还牛的Shell控制端软件。
notion image

2.2 特征

2.2.1 蚁剑webshell静态特征

https://github.com/AntSwordProject/AwesomeScript蚁剑官方为我们提供了制作好的后门,官方的脚本均做了不同程度“变异”,蚁剑的核心代码是由菜刀修改而来的,所有普通的一句话木马也可以使用。
Php中使用assert,eval执行, asp 使用eval ,在jsp使用的是Java类加载(ClassLoader),同时会带有base64编码解码等字符特征

2.2.2 蚁剑webshell动态特征

  1. 默认编码连接时
这里我们直接使用菜刀的一句话webshell
  • 每个请求体都存在@ini_set(“display_errors”, “0”);@set_time_limit(0)开头。并且存在base64等字符
  • 响应包的结果返回格式为  随机数 结果  随机数
  1. 使用base64编码器和解码器时
蚁剑会随机生成一个参数传入base64编码后的代码,密码参数的值是通过POST获取随机参数的值然后进行base64解码后使用eval执行
响应包的结果返回格式为 随机数 编码后的结果 随机数

2.3 特点

  • 蚁剑所有脚本的源代码均来自菜刀,流量特征和菜刀差不多,因此提供了编码器和解码器来绕waf,使用nodejs编写,支持自定义:
    • 编码器:对发送流量进行编码,服务端解码。
    • 解码器:服务端对返回到客户端的流量编码,由客户端解码器还原流量接收。
  • 这样蚁剑可以通过编码、解码绕过部分的waf,相比菜刀更具有一定隐蔽性
  • 中国蚁剑推崇模块化的开发思想,遵循开源,就要开得漂亮的原则,致力于为不同层次的人群提供最简单易懂、方便直接的代码展示及其修改说明,努力让大家可以一起为这个项目贡献出力所能及的点滴。

三、哥斯拉(Godzilla)

3.1 简介

Gozilla 3.0及以上版本已经支持最低jdk 1.0的环境,这里很多偏旧的其他文章还在介绍必须要jdk1.8。
各大厂商的waf不断,在静态查杀、流量通信等方面对webshell进行拦截,众红队急需一款优秀的权限管理工具,冰蝎3.0的发布可能缓解了流量加密的困境,但是冰蝎3.0的bug众多,很多朋友甚至连不上冰蝎的shell,于是团队的BeiChenDream师傅开发了这款“哥斯拉”工具。
notion image

3.1.1 生成木马

管理”->“添加”生成所需的 webshell
  • 哥斯拉支持 jsp、php、aspx 等多种载荷
  • java 和 c# 的载荷原生实现 AES 加密,PHP 使用亦或加密
  • 生成时需要记住自己的生成配置用以连接时使用
  • 点击生成后保存
  • 上传文件
  • 目标 → 基础配置 → 将框选的内容填写修改有效载荷加密器点击测试连接连接成功后点击添加

3.2 特征

3.2.1 哥斯拉webshell木马静态特征

选择默认脚本编码生成的情况下,jsp会出现xc,pass字符和Java反射(ClassLoader,getClass().getClassLoader()),base64加解码等特征;php,asp则为普通的一句话木马

3.2.2 哥斯拉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中后面都存在;特征

3.3 特点

  • 哥斯拉全部类型的shell均过市面所有静态查杀
  • 静态免杀这个问题,要客观,因为工具放出来之后可以免杀一段时间,有可能后来就不行了,但是改改代码还能继续过狗绕waf,所以重点还是要看流量加密和一些自带的插件。
  • 哥斯拉流量加密能过市面全部流量waf
  • 自带的插件是冰蝎、蚁剑不能比拟的
  • 哥斯拉支持jsp、php、aspx等多种载荷,java和c#的载荷原生实现AES加密,PHP使用异或加密

四、总结

以上三种就是目前安全人员在日常攻防测试中比较常用的webshell管理工具。
安全攻防的本质在于技术与技术之间的对抗,人与人之间的对抗,随着攻防技术日新月异变化,从以前的菜刀到现在的冰蝎、蚁剑、哥斯拉等webshell管理工具,现在也需要经过师傅大佬们的各种自定义魔改到一定程度之后才能基本上做到绕过waf进行无特征流量通信了。

参考文章

💡
本文章仅提供学习使用,有任何问题,欢迎您在底部评论区留言,一起交流~
 
文件上传漏洞Cookie和Session