一、关于冰蝎

 1.1 简单介绍

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

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

 1.2 关于冰蝎通信 

  冰蝎通信大致分为两个阶段

第一阶段:

  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.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解密一下

成功获得响应报文

记一次解密wireshark抓取的冰蝎通信流量的更多相关文章

  1. 使用wireshark 抓取 http https tcp ip 协议进行学习

    使用wireshark 抓取 http https tcp ip 协议进行学习 前言 本节使用wireshark工具抓包学习tcp ip http 协议 1. tcp 1.1 tcp三次握手在wire ...

  2. 使用Wireshark 抓取数据包

    Wireshark 是一个网络封包分析软件.网络封包分析软件的功能是获取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换. 一  ...

  3. 利用wireshark抓取Telnet的用户名和密码

    使用wireshark抓取Telnet   目标ip地址(telnet  192.168.88.1 ) 1,首先打开wireshark,然后选择网卡,点击开始. 2,为了在filter中输入telne ...

  4. Android利用tcpdump和wireshark抓取网络数据包

    Android利用tcpdump和wireshark抓取网络数据包 主要介绍如何利用tcpdump抓取andorid手机上网络数据请求,利用Wireshark可以清晰的查看到网络请求的各个过程包括三次 ...

  5. 使用wireshark抓取TCP包分析1

    使用wireshark抓取TCP包分析1 前言 介绍 目的 准备工作 传输 创建连接 握手 生成密钥 发送数据 断开连接 结论 前言 介绍 本篇文章是使用wireshrak对某个https请求的tcp ...

  6. 通过WireShark抓取iPhone联网数据方法

    通过WireShark抓取iPhone联网数据方法 命令行 rvictl -s <UDID> 然后再wireshark选择rvi0进行抓包即可 抓包完后,移除用命令 rvictl -x & ...

  7. 利用wireshark抓取远程linux上的数据包

    原文发表在我的博客主页,转载请注明出处. 前言 因为出差,前后准备总结了一周多,所以博客有所搁置.出差真是累人的活计,不过确实可以学习到很多东西,跟着老板学习做人,学习交流的技巧.入正题~ wires ...

  8. TCP三次握手和四次挥手及wireshark抓取

    TCP的三次握手与四次挥手的详细介绍: 三次握手: 第一次握手(SYN=1, seq=x): 客户端发送客户端发送一个 TCP 的 SYN 标志位置1的,指明客户端打算连接的服务器的端口,以及初始序号 ...

  9. 抓取“矢量”的实时交通流量数据

    1. 引言 最近老师有一个需求,就是想要抓取实时的矢量交通流量数据来做分析,类似于百度地图,高德地图的"实时路况"那种.平时的网络抓取工作一般是抓取网页上现成的数据,但是交通流量数 ...

随机推荐

  1. PAT 月饼

    月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼.现给定所有种类月饼的库存量.总售价.以及市场的最大需求量,请你计算可以获得的最大收益是多少. 注意:销售时允许取出一部分库存.样 ...

  2. html页面引用video.js播放m3u8格式视频

    //head里面的内容,我是采用cdn引用的方式,因为项目太小 <head> <meta charset="utf-8" /> <title>二 ...

  3. spring Cloud负载均衡Ribbon

    Ribbon饥饿加载 默认情况下Ribbon是懒加载的.当服务起动好之后,第一次请求是非常慢的,第二次之后就快很多. 解决方式:开启饥饿加载 ribbon: eager-load: enabled: ...

  4. win10系统无法删除文件的解决方法

    方法/步骤 1:首先进入不能删除的文件所在的文件夹 2:右键单击此文件夹,选择授予访问权限 3:在授权界面选择删除权限 4:在删除权限中点击更改共享权限 5:我们选择administrator级别,点 ...

  5. 数据处理一条龙!这15个Python库不可不知

    如果你是一名数据科学家或数据分析师,或者只是对这一行业感兴趣,那下文中这些广受欢迎且非常实用的Python库你一定得知道. 从数据收集.清理转化,到数据可视化.图像识别和网页相关,这15个Python ...

  6. spring Cloud网关之Spring Cloud Gateway

    Spring Cloud Gateway是什么?(官网地址:https://cloud.spring.io/spring-cloud-gateway/reference/html/) Spring C ...

  7. Python里的黄金库,学会了你的工资至少翻一倍

    作者:[已重置]链接:https://zhuanlan.zhihu.com/p/26054228来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 阅读本文大概需要5分钟 ...

  8. tcpdump抓包工具的基本使用

    为了更好的深入理解计算机网络等相关知识,例如TCP\UDP\IP等,我们就必须利用tcpdump.Wireshark等工具对网络进行分析.本篇博文主要记录一下tcpdump这个网络分析利器的一些基本使 ...

  9. AWS 错误标记3

    1. What is the average queue length recommended by AWS to achieve a lower latency for the 200 PIOPS ...

  10. Redis命令速查

    目录 string list set zset hash 记录下常用的,方便查找 string 内部sds,动态扩容.小于1M加倍扩,大于1M每次扩容1M.最大长度512M. SET name val ...