冰蝎动态二进制加密WebShell基于流量侧检测方案
概述
冰蝎是一款新型动态二进制加密网站工具。目前已经有6个版本。对于webshell的网络流量侧检测,主要有三个思路。一:webshell上传过程中文件还原进行样本分析,检测静态文件是否报毒。二:webshell上线或建立连接过程的数据通信流量。三:webshell已连接后执行远程控制命令过程的数据通信流量。本文通过分析多个历史冰蝎版本及五种脚本(asp|aspx|jsp|jspx|php),结合第二点检测冰蝎上线的静态特征,并总结部分snort规则。
冰蝎通讯原理
冰蝎采用AES加密,很多文章已有介绍,并有对应解密脚本,这里不再赘述。
冰蝎上线数据包
V1.0版本冰蝎连接
抓取到的通信流量如下:

Content-Type: application/octet-stream表示以二进制流传输数据。GET请求体返回16位大小写字母或数字。
V1.1版本冰蝎连接

冰蝎工具从V1.1开始(包含V1.1)新增随机UserAgent支持,每次会话会从17种常见UserAgent中随机选取。这个版本的pass 与其他版本不同,pass(密码) 后跟10位数字。
V2.0.1版本冰蝎连接
php shell上线数据包

asp shell 上线数据包

特殊的数据包
特殊包类型一
仅在php shell 上线时发现。测试版本 V2.0和V2.0.1
php shell上线时会产生两个POST请求和响应。第一个POST 响应无响应体,第二个POST响应有响应体。这里需要额外写snort判断。用flowbits 设置多包联合检测。
第一个POST响应

第二个POST响应

特殊包类型二
有两条很久以前抓的冰蝎包,写的snort一直匹配不上,忘了是哪个版本。仔细一看,居然没有Content-Length字段。php shell 上线,GET响应居然无强特征 ”Content-Length: 16,查资料说如果是 chunked 加密的,可能就不显示这个content-length字段了。这个特殊类型我选择性忽视。
下面也是php GET响应 无强特征 “Content-Length: 16″,看上去多了几个字符,是显示的问题,其实并没有多。

静态特征
弱特征1:密钥传递时URL参数

