• 冰蝎2,3及哥斯拉特征分析


    一、冰蝎2

    冰蝎是一款基于Java开发的动态加密通信流量的新型Webshell客户端。

    冰蝎的通信过程可以分为两个阶段:密钥协商和加密传输

    (1)第一阶段:密钥协商

    攻击者通过GET方式请求服务器密钥:

    这个是代码:

    这是服务端存储的$_SESSION变量

     (2)服务器使用密钥解密

    服务端使用随机数高16位作为密钥,并且存储到会话的$_SESSION变量中,并返回密钥给攻击者

    当我们输入命令操作后,请求方式就会变成POST

    这个是代码段:

    因为我本地是有openssl扩展的,所以执行else里面的代码段

    可以看到服务端用之前生成的密钥进行AES128解密请求的post数据

    这个是我大概写的一个输出脚本:

    base64解码:

     1 @error_reporting(0);
     2 function main($content)
     3 {
     4     $result = array();
     5     $result["status"] = base64_encode("success");
     6     $result["msg"] = base64_encode($content);
     7     $key = $_SESSION['k'];
     8     echo encrypt(json_encode($result),$key);
     9 }
    10 
    11 function encrypt($data,$key)
    12 {
    13     if(!extension_loaded('openssl'))
    14         {
    15             for($i=0;$i<strlen($data);$i++) {
    16                  $data[$i] = $data[$i]^$key[$i+1&15]; 
    17                 }
    18             return $data;
    19         }
    20     else
    21         {
    22             return openssl_encrypt($data, "AES128", $key);
    23         }
    24 }$content="713fd3e0-d2c2-4536-8391-ae12c124a44f";
    25 main($content);

    然后服务端脚本继续往下执行:

    这几行的代码就十分好懂了,用分割线生成数组,然后取数组第1位元素的值,最后eval执行

    显然它将返回结果也加密了

    (3)特征总结

    a.ACCEPT字段

    冰蝎2默认Accept字段的值很特殊,而且每个阶段都一样

    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

    b.UA字段

    冰蝎内置了十余种 UserAgent ,每次连接 shell 会随机选择一个进行使用。但都是比较老的,容易被检测到,但是可以在burp中修改ua头。

    c.Content-Length

    Content-Length: 16, 16就是冰蝎2连接的特征

    二、冰蝎3

    对比冰蝎2,冰蝎3取消动态密钥获取,目前很多waf等设备都做了冰蝎2的流量特征分析,所以3取消了动态密钥获取;只有在无动态密钥交互失败后,才会进入常规的密钥交互阶段。

    密钥生成可以看出,使用密码的md5结果的前16位。

    特征分析:

    1)Accept头有application/xhtml+xmlapplication/xmlapplication/signed-exchange属于弱特征

    2)ua头该特征属于弱特征。通过burp可以修改,冰蝎3.0内置的默认16个userAgent都比较老。现实生活中很少有人使用,所以这个也可以作为waf规则特征。

    数据包加密分析:

    当我们去请求连接服务端的shell_bing3.0.php时,会在服务端的会话中存储一个值为"e45e329feb5d925b"的$_SESSION变量,也就是密钥$key

    然后服务端用生成的密钥去解密请求的POST数据包内容

    这是我写的小脚本(我其实就是想看看发送的POST数据包内容)

    解密结果:

    再次进行base64解密:

     1 @error_reporting(0);
     2 function main($content)
     3 {
     4     $result = array();
     5     $result["status"] = base64_encode("success");
     6     $result["msg"] = base64_encode($content);
     7     $key = $_SESSION['k'];
     8     echo encrypt(json_encode($result),$key);
     9 }
    10 
    11 function encrypt($data,$key)
    12 {
    13     if(!extension_loaded('openssl'))
    14         {
    15             for($i=0;$i<strlen($data);$i++) {
    16                  $data[$i] = $data[$i]^$key[$i+1&15]; 
    17                 }
    18             return $data;
    19         }
    20     else
    21         {
    22             return openssl_encrypt($data, "AES128", $key);
    23         }
    24 }$content="Xg7QPeZL9pqCKhXs8Sug7C2Uxnoi39z7DQup7oysPVx60VpOEt2HgP1mGm95uA1b1xJ8tjz29YKZSHWDTFQ5MUbFDdzrx4buFBVj2taUJYTbHUq3fa763mSMOirkT9rs99vKdHEuHoZCqBpawjqQQUejU5aHE4FAHHcF24mOpPsL2TU9JgngUkPwPRJZRtXwF";
    25 main($content);
    @error_reporting(0);
    function main($content)
    {
        $result = array();
        $result["status"] = base64_encode("success");
        $result["msg"] = base64_encode($content);
        $key = $_SESSION['k'];
        echo encrypt(json_encode($result),$key);
    }
    
    function encrypt($data,$key)
    {
        if(!extension_loaded('openssl'))
            {
                for($i=0;$i<strlen($data);$i++) {
                     $data[$i] = $data[$i]^$key[$i+1&15]; 
                    }
                return $data;
            }
        else
            {
                return openssl_encrypt($data, "AES128", $key);
            }
    }$content="Xg7QPeZL9pqCKhXs8Sug7C2Uxnoi39z7DQup7oysPVx60VpOEt2HgP1mGm95uA1b1xJ8tjz29YKZSHWDTFQ5MUbFDdzrx4buFBVj2taUJYTbHUq3fa763mSMOirkT9rs99vKdHEuHoZCqBpawjqQQUejU5aHE4FAHHcF24mOpPsL2TU9JgngUkPwPRJZRtXwF";
    main($con

    后面的执行代码其实跟冰蝎2类似

    三、哥斯拉

    介绍

    哥斯拉是一个基于流量、HTTP全加密的webshell管理工具相对于蚁剑,冰蝎;哥斯拉具有以下优点。

    全部类型的shell均过市面所有静态查杀
    
    流量加密过市面全部流量waf
    
    Godzilla自带的插件是冰蝎、蚁剑不能比拟的

    使用

    (1)Godzilla的运行需要java环境,win下直接双击就可,linux下java -jar Godzilla.jar

    此时会在同目录下生成data.db数据库存放数据

    (2)Godzilla的webshell可以自定义生成操作方法:管理-生成所需的webshell,哥斯拉支持jsp、php、aspx等多种载荷java和c#的载荷原生实现AES加密

    java使用AES加密

    php使用异或加密

    (3)将生成的webshell上传到目标机器,然后在Godzilla目标栏添加相应的url

    PHP连接特征

    (1)php_XOR_BASE64

    设置代理,用burp抓包。截取到特征发现请求都含有"pass="第一个包

    POST /hackable/uploads/base.php HTTP/1.1
    User-Agent: Java/1.8.0_131
    Host: 192.168.0.132:777
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Content-type: application/x-www-form-urlencoded
    Content-Length: 23275
    Connection: close
    ​
    pass=KX4nWAFVJ005aWdeUVosCjpuL0k7YApWKGVGfHFTUXg5WDNFOwszSQEDAVVRWjdGKHU3RwBgLEkGRgV5e3cgVCpxP0YBVVBRB3d3WlFZJ0c5bjdcAVEGUgB2BEh%2BXQJeMGMdQAMKN2M
    BAmALeE1UWjpuK1wsUjN%2FAVx7RGhzNFwpBFRcBn9YTylIXkJ9Q1F4J2cKVyt7IF4CZmxVeXczVTYGM2Q3CA1pN11GW2taDUQ6bitKOgpYTjlmAFRrWSdJOWE3QAFRK10zZQQCUVo3XyhuFn4hUSBeKnJ0VXt3IFQycS8FAX8nQwAADERRczdGOwQvWAEKN1ICaXxdeW
    ASfSBfJFcreyMAJ2BafHFdIFQqdSdJOGAzCABcAVVrWSdJOWI8ADBvVFMBA2deeXM3ATphHXcGb1RTKHJeQn1DUXgFZ1V7JmkRVAdmAFhWcw1FAV8nWQdgI1EAAntUUAcjXwFaXFk7YC9VOXZZS3l3DQQnZwp
    XK3sgXgJmbF17YSNeAmEdXDoKNw0CaXsCUU0GXTpYCUc7YC9DOwMMRWhjVFU6WyNKOG8zSQBYVkJ5bBJ9IF8kVyt7IF4qcnRVY3NQQTlxCUkpewVQBml3WlE

    第二个包

    POST /hackable/uploads/base.php HTTP/1.1
    User-Agent: Java/1.8.0_131
    Host: 192.168.0.132:777
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Content-type: application/x-www-form-urlencoded
    Content-Length: 51
    Connection: close
    ​
    pass=AWEzAAN%2FWFI3XHNGaGBQWDEHPwY4fSQAM2AIDw%3D%3D

    (2)php_XOR_RAW

    执行ls和cat命令,命令虽然不同,但是发现请求中都含有一样的

    :•T[6•
    L9e

    ls命令的包

    POST /hackable/uploads/g.php HTTP/1.1
    Cookie: PHPSESSID=oo9hn9d3uqq7661o3oldu0ojo7;
    User-Agent: Java/1.8.0_131
    Host: 192.168.0.132:777
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Content-type: application/x-www-form-urlencoded
    Content-Length: 56
    Connection: close
    ​
    :•T[6•
    L9e•[aqP•)[T••O9t

    cat命令的包

    POST /hackable/uploads/g.php HTTP/1.1
    Cookie: PHPSESSID=oo9hn9d3uqq7661o3oldu0ojo7;
    User-Agent: Java/1.8.0_131
    Host: 192.168.0.132:777
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Content-type: application/x-www-form-urlencoded
    Content-Length: 72
    Connection: close
    ​
    :•T[6•
    L9e•h•_8D0c+r•}•L6[gYccY
    )[T••O9t

    当以为这就是特征时就大错特错了,这只是这一次连接所含有的特征

    内存马

    内存shell模块实现了在tomcat中上传一个哥斯拉的马或者冰蝎、菜刀的马。甚至是上传regeorg建立http隧道。

    在这里我选择上传一个冰蝎马。

    然后在冰蝎连接,成功连接。

    内存shell 无日志,会在tomcat重启后消失。

    ps:哥斯拉避免被查杀技巧:

    1.不使用默认密码(pass)

    2.修改ua头

    3.填充垃圾数据(post的左右)

    参考:https://www.freebuf.com/articles/web/257956.html

  • 相关阅读:
    ThinkPhp6.x+AntDesign+Vue前后端分离快速开发平台
    Laravel8.x+AntDesign+Vue前后端分离快速开发平台
    JavaWeb v1.0.0后台开发框架,专业版发布——细节完善,体验优化
    高并发情况下的DB重复插入解决方案随笔
    jQuery.qrcode.js客户端生成二维码,支持中文并且可以生成LOGO
    新能源车牌的问题
    OCR识别移动端的实现与应用
    在拥有vin码识别的时代,您还在傻乎乎手工录入吗?
    国内的车牌识别算法怎样选择
    一码在手运车无忧
  • 原文地址:https://www.cnblogs.com/zzjdbk/p/14489992.html
Copyright © 2020-2023  润新知