目录

  • 一、冰蝎4.0☕️
  • 二、流量特征问题☕️
  • 三、工作流程☕️
  • 四、演示过程☕️
  • 五、流量检测☕️

一、冰蝎4.0☕️

 冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端,由于通信流量被加密,传统的WAF、IDS 设备难以检测,给威胁狩猎带来较大挑战。冰蝎其最大特点就是对交互流量进行对称加密,且加密密钥是由随机数函数动态生成,因此该客户端的流量几乎无法检测

 同时冰蝎v4.0相对于3.0版本,更新了较多内容,其中包括了开放了传输协议的自定义功能

下载地址:https://github.com/rebeyond/Behinder/releases

二、流量特征问题☕️

 在流量层,冰蝎的aes特征一直是厂商查杀的重点,在主机层,aes相关的API也是一个强特征。既然是特征,那就一定存在一个一成不变的常量,那我们就把这个特征泛化一下,让他成为变量。为了一劳永逸解决这个问题,v4.0版本提供了传输协议自定义功能,让用户对流量的加密和解密进行自定义,实现流量加解密协议的去中心化。v4.0版本不再有连接密码的概念,你的自定义传输协议的算法就是连接密码

三、工作流程☕️

看一下冰蝎Payload流转的流程图:

1、本地对Payload进行加密,然后通过POST请求发送给远程服务端;
2、服务端收到Payload密文后,利用解密算法进行解密;
3、服务端执行解密后的Payload,并获取执行结果;
4、服务端对Payload执行结果进行加密,然后返回给本地客户端;
5、客户端收到响应密文后,利用解密算法解密,得到响应内容明文。

 由上述流程可知,一个完整的传输协议由两部分组成,本地协议和远程协议。由于客户端使用Java开发,因此本地协议的加解密算法需要用Java实现。远程协议根据服务端语言类型,可能为Java、PHP、C#、ASP。无论用哪种语言,同一个名称的传输协议,本地和远程的加解密逻辑应该是一致的,这样才能实现本地加密后,远程可以成功解密,远程加密后,本地同样也可以解密(因此如果修改默认的aes协议的key,则需要同时修改本地和远程的加密函数和加密函数中的key)

