首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

WebShell流量特征检测_冰蝎篇

编程知识
2024年09月04日 08:39
80后用菜刀,90后用蚁剑,95后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对这四款经典的webshell管理工具进行流量分析和检测。

什么是一句话木马?

1、定义
顾名思义就是执行恶意指令的木马,通过技术手段上传到指定服务器并可以正常访问,将我们需要服务器执行的命令上传并执行
2、特点
短小精悍,功能强大,隐蔽性非常好
3、举例
php一句话木马用php语言编写的,运行在php环境中的php文件,例:<?php @eval($_POST['pass']);?>
4、原理
以最为常见的php一句话木马为例,"<?php ?>"为php固定规范写法,"@"在php中含义为后面如果执行错误不会报错,"eval()"函数表示括号里的语句全做代码执行,"$_POST['pass']"表示从页面中以post方式获取变量pass的值

三、冰蝎

1、Behinder v2.0

(1)实现原理

①首次连接webshell时,客户端首先向服务器端发起一个GET请求

②服务器端随机产生一个16位的密钥,把密钥回显给客户端,同时把密钥写进服务器侧的Session中

③客户端获取密钥后,对二进制payload先进行AES加密(本地openssl模块),再通过POST方式发送至服务器端

④服务器收到数据后,从Session中取出密钥,进行AES解密,解密之后得到二进制payload数据

⑤服务器解析二进制payload文件,执行任意代码,并将执行结果加密返回

客户端解密服务器端返回的结果

(2)代码分析

冰蝎的通信过程可以分为两个阶段:密钥协商加密传输
第一阶段-密钥协商

通过 GET 或者 POST 方法,请求服务器密钥

服务端使用随机数MD5的高16位作为密钥

并且存储到会话的$_SESSION变量中

返回密钥给攻击者

第二阶段-加密传输

客户端把待执行命令作为输入,利用 AES 算法进行加密,并发送至服务端

服务端接受密文后进行 AES 运算解密,执行相应的命令

执行结果通过AES加密后返回给攻击者

(3)数据包分析

第一阶段-密钥协商

冰蝎为了实现可以在webshell内添加任意内容 (比如gif89a子类的文件头或者其它标示字符) 冰蝎在初始化密钥时会对webshell进行两次访问,然后比较两次页面返回的差异,把两次请求都相同的字符记录一个位置,后续加密会用到这两个位置(beginIndex,endIndex)

第二阶段-加密传输

使用密钥进行AES解密信息如下:

(4)流量特征

1、Accept字段

冰蝎默认 Accept 字段的值很特殊,这个特征存在于冰蝎的任何一个通讯阶段

2、UserAgent字段

冰蝎内置了17种 UserAgent ,每次连接 shell 会随机选择一个进行使用

3、长连接和Content-Length

冰蝎通讯默认使用长连接,避免了频繁的握手造成的资源开销。默认情况下,请求头和响应头里会带有
Connection: Keep-Alive
Content-Length: 16 ##16就是冰蝎2连接的特征

四、密钥传递时URL参数

密钥传递时,URI只有一个key-value型参数
Key是黑客给shell设置的密码,一般为10位以下字母和数字
Value一般是2至3位随机纯数字
webshell的扩展名一般为可执行脚本

五、传递的密钥

加密所用密钥是长度为16的随机字符串,小写字母+数字组成
密钥传递阶段,密钥存在于Response Body中

2、Behinder v3.0

(1)代码分析

相比于冰蝎2,冰蝎3取消了动态密钥获取
密钥使用的是连接密码的MD5值的前16位,并存储于Session中

(2)数据包分析

Request请求包

Response响应包

(3)流量特征

1、Accept字段

头部特征:application/xhtml+xml,application/xml,application/signed-exchange

2、UserAgent字段

最新版本冰蝎内置了14种 UserAgent ,每次连接 shell 会随机选择一个进行使用

(4)检测规则

alert:记录所有匹配的规则并记录与匹配规则相关的数据包,生成一个警告

msg:规则名称,规则中的第一个字段,ids告警上显示的信息

flow: 特定时间内具有相同数据的数据包(5元组信息)同属于一个流

content:检测数据包中是否存在此内容

