WebShell流量特征检测_哥斯拉篇

90后用菜刀,95后用蚁剑,00后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对后三款经典的webshell管理工具进行流量分析和检测。

什么是一句话木马?

1、定义

顾名思义就是执行恶意指令的木马,通过技术手段上传到指定服务器并可以正常访问,将我们需要服务器执行的命令上传并执行

2、特点

短小精悍,功能强大,隐蔽性非常好

3、举例

php一句话木马用php语言编写的,运行在php环境中的php文件,例:<?php @eval($_POST['pass']);?>

4、原理

以最为常见的php一句话木马为例,"<?php ?>"为php固定规范写法,"@"在php中含义为后面如果执行错误不会报错,"eval()"函数表示括号里的语句全做代码执行,"$_POST['pass']"表示从页面中以post方式获取变量pass的值

一、哥斯拉(Godzilla v3.0)

①全部类型的shell能绕过市面大部分的静态查杀
②流量加密能绕过过市面绝大部分的流量Waf
③Godzilla自带的插件是冰蝎、蚁剑不能比拟的

1、主要功能

它能实现的功能除了传统的命令执行、文件管理、数据库管理之外,根据shell类型的不同还包括了:
(1)MSF联动
(2)绕过OpenBasedir
(3)ZIP压缩 ZIP解压
(4)代码执行
(5)绕过 DisableFunctions
(6)Mimikatz
(7)读取服务器 FileZilla Navicat Sqlyog Winscp XMangager 的配置信息以及密码
(8)虚拟终端 可以用netcat连接
(9)Windows权限提升 (2012-2019烂土豆)
(10)读取服务器 谷歌 IE 火狐 浏览器保存的账号密码
(11)Windows权限提升烂土豆的C#版本 甜土豆
(12)支持 哥斯拉 冰蝎 菜刀 ReGeorg 的内存shell 并且支持卸载
(13)屏幕截图
(14)Servlet管理 Servlet卸载
(15)内存加载Jar 将Jar加载到 SystemClassLoader

2、基础配置

首先从使用最多的PHP_XOR_BASE64类型的加密shell说起,所用的shell主要配置如下:
①URL:http://172.16.159.129/godzilla_shell.php
②密码:pass
③密钥:key
④有效载荷:PhpDynamicPayload
⑤加密器:PHP_XOR_BASE64
⑥哥斯拉的Shell配置包括基本配置和请求配置,其中基本配置主要设置shell地址、密码、密钥、加密器等信息

这里要注意密码和密钥的不同:
①密码:和蚁剑、菜刀一样,密码就是POST请求中的参数名称,本例中哥斯拉提交的每个请求都是pass=xxxxxxxx这种形式
②密钥:用于对请求数据进行加密,不过加密过程中并非直接使用密钥明文,而是计算密钥的md5值,然后取其16位用于加密过程
③哥斯拉shell的请求配置主要用于自定义HTTP请求头,以及在最终的请求数据左右再追加一些扰乱数据,进一步降低流量的特征

3、PHP_XOR_BASE64加密器

哥斯拉内置了3种Payload以及6种加密器,6种支持脚本后缀,20个内置插件,以下主要以PHP_XOR_BASE64为例进行分析。

(1)加密原理

XOR运算

在逻辑运算之中,除了 AND和 OR,还有一种 XOR运算,中文称为"异或运算"。

它的定义是:两个值相同时,返回false,否则返回true。也就是说,XOR可以用来判断两个值是否不同。

JavaScript

语言的二进制运算,有一个专门的 XOR 运算符,写作^。

上面代码中,如果两个二进制位相同,就返回0,表示false;否则返回1,表示true。

XOR加密

XOR运算有一个很奇妙的特点:如果对一个值连续做两次 XOR,会返回这个值本身。

①上面代码中,原始信息是message,密钥是key,第一次 XOR会得到加密文本cipherText。对方拿到以后,再用key做一次XOR 运算,就会还原得到message。

②如果每次的key都是随机的,那么产生的CipherText具有所有可能的值,而且是均匀分布,无法从CipherText看出message的任何特征。它具有最大的"信息熵",这被称为XOR 的"完美保密性"(perfect secrecy)。

③XOR 的这个特点,使得它可以被用于信息的加密。

(2)客户端加密模块分析

哥斯拉的源码是通过反编译Godzilla.jar得到的,作者并未做代码混淆。

从代码中可以分析出,发送的payload内容先经过XOR加密后,再将密文进行base64编码,最后进行URL编码。

