冰蝎shell_红蓝对抗——加密Webshell“冰蝎”攻防

本文深入探讨了加密Webshell“冰蝎”的加密原理、流量特征及检测方案。冰蝎通过动态二进制加密隐藏攻击特征,逃避传统WAF和WebIDS检测。检测策略包括流量侧的特征匹配、应用侧的OpenRASP检测以及主机侧的webshell文件扫描和审计日志监控。尽管每种策略都有局限性,但结合多种手段能构建多层次防御体系,提升网络安全防护能力。
摘要由CSDN通过智能技术生成

演练中,第一代webshell管理工具“菜刀”的攻击流量特征明显,容易被安全设备检测到,攻击方越来越少使用,加密webshell正变得越来越流行,由于流量加密,传统的WAF、WebIDS设备难以检测,给威胁监控带来较大挑战。这其中最出名就是“冰蝎”,“冰蝎”是一款动态二进制加密网站管理客户端,演练中给防守方造成很大困扰,本文将对“冰蝎”的加密原理、流量特征、检测方案进行探讨。

0x01 “冰蝎”介绍&加密原理

“冰蝎”项目地址:https://github.com/rebeyond/Behinder

“冰蝎”目前最新版本为v2.1,兼容性已经日益完善,加密不再依赖PHP openssl扩展功能,同时支持了简单的ASP。主体功能方面包括虚拟终端、socks代理、文件管理、反弹shell、数据库管理等等,功能强大。

加密原理方面,以PHP环境为例,

《利用动态二进制加密实现新型一句话木马之PHP篇》这篇文章对冰蝎的原理已经做了详细的分析,简要介绍一下加密流程:

首先客户端以Get形式发起带密码的握手请求,服务端产生随机密钥并写入Session。

客户端将源代码,如assert|eval("phpinfo();”)利用AES加密,发送至服务端,服务端收到之后先进行AES解密,得到中间结果字符串assert|eval("phpinfo();")。

服务端利用explode函数将拆分为一个字符串数据,索引为0的元素为字符串assert,索引为1的元素为字符串eval("phpinfo();")。

以可变函数方式调用索引为0的数组元素,参数为索引为1的数组元素,即为assert("eval(\"phpinfo;\")") 。

0x02 加密Webshell流量分析

通过wireshark进行抓包分析,流量如下:

按照流程,客户端首先get请求生产随机密钥,server返回生成的16位密钥:0x7037af5d95561f3d,对应的session ID为 466geshjq6hr15kbmd72ju24g5。

得到密钥后,客户端对需要执行的命令进行AES加密,加密后的通讯流量如下,没有任何攻击特征,安全设备难以根据特征进行检测:

我们用密钥对该信息进行解密:

发现解密后执行的命令被base64编码了,进一步进行base64解码后,得到执行的命令如下:

@error_reporting(0);

function getSafeStr($str){

$s1 = iconv('utf-8','gbk//IGNORE',$str);

$s0 = iconv('gbk','utf-8//IGNORE',$s1);

if($s0 == $str){

return $s0;

}else{

return iconv('gbk','utf-8//IGNORE',$str);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值