【流量分析】Godzilla分析

一、哥斯拉流量的特点:

1.User-Agent (弱特征)

哥斯拉客户端使用JAVA语言编写,在默认的情况下,如果不修改User-Agent,User-Agent会类似于Java/1.8.0_121(具体什么版本取决于JDK环境版本)。但是哥斯拉支持自定义HTTP头部,这个默认特征是可以很容易去除的。

2.Accept(弱特征)
Accept为text/html, image/gif, image/jpeg, *; q=.2, /; q=.2

3.Cookie (强特征)
哥斯拉的作者应该还没有意识到,在请求包的Cookie中有一个非常致命的特征,最后的分号。

4.请求体特征 (较强特征)
因为无法准确识别加密的请求体,所以只能采用比较宽泛的匹配条件去匹配请求体特征,宽泛的匹配思路其实就是基于区别大部分正常的数据包,加密数据包自身体现的特征。这种宽泛的匹配在一些情况下可能会带来误报,因此有时候难以作为一种非常有效的检测手法。

哥斯拉支持对加密的数据进行base64编码以及原始的加密raw两种形式的通讯数据,对于请求体的检测也要考虑两种情况。

哥斯拉在进行初始化时会产生一个比较大的数据包,后面进行命令执行等操作时产生的base64数据包会比较比较小。在长度上做一个匹配条件在一定程度上也可以降低误报率。
对于原始加密raw请求体,没想到比较好的方法,目前只想到到了匹配较多的不可见字符的思路。
和请求体一样,请求响应体也分两个格式,base64编码的和原始加密raw数据。如果请求体采用base64编码,响应体返回的也是base64编码的数据。在使用base64编码时,响应体会出现一个很明显的固定特征。这个特征是客户端和服务端编写的时候引入的。

从代码可以看到会把一个32位的md5字符串按照一半拆分,分别放在base64编码的数据的前后两部分。整个响应包的结构体征为:md5前十六位+base64+md5后十六位。

5.哥斯拉会相应3次
01 通过Burp抓包可知,第1个请求会发送大量数据,该请求不含有任何Cookie信息,服务器响应报文不含任何数据,但是会设置PHPSESSID,后续请求都会自动带上该Cookie。
在这里插入图片描述
02 可以看到,第2个请求中已经自动带上了第1个请求中服务器响应返回的Cookie值,并且第2个请求中只有少量的数据。
在这里插入图片描述
第3个请求

第3个请求与第2个请求完全一致。
在这里插入图片描述
6.哥斯拉加密的方式
在这里插入图片描述
7.哥斯拉会长时间有 Connection: keep-alive

二、题目:hw-典型哥斯拉流量

在这里插入图片描述
一开始可以发现:

188一直在向180发送syn包 是188在Ping180,看端口有没有开启,要看180有没有回包 rst ack seq=1 ack=1 win=0 len=0
在这里插入图片描述
(ip.src == 192.168.162.180 ) && (ip.proto == 6) 输入筛选条件,红色的是没有开放的;看返回包,返回包协议中携带syn、ack的包是正常通信的。
在这里插入图片描述
在这里插入图片描述
综上第一题的答案是 80,888,8888

在这里插入图片描述
追踪流量查看用户做了什么,很多都是404的,后面上传了shell.jsp后才有一些是200的

···
GET /index.jsp?pwd=admin&cmd=ls HTTP/1.1
Host: 192.168.162.180
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: JSESSIONID=9467B2C71C4B258B7BFB8CCCA6C7C564
Upgrade-Insecure-Requests: 1HTTP/1.1 200 
Server: nginx
Date: Mon, 30 May 2022 14:38:24 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 17
Connection: keep-alive
X-Cache: MISS<h1>Hello world!
GET /test.jsp?pwd=admin&cmd=ls HTTP/1.1
Host: 192.168.162.180
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: JSESSIONID=9467B2C71C4B258B7BFB8CCCA6C7C564
Upgrade-Insecure-Requests: 1HTTP/1.1 200 
Server: nginx
Date: Mon, 30 May 2022 14:38:31 GMT
Content-Type: text/html;charset=GBK
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Cache: MISS
Content-Encoding: gzip<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>..........</title></head><body><pre>bin
boot
cdrom
dev
etc
flag
home在这里插入代码片

