草庐IT

冰蝎Behinder_v4.0

迷途羔羊pro 2023-07-30 原文

目录


一、冰蝎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. ruby-on-rails - 从 Rails 2.3 升级到 Rails 4.0 - 2

    我们有一个目前在Rails2.3.12版和Ruby1.8.7版上运行的应用程序。我们想将我们的应用程序更新到Rails4.0和Ruby2.1.0。我们有大约200个模型和150个Controller。我想知道升级过程需要多大的努力。您还可以提供升级可以遵循的步骤。我们应该先升级Ruby然后再升级Rails还是相反? 最佳答案 您想要实现的目标将是史诗般的努力。我无法为您提供分步说明,因为不可能在一个答案中涵盖所有情况。我建议不要同时升级Ruby和Rails,而是分步升级。升级本身的复杂性是巨大的,但只要您的应用程序具有合理的测试覆盖

  2. ruby-on-rails - Rails 4.0 中的路由、路径助手和 STI - 2

    这让我发疯!我有两个模型Lion和Cheetah。两者都继承自Wildcat。classWildcat这里用的是STI。它们都通过ControllerWildcatsController进行处理。在那里,我有一个before_filer从params[:type]和所有其他东西中获取wildcat的type以使用正确的类.在我的routes.rb中,我创建了以下路线:resources:lions,controller:'wildcats',type:'Lion'resources:cheetahs,controller:'wildcats',type:'Cheetah'如果我现在想使

  3. ruby-on-rails - rails 4.0 上的 haml-rails? - 2

    我想知道是否有人在使用Rails4.0中的haml-railsgem时遇到过任何问题。有一个RailsCast那说有一些问题,但没有更多提及这一点。托管在GitHub上的gem也没有明确提及对Rails4.0的支持。那么这方面的进展如何? 最佳答案 我在Rails4项目中使用haml-rails(0.4),一切正常 关于ruby-on-rails-rails4.0上的haml-rails?,我们在StackOverflow上找到一个类似的问题: https:/

  4. ruby-on-rails - rails 4.0 中为删除操作创建 link_to 的问题 - 2

    这是我在Rails中的第一个项目,即创建一个表来存储有关游戏的数据。我能够显示表格中有关获胜者得分、失败者得分等的数据。但是,我的表格列存在问题,其中包含每个游戏的删除链接。这是我在游戏Controller中删除方法的代码:defdelete@game=Game.find(params[:game])@game.destroy()redirect_to:action=>'index'end我的表格代码片段,其中包括link_to命令的行在我调用的路由文件中resources:games据我所知,这有助于生成基本路由。谁能帮我弄清楚为什么我的link_to不起作用?

  5. ruby-on-rails - bcrypt 错误 : Devise ruby 2. 0 和 rails 4.0 - 2

    当我尝试运行我的应用程序时,我不断收到此错误:C:/ruby-2.0.0-p195-i386-mingw32/lib/ruby/gems/2.0.0/gems/activesupport-4.0.0.rc1/lib/active_support/dependencies.rb:228:in`require':无法加载此类文件--2.0/bcrypt_ext(加载错误)有人要吗?-我正在尝试使用设计gem进行基本用户身份验证.. 最佳答案 我在Windows上更新到Ruby2.0.0+时遇到了这个错误。我能够通过卸载下载的所有版本的b

  6. 如何使React Router V4路由与React Transition Group(低级API)一起使用 - 2

    从ReactRouterV3过渡到V4后,我再也无法使ReactTransition组低级API工作。React路由器的文档显示了与CSS动画相关的高级API的示例,这些示例与低水平的JS风味不起作用。任何人都设法或知道让这个工作?看答案已经一个月了,所以我想您找到了自己的出路,但可能会对他人有所帮助。我创建了这个:https://www.npmjs.com/package/reeact-router-v4-transition在我遇到同样的问题之后。它在开关组件中提供了一种过渡组。从将开关更改为TransitionSwitch的Appart,它不需要大幅度更改。我将在接下来的几天(可能是星期

  7. ruby-on-rails - Rails 4.0 expire_fragment/缓存过期不起作用 - 2

    我一直在尝试使用Rails的缓存功能,但我无法使某些缓存片段过期,尽管它们似乎已过期。使用Rails教程站点中指出的“俄罗斯娃娃缓存”,我正在使用此配置我在release_controller.rbController中使外部缓存过期,我在其中使用expire_fragment("all_available_releases")使片段过期。我在更新、删除或添加条目的Controller的每个方法中都使用它。这是WEBrick的日志,尽管过期片段已在其中注册,但5行后过期片段被读取并使用,而这是不应该的。这个例子是在destroy调用之后。ProcessingbyReleasesCont

  8. ruby-on-rails - Rails 4.0 Strong Parameters 嵌套属性带有指向散列的键 - 2

    我在玩Rails4.xbeta并试图让嵌套属性与carrierwave一起工作。不确定我在做什么是正确的方向。四处搜索之后,最终查看了rails源代码和强大的参数,我发现了以下注释。#Notethatifyouuse+permit+inakeythatpointstoahash,#itwon'tallowallthehash.Youalsoneedtospecifywhich#attributesinsidethehashshouldbewhitelisted.https://github.com/rails/rails/blob/master/actionpack/lib/actio

  9. ruby-on-rails - TZInfo::DataSourceNotFound 在 Windows 上启动 Rails v4.1.0 服务器时出错 - 2

    我使用RubyonRailsv4.1.0创建了一个新应用程序。尝试在Windows上启动服务器或控制台时,遇到以下错误:$railsserverBootingWEBrickRails4.1.0applicationstartingindevelopmenton....Exitingc:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/tzinfo-1.1.0/lib/tzinfo/data_source.rb:199:in`rescueincreate_default_data_source':Notimezonedatasource

  10. javascript - v4 中的 d3 缩放功能问题 - 2

    我在使用v4时遇到D3中的缩放功能问题。它抛出一个错误,指出zoom.translate未定义。我主要使用此答案中的以下代码d3focusonnodeonclick,这对v3非常有效。但是,由于我在使用v3时遇到问题,因为它对源和节点采用字符串形式(而不是索引)的数据有限制D3JSONfilewithsourceandindexasstringsratherthanindices,我切换到v4..linksline{stroke:#999;stroke-opacity:0.6;}.nodescircle{stroke:#fff;stroke-width:1.5px;}varsvg=d3

随机推荐