科来流量分析/结合MCP自动化

主要分析两份 Weevely 通信流量,并尝试把科来网络分析系统与 Codex 连接起来,实现抓包文件的自动解析和报告生成。

使用的抓包文件为:

  • weevely3_4.pcapng

  • weevely3_4_C.pcapng

案例一:weevely3_4.pcapng

  1. 是否上传了webshell

从当前抓包可以确认 /hackable/uploads/wShell.php 已经存在并被调用,但没有直接捕获其上传过程。

上传者的IP172.16.1.76------攻击端

被上传者的IP172.16.1.163------被攻击的服务器

webshell文件上传后存储在这里

完整请求路径是:

复制代码
/hackable/uploads/wShell.php

Webshell上传后 攻击者又做什么?

看一下第一个http请求对应的数据流,可以看到攻击者通过POST请求像webshell发送了payload------HTTP请求体

这里需要注意:这条 POST 请求能够证明 WebShell 已经存在于服务器上,并且开始接收攻击命令,但不能单独证明 WebShell 的上传过程也包含在这段流量中。

然后双击查看第一条http通信的数据流,可以看到攻击者通过 POST 请求向 WebShell 发送了一段 Payload。

由于抓包文件名中带有 weevely,因此判断这可能是 Weevely 产生的加密通信。

Weevely 不会直接发送明文命令,而是使用连接密码生成 MD5,并将 MD5 的不同部分作为异或密钥和通信标记。

在请求体和响应体中,可以发现下面两个字符串反复出现

复制代码
0339f2efd328
6b3c9e505489

对密码字典进行计算后,发现:

复制代码
MD5(bmk) = 890ce1120339f2efd3286b3c9e505489

刚好可以对应抓包中的两个固定标记,因此可以确定连接密码为:

复制代码
bmk

其中,MD5 的前8位:

复制代码
890ce112

就是解密通信内容使用的异或密钥。

完整的对应关系为:

复制代码
异或密钥:890ce112
开始标记:0339f2efd328
结束标记:6b3c9e505489

Weevely 流量的基本还原过程为:

  1. 提取开始标记和结束标记中间的数据。

  2. 对数据进行 Base64 解码。

  3. 使用 MD5 前8位进行异或运算。

  4. 使用 zlib 解压,得到原始命令或执行结果。

3. 还原攻击命令

解密第一轮通信后得到:

复制代码
try {
    echo(24331);
} catch(Exception $e) {
    // 返回执行错误
}

其中真正执行的操作是:

复制代码
echo(24331);

外面的 try...catch 主要用于捕获错误,并把错误信息返回给 Weevely 客户端。

后续还原出的命令依次为:

复制代码
echo 40902
whoami
ls
pwd

对应结果如下:

复制代码
echo 40902:返回 40902,用于测试命令执行是否正常。

whoami:返回 nginx,说明 Web 服务以 nginx 用户身份运行。

ls:查看当前目录中的文件。

pwd:返回 /usr/share/nginx/html/hackable/uploads,
说明 WebShell 当前位于该目录。

综上,WebShell 建立连接后,攻击者先通过 echo 测试命令执行功能,随后执行 whoamilspwd,查看服务器当前用户、目录文件和所在路径。

案例二weevely3_4_C.pcapng

还是看http日志,发现攻击者已经上传了webshell------wShell3.php,HTTP 日志中发现向 /vulnerabilities/upload/ 发起的 multipart/form-data POST 请求,上传文件名为 wShell3.php,服务器响应显示上传成功。

点进去看源ip和目的ip,跟上一个一样

按照前面同样的方法分析,这一次的固定标记是:

2. 分析通信密码

按照案例一相同的方法,观察 HTTP 请求体和响应体,可以找到这一组固定标记:

复制代码
开始标记:b5c349531268
结束标记:ae8484112a78

通过字典计算,发现密码 lyb 的 MD5 为:

复制代码
MD5(lyb) = 38d17dd2b5c349531268ae8484112a78