"\.(php|jsp|asp|jspx|aspx)\?\w{1,8}=\d{1,10}HTTP/1\.1"
这里 \w{1,8} 表示密码的长度,可根据实际需求及探针性能调整。\d{1,10} 表示密码后面跟的数字长度,为了兼容V1.0和V1.1,用1-10。如果只检测V2.1版本,可以调整为 \d{2,3}。
弱特征2:加密时的URL参数
在加密通讯过程中,没有URL参数。是的,没有参数本身也是一种特征。
"\.(php|jsp|asp|jspx|aspx) HTTP/1.1"
本文暂未使用此特征。
强特征3:Accept字段(可绕过)
Accept是HTTP协议常用的字段,但冰蝎默认Accept字段的值却很特殊,这个特征存在于冰蝎的任何一个通讯阶段。
Accept: text/html,image/gif, image/jpeg, *; q=.2, */*;q=.2
冰蝎支持自定义HTTP Header,因此该特征可以被绕过。
可以针对此特征做专门的检测,因为大多数人都没有修改Accept 习惯。
本文暂未使用此特征。
强特征4:UserAgent字段(可绕过)
冰蝎工具从V1.1开始(包含V1.1)新增随机UserAgent支持,每次会话会从17种常见(较老)UserAgent中随机选取。
如果发现历史流量中同一个源IP访问某个URL时,命中了以下列表(下载地址)中多个UserAgent,那基本确认就是冰蝎了。
大多数人都没有修改Accept 习惯。但冰蝎支持自定义UA,该特征可以被绕过。
本文暂未使用此特征。
强特征5:传递的密钥
加密所用密钥是长度为16的随机字符串,大小写字母+数字组成。密钥传递阶段,密钥存在于get请求的响应体中。需要划重点的是,不管哪种冰蝎脚本的shell,上线过程客户端都是要与服务器商量2次密码的,也就是会发2个get请求,并返回2次 16位的key。 
因此密钥特征如下:
"\r\n\r\n[A-Za-z0-9]{16}$"
还有一个特征,get请求响应体长度一定是16位的。
"Content-Length: 16"
弱特征6:加密数据上行
jsp|php|jspx 加密数据上行特征如下:
“\r\n\r\n[a-zA-Z\d\+\/]{10,}\/[a-zA-Z\d\/]{50}"
数字50表示至少出现50字符才匹配,可根据IDS设备实际情况及需求调整。
jsp加密流量上行

php加密流量上行
jspx加密流量上行
asp,aspx 不可用上面的特征。
aspx 加密上行流量独有。为减少误报,建议检查加密上行和下行,此特征同样适用aspx加密流量下行。
数据包中的 “.” 其实是不可见字符。
”[^\w\s><=\-'"\:\;\,\!\(\)\{\}]”
asp加密流量上行

aspx加密流量上行

弱特征7:加密数据下行
jsp加密流量下行

这里使用正则的“非”匹配二进制非常见字符。
" [^\w\s><=\-'"\:\;\,\!\(\)\{\}][\w]{2}[^\w\s><=\-'"\.\:\;\,\!\(\)\{\}][a-zA-Z\d]{2}"
[^\w\s><=\-'"\:\;\,\!\(\)\{\}] 表示不可见字符
[\w]{2} 表示特殊符号前至少有2个字符,经过大量对比分析,发现可以匹配的字符串例如:
“不可见字符”+”VO?ES”
“不可见字符”+”Fl#fB”
“不可见字符”+”9w+rv”
“不可见字符”+”6G/SW”
“不可见字符”+”mN]ss”
“不可见字符”+”ss[ss”
“不可见字符”+”gV|05”
“不可见字符”+”Iz\8o”
......
且返回状态码 200 OK
另外对于 php|jsp|asp|aspx,响应的Type特征还有
"Content-Type: text/html"
jspx稍有特殊。
jspx加密流量下行

"Content-Type:text/xml"
弱特征8:长连接(可绕过)
冰蝎通讯默认使用长连接,避免了频繁的握手造成的资源开销。因此默认情况下,请求头和响应头里都会带有:
Connection: Keep-Alive
这个特征存在于冰蝎的任何一个通讯阶段。
本文暂未使用此特征。
冰蝎snort规则检测思路

一.从建立连接的第一个GET请求的响应体开始检测,
1.响应体必chujian0定为16位大小写字母或数字,
2.返回状态码200 OK
可以作为IDS的入口正则,防止接入过多流量影响IDS性能。
二.之后检测第二个GET请求,
1.满足上面提取的GET请求弱特征
三.检测第二个GET响应体特征,特征与步骤一一致,但应满足递进关系。
四.这里分为2种情况,
第一种情况,
1.检测POST请求通用特征
2.检测POST响应特征,匹配到则判定为冰蝎 asp|jsp|aspx|php 上线。
第二种情况(不满足第一种情况),
1.检测POST请求 jspx 特征
2.检测POST响应 jspx 特征
冰蝎snort规则总结
综上
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;)
参考链接
冰蝎动态二进制加密WebShell基于流量侧检测方案的更多相关文章
- 冰蝎动态二进制加密WebShell特征分析
概述 冰蝎一款新型加密网站管理客户端,在实际的渗透测试过程中有非常不错的效果,能绕过目前市场上的大部分WAF.探针设备.本文将通过在虚拟环境中使用冰蝎,通过wireshark抓取冰蝎通信流量,结合平时 ...
- 【原创】利用动态二进制加密实现新型一句话木马之PHP篇
概述 本系列文章重写了java..net.php三个版本的一句话木马,可以解析并执行客户端传递过来的加密二进制流,并实现了相应的客户端工具.从而一劳永逸的绕过WAF或者其他网络防火墙的检测. 本来是想 ...
- 利用shiro反序列化注入冰蝎内存马
利用shiro反序列化注入冰蝎内存马 文章首发先知社区:https://xz.aliyun.com/t/10696 一.shiro反序列化注入内存马 1)tomcat filter内存马 先来看一个普 ...
- 内网安全之横向移动(冰蝎&&msf&&IPC$)
1.冰蝎介绍 冰蝎是一款目前比较流行的Webshell管理工具,在2021年更新的2021.4.20 v3.0 Beta 9 版本中去除了动态密钥协商机制,采用预共享密钥,载荷全程无明文.因其优秀的加 ...
- MacOS下如何优雅的使用冰蝎
因为冰蝎也是使用 JAVA 写的跨平台应用程序,我们可以借助 macOS 自带的 自动操作 automator.app 来创建一个应用程序. 前言: 冰蝎是一种新型的Webshell连接工具,在日常的 ...
- 记一次解密wireshark抓取的冰蝎通信流量
一.关于冰蝎 1.1 简单介绍 冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端.老牌 Webshell 管理神器——中国菜刀的攻击流量特征明显,容易被各类安全设备检测,实际场 ...
- 冰蝎&哥斯拉 流量特征分析
1.冰蝎(Behinder) 下载链接:https://github.com/rebeyond/Behinder/releases 截止至我发贴时,冰蝎最新版本是3.0,客户端兼容性有所提升(但仍不是 ...
- 【原创】冰蝎v3.0操作使用手册
写在前面 近期冰蝎更新了内网穿透模块中的一些功能,有不少朋友不知道参数怎么填,希望能出一个使用指导手册,就借这个机会写一个"说明书"(文中有大量演示动图,请耐心等待加载). 基本信 ...
- 思科安全:加密流量威胁检测、加密流量威胁和恶意软件检测、识别无线干扰或威胁、Talos 情报源可加强对已知和新型威胁的防御、分布式安全异常检测
思科DNA竞品比较工具 您的网络能够驱动数字化转型吗? 根据IDC调查,45%的受调研公司计划在未来两年内做好网络数字化的准备.查看数字化网络带来的结果和商业价值. 下载报告 思科 HPE 华为 Ar ...
随机推荐
- leetCode练题——9. Palindrome Number
1.题目 9. Palindrome Number Determine whether an integer is a palindrome. An integer is a palindrome ...
- 2019年 我的phper之路,时光没了,头发还在
前言 曾经我认为最快的是麦迪的第一步,后来我觉得 7 酱逃跑速度更快,现在我懂了,原来我们都在跟时间赛跑. 年底了,给自己一个 "交代" 吧 2019 的我 2019 年写了 很多 ...
- ios APP进程杀死之后和APP在后台接收到推送点击跳转到任意界面处理
https://www.jianshu.com/p/ce0dc53eb627 https://www.cnblogs.com/er-dai-ma-nong/p/5584724.html github: ...
- spring security几大核心组件
一.SecurityContext 安全上下文,用户通过Spring Security 的校验之后,验证信息存储在SecurityContext中 SecurityContext接口只定义了两个方法, ...
- PAT T1002 Business
背包问题,把任务按截止日期排序,再按背包问题处理~ #include<bits/stdc++.h> using namespace std; ; struct node { int c; ...
- MySQL(window10)加载配置文件的顺序
mysql加载配置的顺序为:(mysql --help中有详细的说明) C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf D:***\my ...
- MFC中写入汉语到文本文档
目录 1.首先要引入头文件 2.在打开文件后,要进行设置,然后在关闭文档时,进行设置的后处理 3.输出的文本 1.首先要引入头文件 #include <locale> 2.在打开文件后,要 ...
- C. Swap Letters 01字符串最少交换几次相等
C. Swap Letters time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- loadrunner 接口测试实战
直接上代码: web_reg_save_param("Name", //这个函数是为了获取服务器返回的值.我这个接口的返回值是这样子的 //将服务器返回的值放在Name里,Na ...
- 820算法复试 Eratasthene 质数筛选
Eratasthene 学问之道无他,求其放心而巳矣 https://blog.csdn.net/qq_37653144/article/details/80470029 class Solution ...