zoukankan      html  css  js  c++  java
  • 冰蝎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

  • 相关阅读:
    ZOJ 3818 Pretty Poem
    HDU 4597 Play Game
    HDU 4497 GCD and LCM
    CSU 1335 高桥和低桥
    UVA 10791 Minimum Sum LCM
    CSU 1119 Collecting Coins
    CSU 1120 病毒
    UVA 12169 Disgruntled Judge
    HDU 1301 Jungle Roads
    POJ 1258 Agri-Net
  • 原文地址:https://www.cnblogs.com/zzjdbk/p/14489992.html
Copyright © 2011-2022 走看看