NewStarCTF2023week4-溯源

题目描述是冰蝎进行WebShell连接的流量包,我们需要找到攻击者获取到的服务器用户名和服务器内网IP地址。

先介绍一下常见webshell工具的流量特征:

1、中国菜刀
请求体中存在eval、base64等特征字符;

连接过程中使用base64编码对发送的指令进行加密;

还有一段以QG开头,7J结尾的固定代码。

2、蚁剑
默认的user-agent请求头是antsword XXX(不过可以修改)

一般将payload进行分段,分别进行base64编码;

一般具有像eval这样的关键字和@ini_set("display","0");这段代码。

3、冰蝎
PHP代码中可能存在eval、assert等关键词;

jsp代码中可能会有get class(),get class loader()等字符特征。

中国菜刀、蚁剑的攻击流量特征明显,容易被各类安全设备检测,而冰蝎是一款基于Java开发的动态加密通信流量的Webshell工具,由于通信流量被加密,传统的 WAF、IDS 设备难以检测,冰蝎最大特点就是对交互流量进行对称加密(冰蝎密文采用对称加密算法AES加密,加密后还会进行 base64 编码),且加密秘钥是由随机数函数动态生成,因此该客户端的流量几乎无法检测。 

解题第一步,先找AES加密算法的密钥:

服务器使用随机数MD5的高16位作为密钥,存储到会话的SESSIONID中,我们可以通过wireshark抓包看到。

在找这些包之前我们其实可以先利用wireshark的过滤器进行初步的筛选:

筛选HTTP POST请求,因为攻击者通常通过POST请求发送命令和数据

http.request.method == "POST"

筛选非常大或非常小的HTTP POST数据包,这些可能包含有关服务器的信息 

http.request.method == "POST" and (frame.len < 1000 or frame.len > 5000)

筛选出具有 ACK 标志的 TCP 数据包,这些数据包通常表示响应报文

tcp.flags.ack == 1

我们也可以使用 and 对上面的一些条件进行组合筛选 。

查看请求shell.php的包:

注意:每个包前面是什么协议,你就追踪什么流,比如这里这个包是http协议,那么你就要追踪http流,否则出来的响应报文可能会存在格式的问题导致无法解码和识别。

追踪http流:

找到与AES加密相关的东西:

进行base64解码:

拿到 $key="e45e329feb5d925b";

接下来我们就可以对请求报文或者响应报文中的AES密文进行解密了:

像下面这种格式的就是AES的密文,红色部分是请求报文,蓝色部分是响应报文。

我们使用在线网站批量解码:AES批量加密解密 - 在线工具 (bugscaner.com)

先给大家看一下我前面提到过关于追踪流的情况:

这是对同一个http协议的包追踪http流和tcp流的不同结果

这里这个用户名是很好找的,很多包里面都有,我只是列举了其中某个包:

用户名为www-data

而服务器的内网ip则在长度为100的post请求1.php里面,其他包里面可能也还有,可以再找找,我主要是最开始追踪成tcp流了导致一直没找到这段响应报文。

第一段响应报文解两次码后还是密文,在第二段里面,从我框起来的位置一直拉到结尾。

 先解AES:

再对msg的内容解base64:

得到一个以basicInfo开头的东西,对其内容再解base64,注意要去掉basicInfo头否则会出错:

在解码内容里找到服务器内网ip和用户名:

172.17.0.2 和 www-data

其实也没必要对整个base64解码,只需要对末尾 "localIp":"MTcyLjE3LjAuMg==" 的内容解码即可得到内网ip:

因此flag为:

flag{www-data_172.17.0.2}

溯源这个东西其实是很可怕的

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

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

相关文章

深入探究深度学习、神经网络与卷积神经网络以及它们在多个领域中的应用

目录 1、什么是深度学习&#xff1f; 2、深度学习的思想 3、深度学习与神经网络 4、深度学习训练过程 4.1、先使用自下上升非监督学习&#xff08;就是从底层开始&#xff0c;一层一层的往顶层训练&#xff09; 4.2、后自顶向下的监督学习&#xff08;就是通过带标签的数…

如何在spark中使用scikit-learn和tensorflow等第三方python包

目录 1 打包需要的python包2 修改spark配置文件 1 打包需要的python包 首先我们用conda包管理工具对我们需要的python包进行虚拟环境创建&#xff1a; conda create -n python37 --copy -y -q python3.7 --prefix /your/workspace/path scikit-learn tensorflow下面是对每个参…

jenkins自动化操作步骤(gitblit)

1、登陆地址&#xff1a; http://xxxxxxxxx.org:xxxx/ admin/xxxx 2、创建任务 选择构建一个maven项目 3、配置 最多只保留一天一个任务 选择git仓库和账号密码 选择代码对应分支 build项&#xff1a; 1&#xff09;使用父项目的pom文件&#xff1a;k56-boot/pom.xml 2&…

12-MySQL性能监控与调优工具推荐

MySQL性能监控与调优工具推荐 本文将介绍一些常用的MySQL性能监控与调优工具&#xff0c;包括命令行工具、图形界面工具和第三方工具。通过这些工具&#xff0c;我们可以更好地监控MySQL的性能&#xff0c;找出潜在的问题并进行优化。 一、命令行工具 MySQL自带的慢查询日志…

【Qt之QtConcurrent】描述及使用