可以看到用户挂马之后看了下根目录下有啥,
确实有个flag
查看的内容都是通过shell.jsp来实现的

01 通过Burp抓包可知,第1个请求会发送大量数据,该请求不含有任何Cookie信息,服务器响应报文不含任何数据,但是会设置PHPSESSID,后续请求都会自动带上该Cookie。
在这里插入图片描述在这里插入图片描述
02 可以看到,第2个请求中已经自动带上了第1个请求中服务器响应返回的Cookie值,并且第2个请求中只有少量的数据。cookie还是呆分号的
在这里插入图片描述
在这里插入图片描述
可以判断为哥斯拉流量。

三、哥斯拉流量的加密方式

from Crypto.Cipher import AES
import binascii
import zlib# 密钥,与 JSP 代码中的密钥相同
key = b'748007e861908c03'# 要解密的加密数据(十六进制形式)
encrypted_hex_data = "b5c1fadbb7e28da08572486d8e6933a84c5144463f178b352c5bda71cff4e8ffe919f0f115a528ebfc4a79b03aea0e31cb22d460ada998c7657d4d0f1be71ffa"def decode(data, key):cipher = AES.new(key, AES.MODE_ECB)decrypted_data = cipher.decrypt(data)return decrypted_datadef ungzip(in_str):s = zlib.decompress(in_str, 16 + zlib.MAX_WBITS).decode()print("Decoded and Unzipped:\n", s)# 将十六进制数据转换为字节序列
encrypted_bytes = bytes.fromhex(encrypted_hex_data)# 解密数据并解压缩
decrypted_data = decode(encrypted_bytes, key)
ungzip(decrypted_data)

得到结果可得

在这里插入图片描述在这里插入图片描述

所谓的加密是一个aes形式的ecb加密外加unzip的形式:
对响应包截取该md5后的前16位以及后16位
对截取后的响应包内容进行 base64解码/raw原始数据形式 + aes解密 + gzip解压缩
在这里插入图片描述
1.一定要是http的形式
2.截取的内容一定是分段后的内容也就是数据运输的内容
3.请求包相应包都是如此
4.一定要是原始数据
我们把挂着哥斯拉jsp马的数据全部都读取以下并翻译
在这里插入图片描述