它正好包含抓包中的两个固定标记,因此可以确定本次 Weevely 连接使用的密码为:

复制代码
lyb

本次通信使用的异或密钥为 MD5 的前8位:

复制代码
38d17dd2

完整对应关系为:

复制代码
异或密钥:38d17dd2
开始标记:b5c349531268
结束标记:ae8484112a78

3. 还原命令与回显

对每一轮通信进行解密后,得到以下操作:

复制代码
echo 89386

返回 89386,用于测试 WebShell 能否正常执行和返回结果。

复制代码
echo 38658

返回 38658,再次测试系统命令执行功能。

复制代码
gethostname()

获取服务器主机名,结果为:

复制代码
localhost.localdomain

随后 Weevely 获取当前运行用户,结果为:

复制代码
nginx

getcwd()

获取当前工作目录,结果为:

复制代码
/usr/share/nginx/html/hackable/uploads

whoami

再次确认当前用户,返回:

复制代码
nginx

ls

查看当前目录中的文件,返回结果中包括:

复制代码
Decrypt.php
antShell.php
cShell.php
dvwa_email.png
shell.php
shell3.php
wShell.phar
wShell.php
wShell3.php
weevelyDeCrypt.php

pwd

确认当前目录为:

复制代码
/usr/share/nginx/html/hackable/uploads

之后,攻击者又尝试执行:

复制代码
ip a
ip
ipconfig
ifconfig

这些命令都用于查看服务器的网络配置,但响应中均提示命令不存在。

最后执行:

复制代码
netstat

攻击者可能想查看服务器当前的网络连接,不过抓包中没有捕获到对应的响应结果,因此无法确定该命令最终是否执行成功。

综合当前抓包能够还原的内容,攻击者获取了服务器主机名、运行用户、当前目录和目录文件。除此之外,暂未发现其获取更多敏感信息的证据。

正常情况下,使用科来完成抓包后,需要手动打开文件、查看协议统计、筛选 IP,再把结果交给 Codex 分析。

为了减少这些重复操作,我使用科来自带的 cmdl.exe 抓包解析工具,制作了一个本地 MCP Server。

连接以后,Codex 可以直接调用科来的解析能力,对 .cap.pcap.pcapng 文件进行查询,例如:

  • 检查科来及解析组件是否正常。

  • 查找指定目录中的抓包文件。

  • 统计协议数量和通信端点。

  • 按照 IP、端口或协议筛选数据包。

  • 分析 DNS 查询和错误响应。

  • 查看 ICMP 请求与响应。

  • 分析主要网络会话。

整个 MCP 只读取本地抓包,不会主动发送数据包,也不会修改科来的配置。

2. MCP 配置

首先在 Codex 的配置文件中添加:

复制代码
[mcp_servers.colasoft]
command = 'C:\Program Files\Python38\python.exe'
args = [
  'D:\工具\Colasoft-MCP\colasoft_mcp.py',
  '--capture-root',
  'C:\Users\pc\Desktop\流量分析作业'
]

其中:

复制代码
command

用于指定运行 MCP Server 的 Python。

复制代码
colasoft_mcp.py

是编写的 MCP Server 主程序。

复制代码
--capture-root

用于指定 Codex 可以查找和分析抓包文件的目录。

新建 Codex 任务时,Codex 会按照该配置启动 Python 程序。双方通过标准输入和标准输出传递 MCP 消息。

当 Codex发起分析请求后,MCP Server 调用科来的 cmdl.exe 解析抓包,再把数据包结果整理成结构化内容返回给 Codex。

基本流程如下:

复制代码
用户提出分析要求
        ↓
Codex 调用 MCP 工具
        ↓
colasoft_mcp.py 接收请求
        ↓
调用科来 cmdl.exe 解析抓包
        ↓
MCP 整理解析结果
        ↓
Codex 输出分析结论

3. 自动报告功能

除了 MCP Server,还运行了一个单独的目录监控程序:

复制代码
colasoft_watcher.py

该程序会在后台监控抓包目录。