描述 QtConcurrent是一个Qt库中的模块&#xff0c;用于实现多线程并发编程。它提供了一些高级API&#xff0c;使得在多核处理器上并行执行代码变得更加容易。 示例&#xff1a; 使用的话&#xff0c; 需要在pro文件中添加&#xff1a;QT concurrent模块。 #include <QC…

Leetcode刷题详解——第 N 个泰波那契数

1. 题目链接&#xff1a;1137. 第 N 个泰波那契数 2. 题目描述&#xff1a; 泰波那契序列 Tn 定义如下&#xff1a; T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 Tn Tn1 Tn2 给你整数 n&#xff0c;请返回第 n 个泰波那契数 Tn 的值。 示例 1&#xff1a; 输入&#…

从瀑布模式到水母模式:ChatGPT如何赋能软件研发全流程

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…

算法随想录算法训练营第四十五天|392.判断子序列 115.不同的子序列

392.判断子序列 题目&#xff1a;给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"…

力扣第56题 合并区间 c++ 贪心

题目 56. 合并区间 中等 相关标签 数组 排序 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例…

Flutter——最详细(Scaffold)使用教程

Scaffold简介 相当于界面的主体&#xff08;类似于安卓最外层PhoneWindow&#xff09;&#xff0c;组件的展示都必须依附于它。 使用场景&#xff1a; 每一个界面都是脚手架&#xff0c;通过它来进行架构实现&#xff0c;优美的布局效果。 属性作用appBar顶部的标题栏body显示整…

Day 11 python学习笔记

模块 内置模块 random random&#xff1a;随机数模块 我们可以在解释器中看到其蕴含的方法 接下来我解释一些常用的方法&#xff1a; random.random( ) random.random( ) 返回0-1的随机数 [0,1) >>> random.random() 0.364183511476754 random.randint(n,m) r…

Java题:查找单链表中第 k 个节点元素的值

遇到过一道奇奇怪怪的Java题&#xff0c;就整理出自己的想法&#xff0c;不知道对不对&#xff0c;还望大佬们指导。 题目 给定一个单链表&#xff0c;查找单链表中第 k 个节点元素的值&#xff0c;同时要求使用时间复杂度低的算法实现。 单链表的定义如下&#xff1a; cla…

2023年Flutter教程_Flutter+Getx仿小米商城项目实战视频教程-V3版

Flutter是谷歌公司开发的一款开源、免费的UI框架&#xff0c;可以让我们快速的在Android和iOS上构建高质量App。它最大的特点就是跨平台、以及高性能。 目前 Flutter 已经支持 iOS、Android、Web、Windows、macOS、Linux 的跨平台开发。 GetX 是 Flutter 上的一个轻量且强大的解…

AI for Security:智能化安全对抗的困境

本篇文章主要结合自己的亲身经历和体会表达一下对AI for Security的看法,整体态度偏消极。 0x01 背景 本段将由大到小从国家、网上公开资料、项目三个方面说明智能化安全对抗时代的来临。 正如有时候觉得学得好不如嫁得好,在网络安全方面有时也是学得好不如运气好跟上了历史…

SAP ABAP 报表输出成 excel 统计图形 (RFC : GFW_PRES_SHOW_MULT)

SAP 预设了一个类型组 GFW &#xff0c;做简单的excel图形输出 话不多说&#xff0c;直接上代码&#xff1a; *&---------------------------------------------------------------------* *& Report ZCYCLE057 *&----------------------------------------------…

71 搜索二维矩阵

搜索二维矩阵 题解1 Z字查找(tricky)题解2 一次二分查找题解3 两次二分查找 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target …

如何在k8s的Java服务镜像(Linux)中设置中文字体

问题描述&#xff1a;服务是基于springboot的Java服务&#xff0c;在项目上是通过Maven的谷歌插件打包&#xff0c;再由k8s部署的。k8s的镜像就是一个Java服务&#xff0c;Java服务用到了中文字体。 解决这个问题首先需要搞定镜像字体的问题。有很多类似的解决方案&#xff0c;…

图解java.util.concurrent并发包源码系列——深入理解ConcurrentHashMap并发容器,看完薪水涨一千

图解java.util.concurrent并发包源码系列——深入理解ConcurrentHashMap并发容器 HashMap简单介绍HashMap在并发场景下的问题HashMap在并发场景下的替代方案ConcurrentHashMap如何在线程安全的前提下提升并发度1.71.8 JDK1.7的ConcurrentHashMap源码JDK1.8的ConcurrentHashMap源…

python 字符串str与字典dict转换

目录 python 字符串str与字典dict转换 字典转字符串字符串转字典 带引号不带引号 python 字符串str与字典dict转换 字典转字符串 c {a: 1, b: 1} bstr(c) print(b,type(b)) 字符串转字典 字符串转字典分两种情况&#xff0c;需要根据你的字符串内容是否带引号决定&#xff0c;…

网络流学习笔记

网络流基础 基本概念 源点&#xff08;source&#xff09; s s s&#xff0c;汇点 t t t。 容量&#xff1a;约等于边权。不存在的边流量可视为 0 0 0。 ( u , v ) (u,v) (u,v) 的流量通常记为 c ( u , v ) c(u,v) c(u,v)&#xff08;capacity&#xff09;。 流&#xff…