一个传输协议必须包含一对本地加解密函数,至少包含一对远程加解密函数(Java、PHP、C#、ASP中的一个或者多个)

如下是传输协议中的本地加解密函数与远程加解密函数:

传输协议的加解密函数名称分别为EncryptDecrypt,且都只有一个入参,参数类型为二进制字节流。在函加密数体内可以对字节流做任何加密,比如aes、rsa或者各种封装、拼接、自定义算法等等,最终将加密结果返回。在解密函数中利用对称算法将加密函数的结果进行解密,并将解密结果返回

四、演示过程☕️

 可以注意到,冰蝎v4.0版本没有再附带server端代码,因为加解密函数是不固定的,因此服务端也是动态生成的

命令行环境运行冰蝎

java -jar Behinder.jar

打开如下的GUI界面

生成木马,点击左上角的传输协议,然后选择default_aes协议,点击生成服务端,即可创建server服务端文件,同时生成木马文件

为了方便加解密一致性校验,冰蝎提供了即时加解密验证功能,输入加解密函数以后,可直接在窗口下方进行验证


生成server服务端文件里面的木马

将生成的PHP木马文件上传到PHP环境的网站,然后在工具页面,鼠标右击新增shell,确定木马文件上传的URL、上传的脚本类型、生成脚本的协议,保存即可


成功连接则显示已连接


这里新增的功能,认为也是比较好的,平行空间,同时也有一些扩展功能

五、流量检测☕️

1、Accept字段
流量特征
Accept: application/json, text/javascript, */*; q=0.01


检测思路:
 浏览器可接受任何文件,但最倾向application/json 和 text/javascript

2、Content-Type
流量特征

Content-type: Application/x-www-form-urlencoded

检测思路:
 可以把这个字段作为一个弱特征,辅助其他特征来检测

3、User-agent 字段
流量特征

冰蝎设置了10种User-Agent,每次连接shell时会随机选择一个进行使用

检测思路:
 在较短较简单的content字段后加上fast_pattern关键字则会优先匹配这个content,避免浪费太长时间在匹配user-agent上

snort编写可以用content:“User-Agent”;content:“浏览器版本”,来匹配相应的十个浏览器

4、端口
流量特征

 冰蝎与webshell建立连接的同时,javaw也与目的主机建立tcp连接,每次连接使用本地端口在49700左右(就是比较大的端口),每连接一次,每建立一次新的连接,端口就依次增加

检测思路:
 可以对符合该范围内的端口告警

5、PHP webshell 中存在固定代码
流量特征

$post=Decrypt(file_get_contents("php://input"));
eval($post);

检测思路:
 content字段中,将eval($post)作为流量特征纳入

6、长连接
流量特征

冰蝎通讯默认使用长连接,避免了频繁的握手造成的资源开销。默认情况下,请求头和响应头里会带有 Connection

Connection: Keep-Alive


检测思路:
 可以作为辅助的流量特征

7、连接密码
流量特征:

默认时,所有冰蝎4.0 webshell都有e45e329feb5d925b 一串密钥,该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond

8、webshell特征
JSP webshell代码特征


PHP webshell代码特征

9、请求和响应
流量特征

☕️参考文章:

1、冰蝎v4.0传输协议详解
2、冰蝎4.0特征分析及流量检测思路

冰蝎Behinder_v4.0相关推荐

  1. 红队大杀器 Behinder_v4.0(冰蝎4.0)

    Behinder_v4.0 GitHub : https://github.com/rebeyond/Behinder/releases/tag/Behinder_v4.0 修复 1.修复了在zimb ...

  2. 冰蝎v4.0.6下载及使用方法

    冰蝎v4.0.6下载地址:https://github.com/rebeyond/Behinder/releases/tag/Behinder_v4.0.6 下载完之后打开Behinder.jar 1 ...

  3. base64还原_冰蝎3.0流量分析与还原

    希望这篇文章可以真正帮助那些被打穿的单位识别与溯源. phpshell 与冰蝎2.0在建立连接时随机生成AES密钥同时明文交换不同是,冰蝎3.0的AES密钥为连接密码32位md5值的前16位,默认连接 ...

  4. 冰蝎v4.0已经更新,在Java18下也能启动冰蝎。

    因为冰蝎需要JavaFX库,java11以上已经删除了这个库,所以直接就使用高版本的java运行不了冰蝎. 那只能去下载FX库,百度上全是广告,直接谷歌上一搜索就出来了 地址:https://gluo ...

  5. 冰蝎3.0的使用方法与默认密码更改方法

    前言 今天刚下载了最新版的冰蝎3.0 beta2,但是一直连不上,后来问了公司的大哥才知道了原因,这里做一个记录,希望对你有所帮助. 这篇文章比较基础,主要面向新手,技术含量较低主要为操作流程. 首先 ...

  6. Shell管理工具流量分析-下(冰蝎 3.0、哥斯拉 4.0 流量分析)

    书接上篇,再分析冰蝎 2.0 之后来看一看 3.0 拥有那些新特性 文章目录 冰蝎 3.0流量 功能原理分析 哥斯拉 使用介绍 PHP加密器分析 推荐阅读 冰蝎 3.0流量 冰蝎 3.0 PHP sh ...

  7. 冰蝎3.0 页面存在,但是无法获取密钥

    下载链接:https://github.com/rebeyond/Behinder/releases 此次改版较大,更新日志: 我在尝试时PHP马时,一直都在报错: 于是我去github下查看issu ...

  8. n.m8yun.com/list/sy.php?p=1,开胃菜:冰蝎2.0流量分析

    #coding:utf-8 import base64 from Crypto.Cipher import AES import binascii import json #注:python3 安装 ...

  9. 32位md5解密_冰蝎特征检测及报文解密

    点击"蓝字"关注我们,不迷路~‍‍前言 19年驻场于某金融单位.参加19年9月.11月两次攻防演练,负责攻防演练组织.技术支持和复盘.期间,多个攻击队伍使用冰蝎 webshell ...

最新文章

  1. 图灵测试,时至今日还有意义吗?
  2. linux下配置 ITK
  3. The Singleton of Design Pattern单态模式
  4. 实训09.11:java重点内容介绍
  5. Module build failed: Error: Cannot find module ‘node-sass‘ Require stack报错解决
  6. linux sar监控脚本,linux-利用sar进行性能监控
  7. git、cocoapod组件化开发常用命令
  8. Node.js 应该用在什么地方
  9. sublime 如何使用less_【图文】5分钟可以学会在vue里使用sass?
  10. 在火狐浏览器里怎么看请求头
  11. MusicXML文档翻译(持续更新)
  12. 怎样写商业计划书 【转载】
  13. FCC拆解诺基亚808 PureView 内部细节全曝光
  14. 5G钢铁渐入佳境:中国电信推动从“1”迈向“N”
  15. 用计算机写作文主题,《用计算机写作文》教学设计(周未定)
  16. magento常用插件
  17. 文章推荐列表(个人收藏)
  18. WPS和office办公软件的word同时存在时,想用office的word的解决办法
  19. Python中的模块2
  20. STM32F0xx_PWR低功耗配置详细过程

热门文章

  1. 托福口语_新航道_刘莹_task 3 task5
  2. modbus RTU 与OPC-UA、OPC-DA、MQTT协议区别对比
  3. 轻松搭建一个BI销售数据分析系统
  4. 平面设计中的抠图技法与修图思路
  5. 响应式网页设计的概念和应用
  6. 一台计算机的屏幕面积是多少,一台电脑屏幕的面积约是12多少平方面积单?
  7. TI C66x DSP 系统events及其应用 - 1
  8. 数据库连接_由浅入深搭建Mybatis框架
  9. 如何调整word分栏后,左右不平齐的现象
  10. Windows PowerShell 使用SDKMAN