XOR加密的密钥来自用户提供的密钥经过MD5的32位摘要后,取前16位的值。

(3)Shell服务器端代码分析

PHP_XOR_BASE64类型的加密shell的服务器端代码如下,其中定义了encode函数,用于加密或解密请求数据。由于是通过按位异或实现的加密,所以encode函数即可用于加密,同时也可用于解密。

整个shell的基本执行流程是:服务器接收到哥斯拉发送的第一个请求后,由于此时尚未建立session,所以将POST请求数据解密后(得到的内容为shell操作中所需要用到的相关php函数定义代码)存入session中,后续哥斯拉只会提交相关操作对应的函数名称(如获取目录中的文件列表对应的函数为getFile)和相关参数,这样哥斯拉的相关操作就不需要发送大量的请求数据。

(4)数据包分析

这里从Shell Setting对话框中的测试连接操作开始分析,在Shell Setting对话框中,一共会产生3个POST数据包,POST请求报文中参数名都是pass(即shell的连接密码),参数值都是加密数据。

①第一个Request请求数据包

简单分析了一下payload的内容,包含run、bypass_open_basedir、formatParameter、evalFunc等二十多个功能函数,具备代码执行、文件操作、数据库操作等诸多功能。

②第一个Response响应数据包

该请求不含有任何Cookie信息,服务器响应报文不含任何数据,但是会设置PHPSESSID,后续请求都会自动带上该Cookie。

③第二个Request请求数据包

第二个请求报文发送很少数据(实际内容为测试连接命令test),返回少量数据(即ok)

④第二个Response响应数据包

服务器响应数据解密过程并不复杂,先调用findStr函数删除服务器响应数据左右附加的混淆字符串(对于PHP_XOR_BASE64加密方式来说,前后各附加了16位的混淆字符),然后将得到的数据进行base64解码,最后再和shell连接密钥md5值的前16位按位异或,即完成响应数据的解密。

⑤第三个Request请求数据包

运行哥斯拉命令执行代码中的getBasicsInfo函数得到的系统基本信息。

⑥第三个Response响应数据包

4、PHP_EVAL_XOR_BASE64加密器

哥斯拉不同的加密器发送请求的过程都是一样的,不同之处在于加密/解密的实现方式不同。

PHP_EVAL_XOR_BASE64加密shell的特点如下:

Ø请求数据加密得到的密文形式:pass=evalContent&key=XXXXXXXX,其中pass是shell密码,key是shell密钥

Ø每个请求中的pass=evalContent都是相同的,evalContent是将shells/cryptions/phpXor/template/base64.bin文件内容经过编码得到的(先删除第1行的<?php,再将其中的{pass}替换为shell密码,将{secretKey}替换为shell密钥)

Ø每个请求中的key=XXXXXXXX才是实际执行的shell操作,加密方法和PHP_XOR_BASE64加密shell的方式相同

evalContent的加密过程如下:

①提取src/shells/cryptions/phpXor/template/base64.bin文件内容

②将base64.bin文件内容进行base64编码

③将第2步中编码得到的字符串逆序排列

④将第3步中得到的字符串进行URL编码

⑤将第4步中得到的字符串拼接到eval(base64_decode(strrev(urldecode('第4步中得到的字符串'))));中,即为最终的evalContent

5、PHP_XOR_RAW加密器

PHP_XOR_RAW加密shell的加解过程只是将原始数据与shell密钥(本例中为key)md5值的前16位按位异或,然后将得到的二进制字节码直接发送给服务器;服务器返回的响应数据也是二进制字节码,左右不再追加任何数据。

6、规则落地

复制代码

alert http any any -> any any (msg:"哥斯拉/Godzilla PHP Base64 连接成功";
flow:established,from_server;
flowbits:txisset,Godzilla_webshell_request_match;
http.server;
content:"Rising", negate;
http.response_body;
bsize:36;
pcre:"/^([0-9A-F]{16}|[0-9a-f]{16})/";
pcre:"/([0-9A-F]{16}|[0-9a-f]{16})$/";
pcre:"/^[\s\S]{16}(.*)[\s\S]{16}$/";
pcrexform:"^[\s\S]{16}(.*)[\s\S]{16}$";
pcre:"/[\s\S]/";
base64;
flowbits:unset,Godzilla_webshell_request_match;
)