pcre:正则表达式

flowbits:可以确保例如两个不同的数据包同时匹配时会生成警报

classtype类别:根据规则检测到的活动类型为规则分类

sid特征标示符:用于唯一性规则标识,sid不能重复

alert http any any -> any any(msg:"MALWARE-BACKDOOR Behinder webshell online detected"; flow:established,to_client; pcre: "/\r\n\r\n[A-Za-z0-9]{16}$/"; content:"200 OK"; content: "Content-Length: 16"; fast_pattern;nocase; flowbits: set, bx_first_get_resp; noalert; classtype:web-attack;sid:3000021; rev:1; metadata:created_at 2019_11_20, updated_at 2019_11_20;)
alert http any any -> any any(msg:"MALWARE-BACKDOOR Behinder webshell online detected"; flow:established,to_server; content:"GET"; http_method; pcre:"/\.(php|jsp|asp|jspx|aspx)\?\w{1,8}=\d{1,10} HTTP/1\.1/";flowbits:isset, bx_first_get_resp; flowbits:set, bx_second_get_req; noalert;classtype:web-attack; sid:3000022; rev:1; metadata:created_at 2019_11_20,updated_at 2019_11_20;)
alert http any any -> any any(msg:"MALWARE-BACKDOOR Behinder webshell online detected"; flow:established,to_client; pcre: "/\r\n\r\n[A-Za-z0-9]{16}$/"; content:"Content-Length: 16"; fast_pattern; nocase; flowbits: isset,bx_second_get_req; flowbits:set, bx_second_get_resp; noalert;classtype:web-attack; sid:3000023; rev:1; metadata:created_at 2019_11_20,updated_at 2019_11_20;)
alert http any any -> any any(msg:"MALWARE-BACKDOOR Behinder webshell online detected"; flow:established,to_server; content:"POST"; http_method; pcre:"/\.(php|jsp|asp|jspx|aspx) HTTP/1\.1/"; flowbits:isset, bx_second_get_resp;flowbits:set, bx_first_post_req; noalert; classtype:web-attack; sid:3000024;rev:1; metadata:created_at 2019_11_20, updated_at 2019_11_20;)
alert http any any -> any any(msg:"MALWARE-BACKDOOR Behinder webshell online detected"; flow:established,to_client; pcre: "/[^\w\s><=\-'"\:\;\,\!\(\)\{\}][\w]{2}[^\w\s><=\-'"\.\:\;\,\!\(\)\{\}][a-zA-Z\d]{2}/";content: "200 OK"; content: "Content-Type: text/html";flowbits: isset, bx_first_post_req; classtype:web-attack; sid:3000025; rev:1;metadata:created_at 2019_11_20, updated_at 2019_11_20;)
alert http any any -> any any(msg:"MALWARE-BACKDOOR Behinder webshell-jspx online"; flow:established,to_server; pcre:"/\r\n\r\n[a-zA-Z\d\+\/]{10,}\/[a-zA-Z\d\/]{50}/"; content:"Content-Type: application/octet-stream"; fast_pattern; flowbits:isset, bx_second_get_resp; flowbits: set, bx_req_jspx; noalert;classtype:web-attack; sid:3000026; rev:1; metadata:created_at 2019_11_20,updated_at 2019_11_20;)
alert http any any -> any any(msg:"MALWARE-BACKDOOR Behinder webshell-jspx online"; flow:established,to_client; pcre:"/[^\w\s><=\-'"\:\;\,\!\(\)\{\}][\w]{2}[^\w\s><=\-'"\.\:\;\,\!\(\)\{\}][a-zA-Z\d]{2}/";content: "200 OK"; content: "Content-Type: text/xml";fast_pattern; flowbits: isset, bx_req_jspx; classtype:web-attack; sid:3000027;rev:1; metadata:created_at 2019_11_20, updated_at 2019_11_20;)
From:https://www.cnblogs.com/congcon/p/18361024
本文地址: http://www.shuzixingkong.net/article/1722
0评论
提交 加载更多评论
其他文章 OpenTelemetry 实战:gRPC 监控的实现原理
前言 最近在给 opentelemetry-java-instrumentation 提交了一个 PR,是关于给 gRPC 新增四个 metrics: rpc.client.request.size: 客户端请求包大小 rpc.client.response.size:客户端收到的响应包大小 rpc
OpenTelemetry 实战:gRPC 监控的实现原理 OpenTelemetry 实战:gRPC 监控的实现原理 OpenTelemetry 实战:gRPC 监控的实现原理
LoRA大模型微调的利器
LoRA模型是小型的Stable Diffusion模型,它们对checkpoint模型进行微小的调整。它们的体积通常是检查点模型的10到100分之一。因为体积小,效果好,所以lora模型的使用程度比较高。
LoRA大模型微调的利器 LoRA大模型微调的利器 LoRA大模型微调的利器
LLM大模型基础知识学习总结
在这个已经被AI大模型包围的时代,不了解一点大模型的基础知识和相关概念,可能出去聊天都接不上话。刚好近期我也一直在用GPT和GitHub Copilot,也刚好对这些基础知识很感兴趣,于是学习了一下,做了如下的整理总结,分享与你!
LLM大模型基础知识学习总结 LLM大模型基础知识学习总结 LLM大模型基础知识学习总结
1p-frac:已开源,仅用单张分形图片即可媲美ImageNet的预训练效果 | ECCV 2024
分形几何是一个数学分支,主要应用于作图方面。一般来说,分形经过无数次递归迭代后的结果。比如取一条线段,抹去中间的三分之一,会得到长度是原三分之一长的两条线段,中间隔着相同长度的间隙。然后重复这个动作,直到所有的线段都被抹掉,就将会得到被以固定模式出现的间隙隔开的无限多的点,这就是康托尔集合。 目前有
1p-frac:已开源,仅用单张分形图片即可媲美ImageNet的预训练效果 | ECCV 2024 1p-frac:已开源,仅用单张分形图片即可媲美ImageNet的预训练效果 | ECCV 2024 1p-frac:已开源,仅用单张分形图片即可媲美ImageNet的预训练效果 | ECCV 2024
manim边学边做--曲线类
manim中曲线,除了前面介绍的圆弧类曲线,也可以绘制任意的曲线。 manim中提供的CubicBezier模块,可以利用三次贝塞尔曲线的方式绘制任意曲线。 关于贝塞尔曲线的介绍,可以参考:https://en.wikipedia.org/wiki/B%C3%A9zier_curve。 本文主要介绍
manim边学边做--曲线类 manim边学边做--曲线类 manim边学边做--曲线类
(八)Redis 主从复制、切片集群
一、主从复制 1、主从关系 都说的 Redis 具有高可靠性,这里有两层含义:一是数据尽量少丢失,二是服务尽量少中断。AOF 和 RDB 保证了前者,而对于后者,Redis 的做法就是将一份数据同时保存在多个实例上。为了保证数据一致性,Redis 提供了主从库模式,并采用读写分离的方式,如图 2、主
(八)Redis 主从复制、切片集群 (八)Redis 主从复制、切片集群 (八)Redis 主从复制、切片集群
.NET 8.0 文档管理系统网盘功能的实现
前言 大家好,今天推荐一个文档管理系统Dorisoy.Pan。 Dorisoy.Pan 是一个基于 .NET 8 和 WebAPI 构建的文档管理系统,它集成了 Autofac、MediatR、JWT、EF Core、MySQL 8.0 和 SQL Server 等技术,以实现一个简单、高性能、稳定
.NET 8.0 文档管理系统网盘功能的实现 .NET 8.0 文档管理系统网盘功能的实现 .NET 8.0 文档管理系统网盘功能的实现
Electron32-ViteOS桌面版os系统|vue3+electron+arco客户端OS管理模板
基于electron32+vue3 setup+pinia2桌面端os管理解决方案ElectronVue3OS。 vue3-electron32-os全新原创Electron32+Vite5+Vue3+Pinia2+ArcoDesign+Echarts+Swiper搭建桌面版os管理模板。内置mac
Electron32-ViteOS桌面版os系统|vue3+electron+arco客户端OS管理模板 Electron32-ViteOS桌面版os系统|vue3+electron+arco客户端OS管理模板 Electron32-ViteOS桌面版os系统|vue3+electron+arco客户端OS管理模板