使用Arkime网络取证调查Web入侵:数据包分析实战

1 阅读8分钟

[Blue Team Labs Online Write-up] The Walking Packets (使用Arkime调查Web入侵)

Chicken02487 · 5分钟阅读 · 2025年12月3日

--
1
Listen
Share

点击或回车查看全尺寸图片
blueteamlabs.online/home/invest…

安全运营
标签: Arkime PCAP 闭路电视

场景描述

Zeta-9 运营着一个集中式监控平台,用于监视实验室活动并标记异常。实验室设施发生爆炸后,公司的边界防御系统记录到防火墙被突破。

在检测到事件后的几个小时内(具体时间为 2025年9月24日 星期三 00:00:00 UTC 至 2025年9月24日 星期三 02:52:00 UTC),Arkime 捕获到一系列异常事件:对监控控制台的非典型 HTTP 请求。

使用 Arkime 网络日志,重构攻击者的行为链。

本次挑战中,Arkime 可通过以下地址访问:
URL: http://localhost:8005/sessions
凭证: admin / admin

警告! 别忘了先启动服务:
systemctl start arkimeviewer

环境感知与证据发现工具

点击或回车查看全尺寸图片

调查机器初始化完成后,可以使用 sudo systemctl start arkimeviewer 启动 Arkime。可以看到桌面上还有一个 CyberChef 文件夹和任务简报文件,但任务简报目前并不重要,所以我们将重点放在 Arkime 上。

点击或回车查看全尺寸图片

启动 Arkime 服务后,打开浏览器访问 http://localhost:8005,系统会弹出 Arkime 的基础认证窗口。我们需要输入 "admin" 和 "admin" 进行登录。

点击或回车查看全尺寸图片

现在我们应该能够在浏览器中访问 Arkime 的 Web 界面了。

点击或回车查看全尺寸图片

最后,我们需要缩小时间范围,因为场景中提到“具体时间为 2025年9月24日 星期三 00:00:00 UTC 至 2025年9月24日 星期三 02:52:00 UTC”。在这个时间范围内我们大约有近40万条记录,数量相当大,但现在我们可以开始调查了。

调查过程

Q1) 攻击者使用了哪个源IP地址,并且主动攻击了哪个应用端口?

点击或回车查看全尺寸图片

首先,我会检查 SPIGraph 来查看有多少个IP以及它们之间的连接情况。我发现一个 IP 地址 91.90.124.2110.0.14.53 之间存在大量的通信,因此我将检查它们之间的通信,以确定 91.90.124.21 是否属于攻击者的 IP 地址。

点击或回车查看全尺寸图片

在筛选该 IP 地址后,我首先注意到的是从 91.90.124.21 到存储控制台主机的通信,该主机的内部 IP 地址为 10.0.14.53 / 外部地址为 18.133.31.160,端口为 3000

筛选条件:
ip.src == 91.90.124.21 && http.method == GET

点击或回车查看全尺寸图片

进一步的事件显示,从 91.90.124.21 到存储控制台有多次 SQL 注入尝试,这证实了该 IP 地址属于威胁行为者。

筛选条件:
ip.src == 91.90.124.21 && http.method == GET && http.statuscode != 404 && http.statuscode != 400

答案: 91.90.124.21, 3000

Q2) 首页返回的HTTP正文的MD5校验和是多少?

点击或回车查看全尺寸图片

要查找首页 HTTP 正文的 MD5 校验和,我们可以检查攻击者对首页的通信。Arkime 已经在这里为我们提供了该 HTTP 正文的 MD5 校验和。

然后我们查看该正文的内容,发现没有什么特别有趣的地方。通过获取正文哈希值,我们可以用它来过滤掉这个页面,只关注威胁行为者的成功攻击。

答案: ca1d882d9b1aac5f04f39509ee17f001

Q3) 攻击者调用了哪个HTTP路径来枚举存储的对象?

点击或回车查看全尺寸图片

在过滤掉上一问中返回标准 HTML 正文的所有请求后,只剩下 3 条记录。这表明威胁行为者最终成功利用了 SQL 注入漏洞,并从存储控制台下载了对象 ID 为 6 的文件。

筛选条件:
ip.src == 91.90.124.21 && http.method == GET && http.statuscode != 404 && http.statuscode != 400 && http.md5 != ca1d882d9b1aac5f04f39509ee17f001

点击或回车查看全尺寸图片

