Webshell管理工具流量特征抓包分析

admin 2025年6月7日13:40:59评论1 views字数 1913阅读6分22秒阅读模式

#这篇是之前自己分析的时候做的笔记,由于最近有一些赛事加上冲某src的榜所以没怎么写文章耽搁了

wireshark 查看具体流量包

Webshell管理工具流量特征抓包分析

定位webshell所有流量流程

这里仅仅定位http的,不考虑https,因为真实情况下设备是可以看到https 的流量的

  1. 在想要快速定位webshell的流量的时候,第一个流量是查找 http的流量,因为第一步都会是走的http协议,即使后面交互过程中也会有其他的协议。

  2. 然后就是POST,经过我对几个管理工具pcap包的分析发现,第一步都是POST请求,所以wireshark过滤就是,http和POST,另外要更加准确定位的话,还可以价格内容的过滤,比如蚁剑和菜刀都是有base64_decode的,也都是有eval的(php webshell)

Webshell管理工具流量特征抓包分析
  1. 在准确定位了第一步的webshell流量的之后,既可以将该服务端的IP记住,然后过滤规则为ip.addr=服务端IP,即可查看到底是哪些IP在请求该服务端,从而进一步定位恶意IP

  2. 常用过滤语法

http.request.method== "POST" && ip.addr == 210.245.13.147 #定位请求POST请求 目的IPhttp.host == "tracker.1ting.com" #定位域名ip.src == 10.230.0.0/16 #定位红队C段http contains "decode" #过滤http请求中包含有decode内容的http.request.uri contains “/dll/test.htm?”  #包含 指定URL的

蚁剑

默认base64编码

带了明显的特征函数@ini_set(),post的数据开头是链接密钥=@ini_set() 以及 display_error

@set_time_limit (0)

执行命令的时候,对参数删除前2个字符,再进行base64解码,可以得到具体执行的命令

Webshell管理工具流量特征抓包分析

不去掉前两个字符m6

Webshell管理工具流量特征抓包分析

去掉之后

Webshell管理工具流量特征抓包分析

chr编码如图

特征:ChR

Webshell管理工具流量特征抓包分析

rot13编码

特征:123=@eval(@str_rot13($_POST['pa6d3f66e30843']));

Webshell管理工具流量特征抓包分析

HEX编码

特征 有16进制处理的 函数 带有HEX  unsafe字符Webshell管理工具流量特征抓包分析

URL编码

Webshell管理工具流量特征抓包分析

解码之后就是很明显的 代码 也有unsafe

Webshell管理工具流量特征抓包分析

返回包

返回包不是纯base64,是 随机数 编码后数据 随机数的组合,需要删掉 随机数之后获取真正编码部分对应解码即可

菜刀

可以看到菜刀是没有其他编码的

Webshell管理工具流量特征抓包分析

在执行命令、或是为文件操作的时候,可能有明显的_0x....=开头,这是硬编码的

后面还有很明显的要给参数=eval然后 base64_decode

可以看到这些特征

sherry=%40eval%01%28base64_decode%28%24_POST%5Bz0%5D%29%29%3B

解码之后为

@eval(base64_decode($_POST[z0]));

&z0=QGlua    &z1

Webshell管理工具流量特征抓包分析

哥斯拉

不是动态协商的 是分三个步骤的

Webshell管理工具流量特征抓包分析

key是直接明文放在后面的 然后ting就是连接密码

第一步

ting是密码 然后又url编码 然后base64编码 会设置session

然后返回的内容为空

Webshell管理工具流量特征抓包分析

第二步

前16位和后16位都是md5,中级部分相对固定 也是个特征

Webshell管理工具流量特征抓包分析

第三步

也是发送一段固定代码 返回内容跟第二步一样

后面当我进行命令执行的时候 返回的前几位数永远是这几个  之后后面部分不同

Webshell管理工具流量特征抓包分析

xor base64编码就面目全非了

Webshell管理工具流量特征抓包分析

这是xor raw编码

Webshell管理工具流量特征抓包分析

冰蝎

冰蝎2

分为两个阶段:密钥协商、加密传输

先get请求获取密钥,后面就post请求执行命令

冰蝎3

相比上一个版本,取消了密钥的动态协商

<?php@error_reporting(0);session_start();$key="e45e329feb5d925b"; //该密钥为连接密码32位md5值的前16位//默认连接密码rebeyond$_SESSION['k']=$key;

可以看到只有两个步骤了

Webshell管理工具流量特征抓包分析

虽然也是面目全非但是还是有特征的

Webshell管理工具流量特征抓包分析

另外他是AES加密的数据,密钥在webshell里面。

应急时也要首先获取到webshell的文件,通过提取文件中的key 也就是该密钥为连接密码32位md5值的前16位 作为我们AES的解密密钥

解密可以看到命令执行返回的内容,如果密码是默认的密码 则md5的值也就是这个

Webshell管理工具流量特征抓包分析

取前16位数:E45E329FEB5D925B 如果是php可以直接解密 如果是jsp,请求包发送的是base64编码后的class文件,直接看无法看到代码,需要进行反编译。返回包则是接收的aes加密后未编码的二进制数据,返回内容似乎也不能直接解密,我是没有成功的

原文始发于微信公众号(Ting的安全笔记):Webshell管理工具流量特征抓包分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月7日13:40:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Webshell管理工具流量特征抓包分析https://cn-sec.com/archives/3784892.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息