攻防演练的Webshell利器——冰蝎V4分析 

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中取出该客户端对应的密钥进行解密操作。

主要代码如下:

1660699633_62fc43f17eaa03f3ae84b

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

2. 客户端对Payload进行加密

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

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

  • 读取二进制的payload,并将其使用AES加密(密钥为上一步向服务器请求到的密钥);
  • 通过Base64进行编码:
1660699634_62fc43f271709ff9d90aa

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

1660699634_62fc43f2f0af6742bc53c

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

1660699635_62fc43f396ee5e8d730a8
1660699636_62fc43f439c92eaf51615

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

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

1660699637_62fc43f50321342aaa88f
1660699637_62fc43f5b0cf3c09b89f7

小结:

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

04、防护思路

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

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

本文作者:聚铭网络, 转载请注明来自FreeBuf.COM

主题测试文章,只做测试使用。发布者:1869,转转请注明出处:https://community.anqiangkj.com/archives/23531

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年8月26日 下午3:09
下一篇 2022年8月27日 下午7:48

相关推荐