复制代码

  • alert http any any -> any any 表示对任何源IP和目的IP之间的HTTP流量生成告警。

  • msg:"哥斯拉/Godzilla PHP Base64 连接成功" 是告警的描述信息。

  • flow:from server,established 表示只对来自服务器端的已建立连接的流量进行检测。

  • flowbits:isset,Godzilla webshell request match 检查名为"Godzilla webshell request match"的流状态位是否已被设置。(注意这里使用了isset而不是txisset)

  • http.server 表示只对HTTP服务器响应进行检测。

  • content:!"Rising" 表示检测HTTP响应正文中不包含字符串"Rising"。

  • http.response body 表示对HTTP响应的正文部分进行检测。

  • bsize:36 指定只检测响应正文的前36个字节。

  • pcre:"/^([0-9A-F]{16}|[0-9a-f]{16})/"和pcre:"/([0-9A-F]{16}|[0-9a-f]{16})$/" 使用Perl兼容正则表达式(PCRE)检测响应正文是否以16个十六进制字符开头和结尾。

  • pcre:"/^[\s\S]{16}(.*)[\s\S]{16}$/"和pcrexform:"^[\s\S]{16}(.*)[\s\S]{16}$" 使用PCRE检测响应正文是否符合特定的模式,即以16个任意字符开头,任意字符串为中间部分,再以16个任意字符结尾。

  • pcre:"/[\s\S]/" 匹配响应正文中的单个被方括号包围的任意字符。

  • isbase64:3 表示对匹配到的内容进行Base64解码,并检查解码后的字节数是否是3的倍数。

  • flowbits: unset,Godzilla webshell request match 清除名为"Godzilla webshell request match"的流状态位。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32G474之DAC

STM32G474分别使用CORDIC硬件和“math.h”的正弦值&#xff0c;从DAC1和DAC2输出。 1、DAC特点 PA4的附加功能为DAC1_OUT1&#xff0c;无需映射&#xff0c;直接将它配置为模拟功能&#xff0c;就可以使用了。 PA6的附加功能为DAC2_OUT1&#xff0c;无需映射&#xff0c;直接将…

物料主数据的分类及编码规则概述

物料主数据分布在设计、工艺、生产、采购、销售、存储、物流过程中的多个业务部门中&#xff0c;类型繁杂且不易于管理&#xff0c;必须对于物料主数据进行分类管理。 本文将从物料主数据的分类原则、编码样例、编码规范以及编码设计等方面进行详细介绍&#xff0c;帮助企业更…

STM32高级定时器生成互补PWM的原理与代码实现

文章目录 前言一 CubeMx配置1.1 TIM1 Mode and Configuration1.2 Paramter Settings 二 程序代码三 仿真分析总结 前言 互补 PWM&#xff08;Complementary PWM&#xff09;是指一对逻辑状态互为反相的 PWM&#xff08;脉冲宽度调制&#xff09;信号。这种信号配置常见于电机控…

数字人实战第三天——wav2lip部署教程

wav2lip数字人 一、wav2lip简介 Wav2Lip 是一种通过将音频与视频中的嘴唇动作同步的技术&#xff0c;旨在生成与音频内容高度匹配的口型动画。其主要应用是让视频中的人物嘴唇动作与配音或其他音频输入精确同步&#xff0c;这在电影配音、虚拟主持人、在线教学、影视后期处理等…

秋招最新大模型算法面试,熬夜都要肝完它

&#x1f4a5;大家在面试大模型LLM这个板块的时候&#xff0c;不知道面试完会不会复盘、总结&#xff0c;做笔记的习惯&#xff0c;这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助&#xff0c;都附有完整答案&#xff0c;熬夜…

CSS —— display属性

用于指定一个元素在页面中的显示方式 HTML中标签元素大体被分为三种类型&#xff1a;块元素、行内元素和行内块元素 块元素 &#xff1a;block 1.独占一行 2.水平方向&#xff0c;占满它父元素的可用空间&#xff08;宽度是父级的100%&#xff09; 3.垂直方向&#xff0c;占据的…

Idea 创建 Maven项目的时候卡死

文章目录 一、Archetype 和 Catalog1.1 Archetype&#xff08;原型&#xff09;1.2 Catalog&#xff08;目录&#xff09; 二、可能遇到的问题2.1 问题描述2.2 原因分析2.3 解决方案 参考资料 一、Archetype 和 Catalog 1.1 Archetype&#xff08;原型&#xff09; Archetype…

【自考zt】【软件工程】【21.10】