我们可以看到易受攻击的端点是 /search 路径。我们可以看到该查询的结果是返回该存储控制台上托管的所有对象。

答案: /search

Q4) 用于枚举对象记录的SQL注入载荷是什么?

点击或回车查看全尺寸图片

我们可以使用 CyberChef 中的 URL Decode 工具来解码此问题的载荷。

答案: a' OR '1'='1

Q5) 上传文件的元数据中,哪个账户名称被设置为所有者?

点击或回车查看全尺寸图片

我们可以看到所有文件的所有者都是 Frankenstein Code,这是一名研究人员,我们将在 Zeta-End 调查其工作站。

答案: Frankenstein Code

Q6) 哪个文件名元数据对应目标摄像头(攻击者外泄的文件)?

点击或回车查看全尺寸图片

在泄露了该存储控制台上的所有文件后,威胁行为者只请求下载对象 ID 为 6 的文件,即 cam06_ai_monitor_securityincident.mp4。我们可以看到存储控制台在端口 9000 上托管着带有 minio 的文件。

答案: cam06_ai_monitor_securityincident.mp4

Q7) 攻击者下载的确切S3对象键是什么?

点击或回车查看全尺寸图片

复制此键的值来回答这个问题。

答案: uploads/525e1f476a399b2675777f6c2993aba1_cam06_ai_monitor_securityincident.mp4

Q8) 攻击者调用哪个路径和ID来获取预签名下载URL?

点击或回车查看全尺寸图片

答案: /download, 6

Q9) 攻击者在获取文件时使用了哪个User-Agent字符串?

点击或回车查看全尺寸图片

User-Agent 字符串表明威胁行为者是从 Windows 工作站进行操作的。

答案: Mozilla/5.0 (Windows NT; Windows NT 10.0; en-CA) WindowsPowerShell/5.1.26100.6584

Q10) 根据网络证据,攻击者最终到达哪个主机:端口以从存储服务中检索对象?

点击或回车查看全尺寸图片

答案: minio:9000

Q11) 下载并观看视频后,录像中显示了哪些凭据?

为了得到这个问题的答案,我有两条路径,一条是预期路径,一条是非预期路径。我使用了非预期路径完成了这次调查,但我会把两条路径都展示给你,并告诉你为什么我错过了这次调查的首杀 XD

首先,如果你没有注意到,我们确实在存储控制台主机中,该主机在 Docker 容器内运行着 minio。

点击或回车查看全尺寸图片

我先展示预期路径。为了获取文件,我们需要模拟威胁行为者的操作,请求另一个下载 URL(因为旧的已经过期了)。

点击或回车查看全尺寸图片

我们可以访问端口 3000 上的存储网站(是的,我之前不知道这个,直到 SOUFFLETRINITY 拿下首杀后我才意识到)。

点击或回车查看全尺寸图片

通过访问相同的 URL (http://localhost:3000/download?id=6),我们将获得另一个可用于下载威胁行为者所下载的相同视频的 URL。

点击或回车查看全尺寸图片

在这个视频中,隐藏着 operator39 用户的凭据,该用户是 JUMPHOST 的本地管理员,我们将在 The Headless Dead 调查中对其进行调查。

答案: operator39:halloween2025

现在,让我们看看我是如何通过非预期路径完成这个实验的。

点击或回车查看全尺寸图片

首先,我检查了端口 9000 上的 minio,但我还没有任何凭据可以登录。

首先,我将用户切换到 root 并列出所有 Docker 容器。现在我有了托管 minio 的容器 ID。

我进入该容器并查看环境变量,这些变量通常定义了用户凭据。现在我有了访问 minio 的管理员凭据。

点击或回车查看全尺寸图片

我现在可以观看任何视频,包括 SBT 团队放置的彩蛋。


已完成 The Walking Packets! - Blue Team Labs Online
我刚刚在 Blue Team Labs Online 上完成了 The Walking Packets!这是一个面向网络防御者的游戏化平台,用于测试和……
blueteamlabs.online CSD0tFqvECLokhw9aBeRqpNzLTXFlojmzFn6OlyTg9UXZ0dCc3IqMwPPOCk+emZ/oAuwo2O7jNMHv+zJ33baHw5cYB8E9qr4WpkGscWAWcSN57W8uWxVJT+vsWipTV6gjqgFRNms4+PgiYiVQX71cbIIFjoesFw8iyyzQkKY1bYAvPjckJSK4Ae9HAi1X0LF