当科来保存新的抓包文件后,监控程序会等待文件写入完成,然后调用相同的解析功能,并在抓包旁边生成 HTML 报告。

例如:

复制代码
kall-Packets.cap

会自动生成:

复制代码
kall-Packets.analysis.html

因此,这套功能分为两部分:

复制代码
MCP Server:供 Codex 按需查询和分析抓包。

目录监控程序:发现新抓包后自动生成 HTML 报告。

四、Kali 与主机互 Ping 测试

为了测试自动分析是否正常,我使用 Kali 分别 Ping Windows 主机和 VMware 网关。

测试环境中的 IP 为:

复制代码
Kali:192.168.145.10
Windows 主机:192.168.145.1
VMware 网关:192.168.145.2

测试期间使用科来进行抓包。

首先从 Kali Ping Windows 主机:

复制代码
ping 192.168.145.1

然后 Ping VMware 网关:

复制代码
ping 192.168.145.2

停止捕获后,将数据包保存为:

复制代码
kall-Packets.cap

文件保存完成后,后台监控程序自动发现该抓包,并生成:

复制代码
kall-Packets.analysis.html

【这里放自动生成的 HTML 报告截图】

报告中的分析结果为:

复制代码
数据包总数:34
ICMP 数据包:16
ARP 数据包:18

Kali 与 Windows 主机之间存在:

复制代码
4个 ICMP Echo Request
4个 ICMP Echo Reply

Kali 与 VMware 网关之间也存在:

复制代码
4个 ICMP Echo Request
4个 ICMP Echo Reply

每个请求都收到了对应响应,因此可以确定两次 Ping 均成功。

这也说明科来能够正常捕获数据包,后台程序能够自动发现并解析新抓包,生成的协议统计和 ICMP 通信结果也与实际测试过程一致。


五、总结

通过两份 Weevely 抓包,可以还原攻击者与 WebShell 之间的通信过程。

案例一中,攻击者已经开始使用 wShell.php,并执行了 echowhoamilspwd 等命令。

案例二中,不仅捕获到了 wShell3.php 的上传过程,还还原出了获取主机名、用户名、当前目录以及尝试查询网络配置等操作。

在此基础上,将科来的 cmdl.exe 封装成 MCP Server,使 Codex 可以直接查询本地抓包;再配合目录监控程序,实现新抓包保存后自动生成 HTML 报告。

这套方式的作用不是代替科来抓包,而是把抓包完成后的查找、统计、筛选和报告生成过程自动化,减少每次手动打开抓包、截图和整理结果的重复操作。

分析结果:

总共捕获34个数据包,其中有16个 ICMP包和18个 ARP包。

Kali与Windows主机之间有4个请求和4个响应。

Kali与VMware网关之间也有4个请求和4个响应。

由此可以确定两次 Ping 均成功,功能一切正常~

相关推荐
发光的沙子1 小时前
嵌入式系统架构师----Ubuntu如何安装不在列表内的软件?
linux·运维·ubuntu
C+ 安口木1 小时前
Alibaba Cloud Linux 3 服务器环境搭建实战记录
linux·运维·服务器
迪康Defender2 小时前
公用电脑责任追溯难?迪康端点安全一体化管理系统用户模式详解
java·运维·开发语言·网络·其他·安全
迪康Defender2 小时前
迪康端点安全一体化管理系统文档安全:构建企业文档资产全链路防护体系
运维·网络·安全·web安全·终端安全管理
zhangguojia72 小时前
权限弹窗点击允许的授权流程
运维·服务器·数据库
AI备忘录2 小时前
(十九)华为华三锐捷迈普思科 交换机链路聚合配置命令(LACP/静态聚合五厂商对照)
运维·服务器·网络·网络协议·tcp/ip·华为
lucybean012 小时前
抗老化曝气管采购:主流品牌优劣及选型策略深度解析
运维
come112342 小时前
剪映零基础教程
java·linux·运维
瀚高PG实验室3 小时前
HAC 集群主节点状态在starting、running之间频繁切换
运维·数据库·postgresql·瀚高数据库