cmdLinewhoami
www
cmdLinecat /www/wwwroot/test.com/key
the key is 1****y
cmdLine ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 02:42:13:c6:39:05 txqueuelen 0 (以太网)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 27 bytes 4460 (4.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.162.180 netmask 255.255.255.0 broadcast 192.168.162.255
inet6 fe80::3c58:317b:f1ee:d5fc prefixlen 64 scopeid 0x20
inet6 fe80::8925:adf7:1d2a:2c41 prefixlen 64 scopeid 0x20
ether 00:0c:29:df:95:a8 txqueuelen 1000 (以太网)
RX packets 2360170 bytes 3041706453 (3.0 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 608498 bytes 43248948 (43.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

ens38: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.101.132 netmask 255.255.255.0 broadcast 192.168.101.255
inet6 fe80::68af:1a5:a54c:7366 prefixlen 64 scopeid 0x20
ether 00:0c:29:08:04:93 txqueuelen 1000 (以太网)
RX packets 31049 bytes 2298483 (2.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 749 bytes 65158 (65.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (本地环回)
RX packets 80607 bytes 17837506 (17.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 80607 bytes 17837506 (17.8 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

veth038e57f: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::1cf7:44ff:fea5:1deb prefixlen 64 scopeid 0x20
ether 1e:f7:44:a5:1d:eb txqueuelen 0 (以太网)
RX packets 10 bytes 1199 (1.1 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 172 bytes 27148 (27.1 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

cmdLinenmap
Cannot run program “nmap”: error=13, 权限不够
cmdLinels /
bin
boot
cdrom
dev
etc
flag
home
lib
lib32
lib64
libx32
lost+found
media
mnt
opt
patch
proc
root
run
sbin
snap
srv
swapfile
sys
tmp
usr
var
www
cat /flag
flag{9236b29d-5488-41e6-a04b-53b0d8276542}

对于http流其实可以一个个查看回头输入http会自动光标定位到刚才的位置
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

XML—标记语言

什么是XML&#xff1f; Extensible Markup Language&#xff0c;可扩展标记语言。 那标记语言是什么&#xff1f; 用文字做标记表达一些效果或携带一些数据。比如&#xff1a;HTML、XML 我的理解&#xff1a;用倾盆大雨表达雨很大 那XML为什么说是可扩展的呢&#xff1f; 还…

《基于 Vue 组件库 的 Webpack5 配置》3.将 CSS 提取到单独的文件

使用 webpack 插件 mini-css-extract-plugin 需要额外安装 npm i mini-css-extract-pluginlatest -D&#xff1b; 同时打包 js 和 css 文件时&#xff0c;可参考 entry 高级用法&#xff1b; package.json 的配置如下 const { VueLoaderPlugin } require(vue-loader); // 可…

为什么不建议使用Executors来创建线程池

&#xff08;1&#xff09;FixedThreadPool 当我们使用Executors创建FixedThreadPool时&#xff0c;对应的构造方法为&#xff1a; public static ExecutorService newFixedThreadPool(int nThreads) {return new ThreadPoolExecutor(nThreads, nThreads, 0L, ThimeUnit.MILLI…

脚本:PDF文件批量转换成图片(python3)

文章目录 语言用法源码1源码2Open Mind&#xff1a;more than one way to solve a problem 语言 语言&#xff1a;python 3 用法 用法&#xff1a;选择PDF文件所在的目录&#xff0c;点击 确定 后&#xff0c;自动将该目录下的所有PDF转换成单个图片&#xff0c;图片名称为:…

vue2项目中表格的增删查改

我们在项目中经常会用到对于表格的增删查改操作&#xff0c;以下使用vue2elementui来实现表格的增删查改 表格的基本属性 基础表格如下:(其中需要注意的是当el-table元素中注入data对象数组后&#xff0c;在el-table-column中用prop属性来对应对象中的键名即可填入数据&#x…

PDF制作成翻页电子书

在日常工作中&#xff0c;大部分人使用的都是PDF文档发送给客户&#xff0c;但是PDF文档通常是静态的&#xff0c;缺乏交互性和视觉吸引力。那你有没有想过把它转换成翻页的电子书呢&#xff1f; 小编将告诉你操作步骤&#xff0c;非常简单 1.搜索FLBOOK在线制作电子杂志平台 …

linux scatterlist阅读三

sg_copy_buffer 函数定义&#xff1a; /*** sg_copy_buffer - Copy data between a linear buffer and an SG list* sgl: The SG list* nents: Number of SG entries* buf: Where to copy from* buflen: The number of bytes to copy* skip: Number of bytes to sk…

Java 语言实现快速排序算法

【引言】 快速排序算法是一种常用且高效的排序算法。它通过选择一个基准元素&#xff0c;并将数组分割成两个子数组&#xff0c;一边存放比基准元素小的元素&#xff0c;另一边存放比基准元素大的元素。然后递归地对这两个子数组进行排序&#xff0c;最终达到整个数组有序的目的…

【C修炼计划】卷壹 · 初识C语言

文章目录 卷壹 初识C语言一 C语言的起源二 C语言的特性三 C语言的应用范围四 C语言程序结构五 C语言书写规范六 C语言编译器安装附 参考资料 卷壹 初识C语言 一 C语言的起源 C语言的前生是B语言&#xff08;BCPL&#xff0c;一种早期的高级语言&#xff09;。下图描…

c++多线程中常用的使用方法

1)promise(保证)和future的联合使用&#xff0c;实现两个线程的数据传递 #include <iostream> #include<thread> #include<future>using namespace std;//promise用法&#xff1a;可以给线程一个值&#xff0c;而从另一个线程读出该值 // 实现了两个线程的数…

Flink常用函数

1、比较函数 <> > > < < 注意&#xff1a;select nullnull; 返回为nullIS NULL 、 IS NOT NULL --非空判断value1 IS DISTINCT FROM value2、value1 IS NOT DISTINCT FROM value2、 --不同于value1 BETWEEN [ ASYMMETRIC | S OR 、AND、NOT boolean…

VMware虚拟机---Ubuntu无法连接网络该怎么解决?

在学习使用Linux系统时&#xff0c;由于多数同学们的PC上多是Windows系统&#xff0c;故会选择使用VMware创建一个虚拟机来安装Linux系统进行学习。 安装完成之后&#xff0c;在使用时总是会遇到各种各样的问题。本片随笔就主要针对可能出现的网络问题进行一个总结&#xff0c;…

物种气候生态位动态量化与分布特征模拟

在全球气候快速变化的背景下&#xff0c;理解并预测生物种群如何应对气候变化&#xff0c;特别是它们的地理分布如何变化&#xff0c;已经变得至关重要。利用R语言进行物种气候生态位动态量化与分布特征模拟&#xff0c;不仅可以量化描述物种对环境的需求和适应性&#xff0c;预…

限流算法深入

限流定义及目的 当系统流量达到系统或下游承受能力的阈值时对系统进行限流控制以防止系统或下游挂掉&#xff0c;减少影响面。 限流组成&#xff1a;阈值及限流策略。阈值是指系统单位时间接收到的请求qps总数&#xff1b;限流策略是指限流行业触发后对应的系统行为&#xff…

FPGA GTX全网最细讲解,aurora 8b/10b协议,HDMI板对板视频传输,提供2套工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 GT 高速接口解决方案3、GTX 全网最细解读GTX 基本结构GTX 发送和接收处理流程GTX 的参考时钟GTX 发送接口GTX 接收接口GTX IP核调用和使用 4、设计思路框架视频源选择IT6802解码芯片配置及采集动态彩条视频数据组包GTX aurora 8b/10b数据…

Django(5)-视图函数和模板渲染

Django 中的视图的概念是「一类具有相同功能和模板的网页的集合」 在我们的投票应用中&#xff0c;我们需要下列几个视图&#xff1a; 问题索引页——展示最近的几个投票问题。 问题详情页——展示某个投票的问题和不带结果的选项列表。 问题结果页——展示某个投票的结果。 投…

SVN 项目管理笔记

SVN 项目管理笔记 主要是介绍 SVN 管理项目的常用操作&#xff0c;方便以后查阅&#xff01;&#xff01;&#xff01; 一、本地项目提交到SVN流程 在SVN仓库下创建和项目名同样的文件夹目录&#xff1b;选中本地项目文件&#xff0c;选择SVN->checkout,第一个是远程仓库项…

大数据Flink实时计算技术

1、架构 2、应用场景 Flink 功能强大&#xff0c;支持开发和运行多种不同种类的应用程序。它的主要特性包括&#xff1a;批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。在启用高可用选项的情况下&#xff0c;它不存在单点失效问题。事实证明&#…

vue 学习笔记 简单实验

1.代码(html) <script src"https://unpkg.com/vuenext" rel"external nofollow" ></script> <div id"counter">Counter: {{ counter }} </div> <script> const Counter {data() {return {counter: 5}} } Vue.cr…

java-便签

--其实最痛的。不是离别。而是离别后的那些回忆。 java length( ) javalength中文占多长 1.一个中文字符或符号 2 个字节&#xff0c;一个英文字符或符号 1 个字节。 System.out.println("abc你好&#xff0c;".getBytes("gbk").length); System.out.pr…