freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

攻防演练的Webshell利器——冰蝎V4分析
2022-08-17 09:27:13
所属地 江苏省

01、冰蝎简介

最近攻防演练期间,Webshell工具界再次祭出大杀器“BehinderV4.0”。看来蓝队的头发又要“保不住”了;看不完的流量包,解不完的绕过编码。

本次冰蝎新增了5种加密方式xor、xor_base64、aes、json和image。本文通过对该工具的分析,来分享一下对于防护此类工具的思考。

02、通讯过程

先看下基本过程:

1. 客户端向服务端请求密钥;

2. 服务端记录下客户端相关信息,生成随机密钥,并将两份消息发送给客户端;

3. 客户端将收到的密钥通过AES对称加密算法,对payload攻击脚本进行加密。然后再进过base64编码对加密过后对二进制流进行编码。发送给服务端;

4. 服务端通过base64解码以后,再利用刚刚的密钥解密,获得payload并执行。将执行结果加密返回给客户端;

5. 客户端解密获得最终消息。

03、案例讲解

1. 客户端向服务端请求密钥

客户端在运行时,首先以GET请求携带密码字段向服务器发起握手请求,获取此次会话的加密密钥和Cookie值。加密密钥用来对后续发送的Payload进行AES加密;上文我们说到服务器端随机产生密钥之后会存到当前Session中,同时会以set-cookie的形式给客户端一个SessionID,客户端获取密钥的同时也要获取该Cookie值,以用来标识客户端身份,服务器端后续可以通过客户端传来的Cookie值中的SessionID来从Session中取出该客户端对应的密钥进行解密操作。

主要代码如下:

image.png

客户端每次都会通过服务器发来的随机密钥。对攻击payload进行加密。

2. 客户端对Payload进行加密

案例中给出的是一个执行打开当前文件的命令(open ./),下面给出Payload小样:image.png

冰蝎的加密思路可以分为如下几个步骤:

  • 读取二进制的payload,并将其使用AES加密(密钥为上一步向服务器请求到的密钥);

  • 通过Base64进行编码:

image.png

其实到这一步就可以看出来冰蝎的一个思路流程图(左侧为客户端,右侧为服务器):

image.png

AES的密钥是随机生成的,下面的一段代码摘自冰蝎作者的密钥生成模块:

image.png

image.png

查看一下运行的随机结果,蓝队是不是压力突然就上来了?流量的特征完全随机。

前面对于客户端铺垫了这么多,那现在就看看服务端的执行结果:

image.png

image.png

小结:

到这里,基本上讲完了冰蝎4.0版本这个工具的牛X的地方啦!将Payload加密,但是本文并非是工具编写的教程,所以实现细节的话还是看大佬的原文吧!https://xz.aliyun.com/t/2744。

04、防护思路

因为密钥的变化,直接抓取Payload流量过程中的特征几乎是不太可能的。但是如果将可疑流量保存下来,获取密钥并进行解密,那也不是不可能的。

还有一种难度系数较小的方案是,即从文件上传的角度来防护。

# web安全 # webshell # web漏洞
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录