记一次解密wireshark抓取的冰蝎通讯流量

1、关于冰蝎

 1.1 简单介绍

  冰蝎是一款基于Java开发的动态加密通讯流量的新型Webshell客户端。老牌 Webshell 管理神器——中国菜刀的攻击流量特征明显,容易被各种安全设备检测,实际场景中愈来愈少使用,加密 Webshell 正变得日趋流行。php

  因为通讯流量被加密,传统的 WAF、IDS 设备难以检测,给威胁狩猎带来较大挑战。冰蝎其最大特色就是对交互流量进行对称加密,且加密秘钥是由随机数函数动态生成,所以该客户端的流量几乎没法检测。  算法

 1.2 关于冰蝎通讯 

  冰蝎通讯大体分为两个阶段shell

第一阶段:安全

  Attacker经过GET方法或者POST方法形以下图这样请求服务器密钥服务器

 

 

 服务器使用随机数MD5的高16位做为密钥,存储到会话的SESSIONID中,并返回密钥给attacker。密钥可经过wireshark抓包看到,见下图。并发

 

 

 

第二阶段:函数

1.客户端把待执行命令做为输入,利用AES算法或XOR运算进行加密,并发送至服务端;工具

2.服务端接受密文后进行AES解密或者XOR运算解密,执行解密后的命令网站

3.执行结果经过AES加密后返回给attacker编码

关于上述内容和抓包详情和可绕过字段的具体详情可看下面连接大佬写的文章,本人在此就不CV了

  https://cloud.tencent.com/developer/article/1621021

 

1.3 解密思路

  在服务器开启 PHP OpenSSL 扩展脚本的状况下,冰蝎密文采用对称加密算法AES加密,加密后还会进行 base64 编码。在客户端发起密钥协商后,会返回16位明文随机密钥。在安全监控设备采集流量较全的状况下,可截获密文流量和密钥,经过解密解码平台便可获取冰蝎密文详情。 

  大致也是根据shell.php代码审计得出来的,关于冰蝎简单的协商加密部分代码审计能够看下面的连接

  https://www.freesion.com/article/2118538292/

 

2、冰蝎解密详细步骤

  此次主要仍是奔着解密数据包内容去的,以前有一次搞了很久没搞出来就搁置了,此次正好又看到了两个大佬的文章就抓回来从新搞一次,详细的解密还原报文步骤以下

 

2.1 环境

 

  物理机  做为attacker使用冰蝎链接shell.php

 

  Win2003 server   做为 attacked 在DVWA-master目录下提早放置了shell.php

 

2.2 整体步骤

  打开wireshark 监听虚拟网卡(我用的NAT模式也就是VM8)

 

  首先attacker链接了http://192.168.124.139:81/DVWA-master/shell.php

 

  并随意执行两个命令

 

  打开wireshark页面中止监听 在头部就能够看到4个http的包  追踪流查看

 

  由于冰蝎是动态二进制协商加密 数据包可看做被进行了2次加密

 

  

  第一层加密为AES128加密

 

    AES解密时须要一个16位的key,而冰蝎的脚本会进行与attacked协商一个key保存在SESSIONID中,以下图这个16位的数据就是解密所需的key

 

 

 

   

  接下来须要一个在线解密AES的网站。(一开始我用的是CaptfEncoder这个工具,可是在AES解密时老是报错不知道为何,经过查阅网上大佬的资料get了这个站)

http://tools.bugscaner.com/cryptoaes/

PS:本人以前也找过不少的站包括CaptfEncoder这个工具,只有用上面这个站解密成功了。(不知道是本人操做问题仍是脸黑 Orz)

 

请求密文就是相似于下图的红字部分

 

 

 

进行解密:

 

 

 

将解密以后base64_decode()中的内容丢去base64解密就行了,能够网上找个在线的站。我用的是CaptfEncoder

 

 

 

这时就能够看到冰蝎加密前的内容是什么了

一样响应内容也能够进行解密:

 

 

 

 将响应密文丢到刚才AES解密的站,仍是原先的16位key

 

 

 

 

{"status":"c3VjY2Vzcw==","msg":"DQ0KV2luZG93cyBJUCBDb25maWd1cmF0aW9uDQ0KDQ0KDQ0KRXRoZXJuZXQgYWRhcHRlciDmnKzlnLDov57mjqUgMjoNDQoNDQogICBDb25uZWN0aW9uLXNwZWNpZmljIEROUyBTdWZmaXggIC4gOiBsb2NhbGRvbWFpbg0NCiAgIElQIEFkZHJlc3MuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA6IDE5Mi4xNjguMTI0LjEzOQ0NCiAgIFN1Ym5ldCBNYXNrIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA6IDI1NS4yNTUuMjU1LjANDQogICBEZWZhdWx0IEdhdGV3YXkgLiAuIC4gLiAuIC4gLiAuIC4gOiAxOTIuMTY4LjEyNC4yDQ0KDQ0KRXRoZXJuZXQgYWRhcHRlciDmnKzlnLDov57mjqU6DQ0KDQ0KICAgQ29ubmVjdGlvbi1zcGVjaWZpYyBETlMgU3VmZml4ICAuIDogREhDUCBIT1NUDQ0KICAgSVAgQWRkcmVzcy4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIDogMTkyLjE2OC4wLjEwNQ0NCiAgIFN1Ym5ldCBNYXNrIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiA6IDI1NS4yNTUuMjU1LjANDQogICBEZWZhdWx0IEdhdGV3YXkgLiAuIC4gLiAuIC4gLiAuIC4gOiAxOTIuMTY4LjAuMQ0NCg=="}

 

 上面通过AES解密后的红体字还须要丢到base64解密一下

 

 

成功得到响应报文

 

相关文章
相关标签/搜索