WebShell流量特征检测_哥斯拉篇
80后用菜刀,90后用蚁剑,95后用冰蝎和哥斯拉,以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运算


XOR加密

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



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

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



②第一个Response响应数据包

③第二个Request请求数据包



④第二个Response响应数据包



⑤第三个Request请求数据包



⑥第三个Response响应数据包


4、PHP_EVAL_XOR_BASE64加密器

5、PHP_XOR_RAW加密器

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"的流状态位。
WebShell流量特征检测_哥斯拉篇的更多相关文章
- 无线安全专题_攻击篇--MAC泛洪攻击
上一篇讲解了无线安全专题_攻击篇--干扰通信,没在首页待多长时间就被拿下了,看来之后不能只是讲解攻击实战,还要进行技术原理和防御方法的讲解.本篇讲解的是局域网内的MAC泛洪攻击,这种攻击方式主要目的是 ...
- # Do—Now——团队冲刺博客_总结篇
Do-Now--团队冲刺博客_总结篇 目录 博客链接 作者 1. 第一篇(领航篇) @仇夏 2. 第二篇 @侯泽洋 3. 第三篇 @仇夏 4. 第四篇 @周亚杰 5. 第五篇 @唐才铭 6. 第六篇 ...
- SAP翔子_增强篇索引
序号 描述 SAP翔子_增强篇0 增强篇0 SAP的多种增强方式 SAP翔子_增强篇1 增强篇1 PO保存增强 SAP翔子_增强篇2 增强篇2 生产订单屏幕增强 SAP翔子_增强篇3 增强篇3 SAP ...
- pytho简单爬虫_模拟登陆西电流量查询_实现一键查询自己的校园网流量
闲来无事,由于校园内网络是限流量的,查询流量很是频繁,于是萌生了写一个本地脚本进行一键查询自己的剩余流量. 整个部分可以分为三个过程进行: 对登陆时http协议进行分析 利用python进行相关的模拟 ...
- Verilog HDL那些事_建模篇笔记(实验七:数码管电路驱动)
1.同步动态扫描 多个数码管的显示采用的是同步动态扫描方法,同步动态扫描指的是:行信号和列信号同步扫描,是一种并行操作. 2.数码管驱动电路实现思路 如果要求数码管显示我们想要的数字,首先需 ...
- 无线安全专题_破解篇02--kali破解pin码
最近项目有点紧,所以本应该上周发的文章,拖到了本周三,在此说声抱歉.无线安全专题,我打算系统地写六个部分,分别为破解篇,攻击篇,欺骗篇,路由篇,移动篇和蓝牙篇,当然在发布的过程中,可能还会掺杂着发布f ...
- 运行ORB-SLAM笔记_编译篇(一)
1.下载代码 https://github.com/raulmur/ORB_SLAM/ (同时也可以看看作者的牛叉论文,我是打算先用代码,再回头看论文) 2.打开后如下 就好像是用一件新产品 ...
- 在.Net中将RocketMQ跑起来_入门篇【2】
上一篇讲了如何再控制台将RocketMQ跑起来,本篇讲解,在asp.net mvc种跑起来,含(发布.订阅). 本次将不挨个贴源码,直接展示目录,根据上一篇文章,进行相应的调整即可. 1.新建一个类库 ...
- 学习python之路_入门篇A
偶尔经同事的介绍进入了金角大王的博客里,看到大王编写的文章都是关于python编程的,由于自己一直也是做软件测试方面的工作,也一直想往自动化测试方面发展,了解到利用python可以进行自动化测试操作, ...
- Python3实现ICMP远控后门(上)_补充篇
ICMP后门(上)补充篇 前言 在上一篇文章Python3实现ICMP远控后门(上)中,我简要讲解了ICMP协议,以及实现了一个简单的ping功能,在文章发表之后,后台很多朋友留言,说对校验和的计算不 ...
随机推荐
- position的值, relative和absolute分别是相对于谁进行定位的?
relative: 相对定位,相对于自己本身在正常文档流中的位置进行定位 相对它原来的位置,在走100px.原来在标准流中的位置继续占有. absolute: 生成绝对定位,相对于最近一级定位不为s ...
- Mybatis 总结ResultMap的复杂对象查询
association:映射的是一个POJO类,处理一对一的关联关系 collection:映射的一个集合列表,处理的是一对多的关联关系 模版 <!--column不做限制,可以为任意表的字段, ...
- 洛谷P6397
[COI2008] GLASNICI 题意描述 输入 3.000 2 0.000 6.000 输出 1.500 点拨 二分答案的题一般来说可以用答案去检验假设. 对于这道题,每一个信使的最佳走法是保证 ...
- 基于EF Core存储的Serilog持久化服务
前言 Serilog是 .NET 上的一个原生结构化高性能日志库,这个库能实现一些比内置库更高度的定制.日志持久化是其中一个非常重要的功能,生产环境通常很难挂接调试器或者某些bug的触发条件很奇怪.为 ...
- 在ubuntu16.04下,源码编译安装特定版本的MongoDB PHP扩展
背景:我的php项目在连接其他mongo库时报:Server at xxx:27017 reports wire version 5, but this version of libmongoc re ...
- mysql:Windows修改MySQL数据库密码(修改或忘记密码)
今天练习远程访问数据库时,为了方便访问,就想着把数据库密码改为统一的,以后我们也会经常遇到MySQL需要修改密码的情况,比如密码太简单.忘记密码等等.在这里我就借鉴其他人的方法总结几种修改MySQL密 ...
- 判断C盘下有没有Templets文件夹,没有则新建,然后判断Templets文件夹下有没有TEST.xlt文件
VB.NET 判断C盘下有没有Templets文件夹,没有则新建,然后判断Templets文件夹下有没有TEST.xlt文件,如果没有则新建 你可以使用VB.NET中的Directory和File ...
- 第十二节 JMeter基础-中级地址信息【IF控制器】
声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改. 背景:提交订单前,我们需要核对一些信息,比如商品信息,收货地址,支付方式等.现在核对一下收货地址信息. 思路: 1.前提条件 ...
- XXL-JOB分片执行分布式任务
XXL-JOB相对于springtask来说优点之一就是分布式执行任务,可以在调度中心为执行器分发任务,实现分布式. 分片广播任务即当一个微服务形成集群的时候,任务会完整的下发给每一个执行器.而不像其 ...
- layout文本相关
Textview t=findViewById(R.id.t); ONE设置文本内容: 在XML中android:text直接写 在java中setText()中修改 注意点1继承appcompata ...