主流webshell工具流量初探

VSole2021-11-22 11:58:10

蚁剑流量分析

一、首先服务器写入一句话,密码为pass,连接抓包。默认为明文:

    眼花缭乱,捋一下,首先是对返回输出结果进行加工的部分:

    在结果前后各加些随机字符进行扰乱 :

    接着对当前路径及当前系统进行判定,遍历所有盘看有几个磁盘,获取当前用户等:

    再执行个命令看下:

    结果中头尾都加了相应的随机字符串。这个也是waf规则之一,取值范围都是固定的,关于修改:

  • 可以通过在编码器中,修改代码来定义首尾的随机数目及范围,可以每次随机产生不同位数
  • 在设置中自定义,不过每次都是固定的

    其中会传递三个参数:这里截取X位可以自定义设置:

    这里截取X位可以自定义设置

    去掉wU两位,Y21k就是cmd的base64。可以说特征是比较明显了:

二、关于编码、解码器:

    编码器:对发送的流量进行编码,服务端进行解码。

   解码器:服务端对返回的流量进行编码,客户端通过解码器进行解码还原。        

    蚁剑提供了base64、chr、chr16、rot13四种编码方式,和base64、rot13两种解码方式:

   1. 我们设置base64看抓包结果:

    变量值进行了base64加密。逻辑是执行pass这条语句,也就是base64解密并执行上面这一大堆代码。套娃??和菜刀的源码差不多。

  2. 设置rot13编码看一下:

     进行url解码看到发送的rot13函数:

    进行在线解密看到是和之前一样数据包:

3. 关于rsa编码:

    蚁剑可以自定义rsa编码,原理是先用生成的私钥对发送数据进行加密,服务端再用脚本里的对应公钥进行解密。

    使用前提:目标php要开启openssl(开启openssl方法:在配置php.ini中

搜索extension=php_openssl.dll,取消前面分号,重启web服务)

    连接shell、抓下流量:

    发送内容进行了加密,不过返回包还是明文。这个后续就需要我们对结果进行加密返回,再配合解码器进行解码。 

冰蝎2流量分析

 先看下webshell对数据都做了哪些操作:

    特征是连接会get方式向服务端请求密匙。

附一张经典图及过程(来自网络):

  • 首先客户端以Get形式发起带密码的请求。
  • 服务端产生随机密钥,将密钥写入Session并将密钥返回客户端。
  • 客户端获取密钥后,将payload用AES算法加密,用POST形式发送请求。
  • 服务端收到请求,用Session中的密钥解密请求的Body部分,之后执行Payload,将直接结果返回到客户端。

   16位长度字符特征,每次新连接都是get获取两次、之后正常通信。为什么是两次呢?

(参考:http://t.zoukankan.com/0daybug-p-12749547.html)

    后续发送的数据包是通过密匙进行加密的,所以我们反向用到的密匙进行aes解密,发现是base64编码,再base64解一次即可看到传输的内容:

    整理下结果,从发送的内容看,是对返回的json字符串进行aes128加密:

    以下为返回包解码后内容:

   其他特征:

  • 不论是get还是post请求,Content-Type字段总是application/x-www-form-urlencoded。常理来说,Get请求一般没有这个字段值。
  • Accept字段与正常请求有差异,比较奇怪,这是源码默认值导致的。

冰蝎3流量分析

    webshell相比2代取消了密匙的交互,改为直接写到webshell里:

    执行过程是客户端post传输数据,webshell通过用key进行aes加密的流量。

以执行whoami命令为例,aes解密后关键代码如下:

    进入路径通过一系列函数执行我们的命令,最终将结果以aes128加密的json格式返回,这点和2代一样。

    对返回结果解码可得:

    流量全程通过aes加密,下面是天眼流量告警展示:

    看其他师傅说还有些强特征如content-type为application/octet-stream:

    可惜我这里没有抓到,可能是新版本修改了吧。

哥斯拉流量分析

    先看下生成的种类,php异或加密:

    第一个就是最简单的一句话。我们选第二个复杂一些的看看。秒了,暂且加白:

    特征是连接时会发3个数据包,第一个数据包巨大,并且返回内容为空:

    后续请求都是较少的流量。统一开头都是明文pass,也就是我们设置的密码:

     从webshell里可以看到,将post的数据进行base64解码,再通过加密函数与key值进行异或运算:

    那我们提取函数解密看下发送了什么内容吧:

    第一次发送的包进行解码,代码中集成了很多函数及功能:

    第二个包内容:

    第三个包内容:

    第二个包是测试用的,除了首次包集成了很多功能,后续执行发送很小的流量,返回包也严格做了加密。

    前后各16位key和pass MD5后生产的固定字符串。

    天眼设备流量告警展示:


流量webshell
本作品采用《CC 协议》,转载必须注明作者和本文链接
Webshell 检测综述
2022-12-15 09:45:32
通过Webshell,攻击者可以在目标服务器上执行一些命令从而完成信息嗅探、数据窃取或篡改等非法操作,对Web服务器造成巨大危害。Webshell恶意软件是一种长期存在的普遍威胁,能够绕过很多安全工具的检测。许多研究人员在Webshell检测领域进行了深入研究,并提出了一些卓有成效的方法。本文以PHP Webshell为例。
随着加密技术的广泛应用以及新型网络技术的不断更迭,网络结构日趋复杂,加密流量呈现爆炸式增长,尤其随着TLS1.3等加密协议的演进和推广,全加密时代悄然来临。加密技术在保护用户隐私的同时也深刻改变了网络安全威胁形势,让恶意服务有机可乘,而传统的检测技术路线在面对恶意加密流量时往往无能为力。在此背景下,基于加密流量的检测与防御势在必行。
安全运营中的加密流量检测技术
入侵的通用处置流程
云函数简介 云函数是腾讯云为企业和开发者们提供的无服务器执行环境,可以无需购买和管理服务器的情况下运行代码。只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。SCF是实时文件处理和数据处理等场景下理想的计算平台。服务端配置云函数基础配置选择自定义创建,地域自选,部署模式,代码部署,运行环境Python3.6,其余默认即可。
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留。查看下pid所对应的进程文件路径,
主流webshell工具流量分析
下载地址:https://github.com/FunnyWolf/pystinger
菜刀、冰蝎、蚁剑、哥斯拉的流量特征
VSole
网络安全专家