关键字&#xff1a; 软件需求基本性质、软件系统需求挑战、耦合&#xff08;高内容&#xff0c;低无直接&#xff09;、内聚&#xff08;初始化时间&#xff09;、uml包、rup边界类、测试首要目标、单元测试最后工作、性能需求 软件开发本质、软件需求规约三种风格、提炼、用…

9.7(QT.Day 1)

一、自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面 要求&#xff1a;每行代码都有注释 【需要用到的图片或者动图&#xff0c;自己去网上找】 1.mywidget.h代码 #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include <QIcon> //图…

2024全国大学省数学建模竞赛A题-原创参考论文(部分+第一问代码)

一问题重述 1.1 问题背景 "板凳龙"&#xff0c;又称"盘龙"&#xff0c;是浙闽地区的传统地方民俗文化活动。这种独特的表演艺术形式融合了中国传统龙舞的精髓和地方特色&#xff0c;展现了人们对美好生活的向往和对传统文化的传承。 在板凳龙表演中&am…

为elementui的el-date-picker时间选择器添加快捷选项

1、效果图 2、实现方法 直接在elementui的时间选择器上修改&#xff0c;添加shorcuts选项&#xff0c;但是样式要自己修改。 有几个注意点&#xff1a; 1&#xff09;如图我是选中后有显示背景颜色的&#xff0c;也就意味着要给选中的选项添加类名&#xff0c;elementui没有…

一. 从Hive开始

1. 怎么理解Hive Hive不能理解成一个传统意义上的数据库&#xff0c;应该理解成一个解决方案。 是Hadoop在hdfs和mapreduce之后才出现的一个结构化数据处理的解决方案。 Hdfs解决了大数据的存储问题&#xff0c;mapreduce解决了数据的计算问题。 一切似乎很美好。 但是使用成本…

微信小程序页面制作——个人信息

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

探索fastFM:Python中的高效推荐系统库

文章目录 &#x1f680; 探索fastFM&#xff1a;Python中的高效推荐系统库背景&#xff1a;为何选择fastFM&#xff1f;快照&#xff1a;fastFM是什么&#xff1f;安装指南&#xff1a;如何将fastFM加入你的项目&#xff1f;快速入门&#xff1a;五个基础函数的使用实战演练&am…

【音视频】播放音视频时发生了什么? 视频的编解码 H264是什么? MP4是什么?

目录 ✨播放一个视频的流程✨为什么要编码&#xff08;压缩&#xff09;视频数据&#xff1f;✨如何编码&#xff08;压缩&#xff09;数据&#x1f384;简单的例子&#x1f384;音视频编码方式&#x1f384;视频编码格式H264编码是什么&#xff1f;发展历程&#xff1f;H.264基…

解锁 macOS 剪贴板历史记录,高效复制、粘贴技巧

在Mac上&#xff0c;我们经常需要在不同文档之间复制和粘贴内容。然而&#xff0c;macOS自带的剪贴板只能保存最后一个复制项&#xff0c;这大大限制了我们的工作效率。幸运的是&#xff0c;一些第三方应用程序可以帮助我们查看和管理剪贴板的历史记录&#xff0c;从而提升我们…

关系的规范化与范式详解

在数据库设计中&#xff0c;关系的规范化是确保数据结构合理性、减少冗余和异常的关键步骤。如果你是一个数据库设计的初学者&#xff0c;这篇文章将为你深入浅出地讲解 关系规范化 和 范式 的核心概念&#xff0c;并通过简洁的示例帮助你加深理解。 关系的规范化&#xff1a;…

飞机制造5G智能工厂数字孪生工业物联平台,推进制造业数字化转型

飞机制造行业作为高端制造业的典范&#xff0c;正积极探索数字化转型的新路径。飞机制造5G智能工厂数字孪生工业物联平台&#xff08;以下简称“平台”&#xff09;的兴起&#xff0c;不仅为飞机制造业注入了强劲动力&#xff0c;更为整个制造业的数字化转型树立了新的标杆。 …

B: 小球反弹

目录 一&#xff1a; 二&#xff1a; 三&#xff1a; 四&#xff1a; 一&#xff1a;问题描述 有一长方形&#xff0c;长为343720 单位长度&#xff0c;宽为233333 单位长度。在其内部左上角顶点有一小球&#xff08;无视其体积&#xff09;&#xff0c;其初速度如图所示且…

Transformer预测 | 基于Transformer心率时间序列预测(tensorflow)

效果一览 基本介绍 Transformer预测 | 基于Transformer心率时间序列预测(tensorflow) 程序设计 import pandas as pd from pandas.plotting import lag_plot from statsmodels.graphics