news 2026/6/7 11:51:12

新手友好!用Wireshark分析PHPStudy环境下的Webshell攻击:从可疑POST请求到CobaltStrike密钥提取

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
新手友好!用Wireshark分析PHPStudy环境下的Webshell攻击:从可疑POST请求到CobaltStrike密钥提取

从零开始:用Wireshark追踪PHPStudy环境中的Webshell攻击链

最近在本地搭建PHPStudy环境测试时,发现服务器响应异常缓慢,查看日志发现大量可疑请求。作为刚接触网络安全的新手,我决定用Wireshark这个"网络显微镜"一探究竟。本文将完整记录如何从一个可疑的POST请求开始,逐步追踪到CobaltStrike密钥的全过程。

1. 环境准备与初始流量捕获

在开始分析之前,我们需要准备好以下工具和环境:

  • PHPStudy集成环境(建议使用最新版本)
  • Wireshark 3.6.0+(支持HTTP2解析的版本)
  • Python Requests库(用于模拟攻击测试)
  • 7-Zip(处理加密压缩包)

关键配置步骤

  1. 在PHPStudy中创建一个测试站点(例如http://test.local
  2. 确保Wireshark能捕获本地回环流量(需要安装Npcap驱动)
  3. 设置Wireshark只监控PHPStudy相关的网络接口
# 快速检查本地网络接口 ipconfig /all

注意:在Windows上分析本地流量时,选择"Npcap Loopback Adapter"接口

首次捕获流量时,建议先进行基准流量采集——即在没有任何操作时记录1-2分钟的正常流量。这能帮助我们后续快速识别异常流量。

2. 识别可疑HTTP POST请求

在启动Wireshark约10分钟后,我注意到一个异常的流量模式:多个来自同一IP的POST请求,间隔时间异常规律(每37秒一次)。通过以下过滤条件快速定位这些请求:

http.request.method == POST && http.user_agent contains "python"

可疑请求特征分析

特征项正常值观察值异常点
User-Agent浏览器标识Python/3.9非浏览器客户端
Content-Typeapplication/x-www-form-urlencoded缺失不符合常规表单提交
请求长度通常<1KB4.8KB过大且固定
响应时间毫秒级3-5秒明显处理延迟

在追踪该HTTP流时(右键→Follow→TCP Stream),发现请求体中包含特殊字符串:

AAA*VGhpcyBpcyBhIHRlc3Q=*AAA

这种以AAA*开头、*AAA结尾的编码格式引起了我的注意。通过查询公开漏洞数据库,发现这与Laravel框架的CVE-2021-3129漏洞利用特征高度吻合。

3. 解码漏洞利用流量

针对发现的异常编码,我们需要进行多层解码:

  1. 初步清理:去除AAA*前缀和*AAA后缀
  2. 字符替换:将所有=替换为00
  3. Base64解码:对处理后的字符串进行解码
import base64 def decode_payload(payload): # 示例解码函数 cleaned = payload.replace("AAA*", "").replace("*AAA", "") cleaned = cleaned.replace("=", "00") return base64.b64decode(cleaned).decode('utf-8', errors='ignore') sample = "AAA*VGhpcyBpcyBhIHRlc3Q=*AAA" print(decode_payload(sample)) # 输出: This is a test

通过分析多个类似请求,发现攻击者正在尝试写入Webshell。关键写入路径为:

POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

Webshell写入特征

  • 利用Laravel的phpunit组件漏洞
  • 文件写入路径通常包含/tmp//vendor/
  • 响应包会返回写入文件的MD5值

4. 定位并分析Webshell活动

成功写入Webshell后,攻击者开始执行更多操作。通过以下过滤条件捕获相关流量:

http contains "14433" || http contains "eval("

发现一个关键的大马(功能更强大的Webshell)通信过程:

  1. 请求中包含密码参数pass=14433
  2. 响应使用特定格式加密:
    • 前两位为随机字符
    • 剩余部分为Base64编码

解密示例

def decrypt_webshell(resp): # 示例:去除前两位后Base64解码 return base64.b64decode(resp[2:]).decode('utf-8')

在分析这些通信时,注意到攻击者执行了以下可疑操作:

cd /d "D:\phpstudy_pro\WWW\secret"&"C:\Program Files\7-Zip\7z.exe" x secret.zip -pP4Uk6qkh6Gvqwg3y

这提示我们系统中可能存在一个名为secret.zip的加密压缩包。

5. 提取并解密CobaltStrike密钥文件

回到Wireshark中,通过搜索PK文件头(压缩文件特征)定位到可疑数据包:

frame contains "PK\x03\x04"

导出和修复压缩文件的步骤

  1. 右键包含PK头的数据包→Follow→TCP Stream
  2. 选择"Raw"格式保存为.bin文件
  3. 使用WinHex或HxD编辑器:
    • 删除PK头前后的Webshell代码
    • 确保文件以PK头开始并以\x50\x4B\x05\x06结束

使用之前发现的密码P4Uk6qkh6Gvqwg3y解压后,得到.cobaltstrike.beacon_keys文件——这是CobaltStrike后门的密钥文件。

密钥文件结构解析

00000000 00 00 00 01 00 00 00 20 [... ...] 00000008 9A 02 3B 92 1D 8B 6D E6 [..;...m.] 00000010 A7 5D 5E 5B 3D 4D 9D 9A [.]^[=M..]

6. 解密CobaltStrike通信流量

获得Beacon密钥后,我们可以解密攻击者的C2(命令与控制)通信。关键识别特征:

  • 心跳包路径:/en_US/all.js
  • 数据传输路径:/submit.php?id=xxxxxx
  • Cookie中携带加密元数据

解密流程

  1. 使用私钥解密元数据获取AES密钥
  2. 用AES密钥解密实际通信内容
  3. 解析解密后的数据(通常是Base64编码)

实际操作中,可以使用第三方工具如cobaltstrike_parser自动化这个过程:

python cs_parse.py -k beacon_keys -f traffic.pcap

在分析解密后的流量中,发现了攻击者执行的完整操作链:

  1. 系统信息收集(用户名、网络配置、进程列表)
  2. 横向移动尝试(扫描内网其他主机)
  3. 持久化后门安装(计划任务、服务创建)

整个分析过程中,最关键的突破点是早期那个Python Requests的POST请求。如果没有注意到这个异常点,后续的Webshell和CobaltStrike活动很容易被当作正常流量忽略。这也提醒我们,在日常监控中要特别关注非浏览器客户端的HTTP请求。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 11:49:24

BetterNCM智能部署工具:让网易云音乐插件安装变得简单高效

BetterNCM智能部署工具&#xff1a;让网易云音乐插件安装变得简单高效 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 在数字音乐时代&#xff0c;网易云音乐已成为许多人日常娱乐的重…

作者头像 李华
网站建设 2026/6/7 11:46:20

Agent开发系列(八)-组织知识库建设

目录 一、组织知识库的分层架构 二、知识分类:研发团队该存什么 2.1 输入层:Raw Sources(原始事实) 2.2 沉淀层:Wiki(可消费的"理解") 2.3 规则层:Schema(约束一切) 三、LLM 自动化流水线 3.1 机制 1:自动化(机器跑的部分) 3.2 机制 2:流程(人参与的"卡…

作者头像 李华