safayetchowdhury/Incident-Response-with-Splunk
GitHub: safayetchowdhury/Incident-Response-with-Splunk
使用Splunk对模拟的网站攻击事件进行完整的取证分析,演示如何将攻击行为映射到网络杀伤链并提取入侵指标。
Stars: 0 | Forks: 0
# 使用 Splunk 进行事件响应
## 项目概述
欢迎!本实验展示了在真实场景中使用 Splunk 进行事件处理和取证分析。本次调查聚焦于对 imreallynotbatman.com 网站的针对性攻击和后续篡改。通过将攻击者的行为映射到网络杀伤链的 7 个阶段,我利用高级 Splunk SPL 查询和 OSINT 情报(通过 VirusTotal 和 Robtex)重建了攻击生命周期,揭示了导致该漏洞的基础设施。
### 我们可以从本实验中学到什么?
* 网络杀伤链阶段
* 有效利用 Splunk 查询
* 利用 OSINT
* 主机日志源和网络日志源的重要性
## 环境与数据集
本调查使用了行业标准的 Splunk"Boss of the SOC"(BOTS)v1 数据集。该场景模拟了对 Wayne Enterprise 及其面向公众的域名 imreallynotbatman.com 的针对性攻击。
## 场景概述
Wayne Enterprise 是一家大型企业,最近遭受了网络攻击。Wayne Enterprise 的官方网站是 http://www.imreallynotbatman.com。攻击者的商标现在显示在其网站上,并带有"YOUR SITE HAS BEEN DEFACED"(您的网站已被篡改)消息,如下图所示。Wayne Enterprise 使用 Splunk 作为其安全信息和事件管理解决方案,我将在整个调查过程中使用它。
## 调查范围
### 我使用的日志:
* Web 服务器
* 防火墙
* Suricata
* Sysmon
在开始之前,我先简要介绍一下网络杀伤链的 7 个阶段。阶段包括:
1. 侦察
2. 武器化
3. 投递
4. 利用
5. 安装
6. 命令与控制
7. 目标行动
## 侦察阶段
侦察是攻击者收集目标情报的阶段,可能涉及他们使用的系统、软件、Web 应用程序,也可能是关于员工或位置的信息。
### 步骤 1:查找日志
我将在索引 `botsv1` 中搜索包含 `imreallynotbatman.com` 术语的事件日志。
**搜索查询:**
```
index=botsv1 imreallynotbatman.com
```
我在 sourcetype 字段中找到了四个日志源:
* `suricata`
* `stream:http`
* `fortigate:utm`
* `iis`
### 步骤 2:初始源识别
在这里,我将过滤 `stream:http` 日志,查找域名 `imreallynotbatman.com`,以隔离并识别参与初始侦察的源 IP 地址。
**搜索查询:**
```
index=botsv1 imreallynotbatman.com sourcetype=stream:http
```
如我们所见,我在 `src_ip` 字段中找到了两个 IP:`40.80.148.42` 和 `23.22.63.114`。第一个 IP 所占百分比更高,为 93.4%,很可能就是攻击者。但我想进一步验证我的怀疑是否正确。
### 步骤 3:通过告警签名验证侦察
**搜索查询:**
```
index=botsv1 imreallynotbatman.com src=40.80.148.42 sourcetype=suricata
```
此查询过滤了 Suricata 日志,查找我怀疑具有恶意意图的 IP `40.80.148.42`。分析 alert.signature 字段后,CVE 标识符确认该 IP 就是漏洞利用尝试的来源。
## 利用阶段
在这一阶段,我将分析攻击者的漏洞利用尝试,以检查利用尝试是否成功。到目前为止,我从第一阶段找到了两个 IP 地址,但其中一个 IP **40.80.148.42** 试图用 IP **192.168.250.70** 扫描服务器。
### 步骤 1:统计请求数
我现在将检查每个 IP 向服务器发送了多少请求,为此我将使用下面的查询:
**搜索查询:**
```
index=botsv1 imreallynotbatman.com sourcetype=stream* | stats count(src_ip) as Requests by src_ip | sort -Requests
```
此查询使用 stats 函数显示 `src_ip` 字段中 IP 地址的计数。
### 步骤 2:入站流量分析
在这里,我将缩小结果范围,以显示发送到 IP 为 `192.168.250.70` 的服务器的请求。
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70"
```
`src_ip` 分布识别出了三个 IP 地址,一个内部和两个外部,发起了 HTTP 流量。
为了进一步分析这些连接的性质,我检查了 `http_method` 字段,观察到大多数请求都是通过 **POST** 请求发送到该服务器的,如下所示:
现在我将更进一步查看通过 POST 请求传入的流量类型。为此,我将缩小到字段 `http_method=POST`,如下面的查询所示:
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70" http_method=POST
```
### 步骤 3:Joomla CMS
左侧面板有一些字段,称为有趣字段。其中一些字段包括:
* `src_ip`
* `form_data`
* `http_user_agent`
* `uri`
**Joomla** 在 `uri`、`uri_path` 和 `http_referrer` 等字段中多次出现,表明该服务器使用的是 Joomla CMS(内容管理系统)。研究确定 Joomla CMS 管理门户位于 `/joomladministrator/index.php`。
监控到此特定 URI 的流量至关重要,因为它是暴力破解尝试和未授权访问的高价值目标。现在我将缩小搜索范围,以查看发送到登录门户的请求。
**搜索查询:**
```
index=botsv1 imreallynotbatman.com sourcetype=stream:http dest_ip="192.168.250.70" uri="/joomla/administrator/index.php"
```
`form_data` 字段包含通过管理面板页面上的表单发送的请求,该页面具有登录门户。我怀疑攻击者可能尝试了多个凭据来获取管理界面的访问权限。
为了确认我的怀疑并有效分析模式,我将使用以下查询将搜索细化为摘要表:
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70" http_method=POST uri="/joomla/administrator/index.php"
| table _time uri src_ip dest_ip form_data
```
通过分析 `username` 和 `passwd` 字段,我识别出来自 IP `23.22.63.114` 的暴力破解攻击。攻击者以大量密码组合针对 `admin` 账户,确认了系统性的凭据猜测尝试。
### 步骤 4:提取和过滤
原始日志显示 `form_data` 中的 `username` 和 `passwd` 字段未被正确解析。为了隔离相关事件,我使用通配符过滤器 `form_data=*username*passwd*` 优化了搜索。这专门捕获了 `form_data` 中同时存在两个凭据字段的日志。
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70" http_method=POST uri="/joomla/administrator/index.php" form_data=*username*passwd* | table _time uri src_ip dest_ip form_data
```
现在我将应用**正则表达式(Regex)**来隔离并将每次密码尝试提取到一个名为 `creds` 的新字段中。
使用命令 `rex field=form_data "passwd=(?\w+)"`,我可以将混乱的 `form_data` 字符串转换为清晰的、专注于暴力破解攻击期间使用的特定密码字符串的视图。
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70" http_method=POST form_data=*username*passwd* | rex field=form_data "passwd=(?\w+)"
| table src_ip creds
```
### 步骤 4:手动与自动归因
在提取了针对 `admin` 账户使用的凭据后,分析 `http_user_agent` 字段揭示了两个不同的攻击向量。
主要来源 IP `23.22.63.114` 使用 Python 脚本执行高容量、自动化的暴力破解攻击。相反,密码 `batman` 的单个登录尝试来自 IP `40.80.148.42`,通过 Mozilla 浏览器。
我现在将优化搜索,以关联这些不同的源 IP 并分析其请求的时间。
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70" http_method=POST form_data=*username*passwd* | rex field=form_data "passwd=(?\w+)"
| table _time src_ip uri http_user_agent creds
```
在这里,我可以关联这些不同的源 IP 及其各自的工具,区分自动脚本和手动、人工驱动的干预。
| 源 IP | 工具(用户代理) | 操作类型 |
| :--- | :--- | :--- |
| `23.22.63.114` | `Python-urllib` | **自动化**(高容量暴力破解)|
| `40.80.148.42` | `Mozilla/5.0` | **手动**(针对性凭据测试)|
## 安装阶段
暴力破解攻击成功后,调查进入**安装阶段**。攻击者试图通过安装后门或恶意应用程序来保持在系统中的操作,也称为获得**持久性**。
### 步骤 1:有效载荷源关联
我已经找到证据表明 `imreallynotbatman.com` 被猜测密码的 Python 脚本入侵。现在我需要查看是否有任何恶意程序从攻击者的 IP 上传到服务器。为了开始搜索,我将过滤所有到服务器 `192.168.250.70` 的 HTTP 流量,查找以 `.exe` 结尾的文件。
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70" *.exe
```
现在,我将这些文件与之前识别的攻击者 IP 进行交叉引用。通过在 Splunk 中选择文件名并检查 `c_ip`(客户端 IP)字段,我可以确认这些恶意上传是否来自与暴力破解攻击相同的来源。
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70" part_filename{}="3791.exe"
```
通过检查 `c_ip` 字段,我确认恶意文件是从 `40.80.148.42` 上传的。这是一个关键发现,因为它将之前识别的手动登录尝试直接连接到恶意软件的安装。这证明攻击者成功地从测试凭据进展到了交付有效载荷。
### 步骤 2:执行分析
我发现 `3791.exe` 已成功上传;下一步逻辑是确定它是否实际执行。为了调查这一点,我将搜索从网络流量转向主机日志,以识别与此文件关联的进程创建事件。
**搜索查询:**
```
index=botsv1 "3791.exe"
```
我在多个主机日志源中发现了可执行文件 3791.exe 的痕迹,包括 Sysmon、WinEventLog 和 fortigate_utm。
为了确认文件是否实际运行,我专注于 Sysmon 日志。具体来说,我正在查找 EventCode=1,它表示进程创建事件。这将提供我需要的详细信息,如完整命令行和文件哈希,以证明该程序已在系统上运行。
为什么这很重要:
• Sysmon 事件 ID 1:这是 Windows 环境中进程启动的主要指标。
• 证据:如果 `3791.exe` 出现在此事件 ID 下,则确认安装成功且恶意软件现在处于活动状态。
**搜索查询:**
```
index=botsv1 "3791.exe" sourcetype="XmlWinEventLog" EventCode=1
```
通过将**事件 ID 1**(进程创建)与**命令行**活动和提取的**MD5 哈希**相关联,我已确认攻击者成功在服务器上执行了恶意有效载荷。
上图显示了我提取的 **MD5 哈希**,这标志着安装阶段的结束。
## 目标行动阶段
由于网站已被篡改,我需要调查修改了哪些内容。我将首先分析 **Suricata** 日志,以映射外部 IP 与 IP 为 `192.168.250.70` 的 Web 服务器之间的流量。这将帮助我精确定位攻击者如何与网站交互以更改其外观。
**搜索查询:**
```
index=botsv1 dest=192.168.250.70 sourcetype=suricata
```
Suricata 日志未显示任何外部 IP 访问服务器。现在我将反转查询,以查看服务器是否发起任何出站通信。
**搜索查询:**
```
index=botsv1 src=192.168.250.70 sourcetype=suricata
```
Web 服务器发起流量是非常不寻常的,因为它应该主要是客户端请求的目标。然而,这些日志显示服务器向三个外部 IP 地址发起了出站连接。
由于涉及的流量很大,我需要转向并单独检查每个目标 IP,这将使我能够识别这些通信的具体性质。
**搜索查询:**
```
index=botsv1 src=192.168.250.70 sourcetype=suricata dest_ip=23.22.63.114
```
URL 字段包含两个 PHP 文件和一个可疑图像。鉴于 jpeg 文件的名称具有挑衅性(`Poisonivy-is-coming-for-you-batman.jpeg`),我将更新查询以跟踪此文件的来源。
**搜索查询:**
```
index=botsv1 url="/poisonivy-is-coming-for-you-batman.jpeg" dest_ip="192.168.250.70" | table _time src dest_ip http.hostname url
```
证据确认篡改是由文件 `poisonivy-is-coming-for-you-batman.jpeg` 触发的。这个恶意资源直接从攻击者的主机 `prankglassinebracket.jumpingcrab.com` 拉取,提供了外部来源与网站视觉篡改之间的明确联系。
## 命令与控制(C2)阶段
在篡改之前,攻击者使用动态 DNS(DDNS)域上传了恶意有效载荷以掩盖其基础设施。我的下一个目标是识别映射到该 DNS 记录的具体 IP。为了追踪此通信,我将分析网络日志,从 `fortigate_utm` 开始查看防火墙活动,然后转向其他来源。
**搜索查询:**
```
index=botsv1 sourcetype=fortigate_utm "poisonivy-is-coming-for-you-batman.jpeg"
```
`fortigate_utm` 日志显示源和目标 IP,url 字段提供 **FQDN**。此字段使我能够将攻击者的域直接映射到用于恶意下载的特定 IP。
我将交叉引用 `stream:http` 日志,以 granular 地验证攻击者 IP 与恶意主机之间的取证链接。
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip=23.22.63.114 "poisonivy-is-coming-for-you-batman.jpeg" src_ip=192.168.250.70
```
可疑域现已确认为攻击者用于入侵后通信的 **命令与控制(C2)** 服务器。
## 武器化阶段
攻击者通过暂存恶意软件、欺骗域和 C2 基础设施来进行武器化。我现在将使用 **OSINT** 调查 `prankglassinebracket.jumpingcrab.com`,揭示针对 Wayne Enterprise 预先生成的基础设施的 IP 和情报。
### Robtex 分析
通过搜索 **Robtex**,我已识别出与攻击者基础设施关联的 IP 地址和子域名。分析显示三个主要 IP — `69.197.18.183`、`70.39.97.227` 和 `169.47.130.85` — 以及可能预先生成用于进一步恶意活动的同级域列表。
**参考:** [Robtex DNS Lookup](https://www.robtex.com/dns-lookup/prankglassinebracket.jumpingcrab.com)
在 Robtex 上搜索 IP 地址 `23.22.63.114` 揭示了一组模仿 Wayne Enterprise 的域。主机名如 `waynecorpnc.com`、`waynecorpinc.com` 和 `wanecorpinc.com` 是**域名仿冒**的明显例子,可能由攻击者在攻击的武器化阶段预先设置。
**参考:** [Robtex IP Lookup - 23.22.63.114](https://www.robtex.com/ip-lookup/23.22.63.114)
### VirusTotal 分析
在 **VirusTotal**(用于分析可疑资产的首要 OSINT 工具)上搜索该 IP,在"RELATIONS"标签下显示关联域列表。
这些发现确认了多个模仿"Wayne Enterprise"的相似域的存在,进一步证明攻击者已暂存完整的基础设施以实现其目标。这种准备程度表明这是一次复杂的针对性攻击,而非随机的机会性攻击。
在域列表中,我们看到了与攻击者关联的域 `www.po1s0n1vy.com`。让我在 VirusTotal 上搜索此域。
我已成功揭露攻击者预先部署的基础设施。这结束了对武器化阶段的分析,提供了针对 Wayne Enterprise 攻击所准备的工具和欺骗性资产的完整视图。
## 投递阶段
在**投递阶段**,攻击者通过各种向量部署恶意软件以获得初始访问权限。利用之前识别的 IP 和域,我将利用 OSINT 和威胁狩猎平台来揭示关联的恶意软件。
由于"Poison Ivy"组织已知在初次尝试失败时会使用二次攻击向量,我将关联内部日志与威胁情报,以完整绘制其方法论。
#### 使用的 OSINT 资源:
* **VirusTotal**
* **ThreatMiner**
* **Hybrid-Analysis**
我将通过在 **ThreatMiner** 上搜索 IP `23.22.63.114` 来开始调查,以识别与此主机关联的任何先前发现的恶意软件样本。
**参考:** [ThreatMiner Host Lookup - 23.22.63.114](https://www.threatminer.org/host.php?q=23.22.63.114#gsc.tab=0&gsc.q=23.22.63.114&gsc.page=1)
三个文件与此 IP 关联,包括具有 **MD5 哈希 c99131e0169171935c5ac32615ed6261** 的恶意有效载荷。
如下所示,通过分析此哈希的元数据,我可以揭示文件行为及其在对手投递策略中的角色的关键细节。
### VirusTotal:恶意软件元数据分析
通过在 **VirusTotal** 上分析特定文件哈希,我访问了**详细信息**标签以提取关于恶意软件有效载荷的关键元数据。
**参考:** [VirusTotal File Analysis - 9709...34a8](https://www.virustotal.com/gui/file/9709473ab351387aab9e816eff3910b9f28a7a70202e250ed46dba8f820f34a8/community)
### Hybrid-Analysis:行为沙箱分析
**Hybrid-Analysis** 是一个强大的行为分析平台,可在沙箱中执行恶意软件以观察其实时活动。它提供了全面的取证分解,使我能够准确查看有效载荷一旦到达目标系统后会做什么。
此行为分析提供的关键洞察包括:
* **网络通信:** 识别 DNS 请求和联系的主机(包括国家映射)。
* **取证标记:** 识别硬编码字符串、DLL /导出和 Mutex 信息。
* **威胁情报:** 将活动映射到 **MITRE ATT&CK** 框架并识别特定的恶意指标。
* **视觉证据:** 审查运行时截图以观察恶意软件与操作系统的交互。
# 调查总结:Wayne Enterprise 事件
本报告完成了对 `imreallynotbatman.com` 攻击的端到端取证分析。通过将碎片化日志映射到**网络杀伤链**,我将原始数据转化为对手生命周期的清晰叙述。
## 最终事件重建
### 1. 侦察与利用
攻击始于对外部 Web 基础设施的重度探测。我识别出了两个主要攻击者控制 IP 发起的持续扫描和暴力破解活动。
* **入侵:** 在 142 个唯一暴力破解尝试中,对手成功进行一次身份验证,获得了对 Web 服务器的未授权访问。
* **主要归因 IP:** `40.80.148.42`(扫描/访问)和 `23.22.63.114`(暴力破解来源)。
### 2. 安装与目标行动
一旦获得访问权限,对手迅速采取行动巩固其存在并执行其可见目标:篡改公司公众形象。
* **持久性:** Sysmon 日志捕获了恶意可执行文件 `3791.exe` 的上传。我提取了 **MD5 哈希** 用于进一步取证透视和基于签名的阻止。
* **篡改:** 攻击者用挑衅性图像 `poisonivy-is-coming-for-you-batman.jpeg` 替换了合法网站内容,确认其主要目标的完成。
### 3. 武器化(基础设施分析)
使用 OSINT 工具如 **Robtex** 和 **VirusTotal**,我超越了内部日志来绘制对手的暂存环境。
* **命令与控制(C2):** 对手使用动态 DNS 域 `prankglassinebracket.jumpingcrab.com` 来掩盖其物理位置。
* **欺骗性资产:** 我发现了一组域名仿冒域(如 `waynecorpnc.com`、`wanecorpinc.com`)预先生成用于潜在的钓鱼或凭据收集。
### 4. 投递(次要攻击向量)
分析显示对手有备用计划以防初次尝试失败。
* **恶意软件发现:** 我发现了与攻击者基础设施关联的次要有效载荷 `MirandaTateScreensaver.scr.exe`。
* **取证签名:** MD5 哈希 `c99131e0169171935c5ac32615ed6261` 被识别为未来威胁狩猎的关键**入侵指标(IoC)**。
## 最终反思
本调查凸显了**多层可见性**的重要性。通过将 Splunk 网络遥测与基于主机的 Sysmon 日志和外部威胁情报相关联,我不仅能够看到发生了什么,还能够看到对手如何策划其活动。
从简单的暴力破解入侵开始,最终演变为全面篡改。我成功揭露了 **Poison Ivy** 组织为罪魁祸首,暴露了预先生成的基础设施和二次恶意软件的复杂网络,证明他们的意图远不止一个被入侵的主页。
**联系与探索:**
* **GitHub:** 感谢您的关注!本实验是我致力于掌握事件响应和取证分析的持续承诺的一部分。我不断添加新的实验和文档——请很快回来查看即将推出的项目!查看我的其他工作,包括我的[**基于 SQL 的安全事件调查**](https://github.com/safayetchowdhury/SQL-based-Security-Incident-Investigation)项目。
* **LinkedIn:** 我很乐意**[建立联系](https://www.linkedin.com/in/chowdhurysafayet/)**!如果您在信息安全领域工作或对这些方法论感兴趣,让我们讨论如何共同改善安全态势。
## 调查范围
### 我使用的日志:
* Web 服务器
* 防火墙
* Suricata
* Sysmon
在开始之前,我先简要介绍一下网络杀伤链的 7 个阶段。阶段包括:
1. 侦察
2. 武器化
3. 投递
4. 利用
5. 安装
6. 命令与控制
7. 目标行动
## 侦察阶段
侦察是攻击者收集目标情报的阶段,可能涉及他们使用的系统、软件、Web 应用程序,也可能是关于员工或位置的信息。
### 步骤 1:查找日志
我将在索引 `botsv1` 中搜索包含 `imreallynotbatman.com` 术语的事件日志。
**搜索查询:**
```
index=botsv1 imreallynotbatman.com
```
我在 sourcetype 字段中找到了四个日志源:
* `suricata`
* `stream:http`
* `fortigate:utm`
* `iis`
### 步骤 2:初始源识别
在这里,我将过滤 `stream:http` 日志,查找域名 `imreallynotbatman.com`,以隔离并识别参与初始侦察的源 IP 地址。
**搜索查询:**
```
index=botsv1 imreallynotbatman.com sourcetype=stream:http
```
如我们所见,我在 `src_ip` 字段中找到了两个 IP:`40.80.148.42` 和 `23.22.63.114`。第一个 IP 所占百分比更高,为 93.4%,很可能就是攻击者。但我想进一步验证我的怀疑是否正确。
### 步骤 3:通过告警签名验证侦察
**搜索查询:**
```
index=botsv1 imreallynotbatman.com src=40.80.148.42 sourcetype=suricata
```
此查询过滤了 Suricata 日志,查找我怀疑具有恶意意图的 IP `40.80.148.42`。分析 alert.signature 字段后,CVE 标识符确认该 IP 就是漏洞利用尝试的来源。
## 利用阶段
在这一阶段,我将分析攻击者的漏洞利用尝试,以检查利用尝试是否成功。到目前为止,我从第一阶段找到了两个 IP 地址,但其中一个 IP **40.80.148.42** 试图用 IP **192.168.250.70** 扫描服务器。
### 步骤 1:统计请求数
我现在将检查每个 IP 向服务器发送了多少请求,为此我将使用下面的查询:
**搜索查询:**
```
index=botsv1 imreallynotbatman.com sourcetype=stream* | stats count(src_ip) as Requests by src_ip | sort -Requests
```
此查询使用 stats 函数显示 `src_ip` 字段中 IP 地址的计数。
### 步骤 2:入站流量分析
在这里,我将缩小结果范围,以显示发送到 IP 为 `192.168.250.70` 的服务器的请求。
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70"
```
`src_ip` 分布识别出了三个 IP 地址,一个内部和两个外部,发起了 HTTP 流量。
为了进一步分析这些连接的性质,我检查了 `http_method` 字段,观察到大多数请求都是通过 **POST** 请求发送到该服务器的,如下所示:
现在我将更进一步查看通过 POST 请求传入的流量类型。为此,我将缩小到字段 `http_method=POST`,如下面的查询所示:
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70" http_method=POST
```
### 步骤 3:Joomla CMS
左侧面板有一些字段,称为有趣字段。其中一些字段包括:
* `src_ip`
* `form_data`
* `http_user_agent`
* `uri`
**Joomla** 在 `uri`、`uri_path` 和 `http_referrer` 等字段中多次出现,表明该服务器使用的是 Joomla CMS(内容管理系统)。研究确定 Joomla CMS 管理门户位于 `/joomladministrator/index.php`。
监控到此特定 URI 的流量至关重要,因为它是暴力破解尝试和未授权访问的高价值目标。现在我将缩小搜索范围,以查看发送到登录门户的请求。
**搜索查询:**
```
index=botsv1 imreallynotbatman.com sourcetype=stream:http dest_ip="192.168.250.70" uri="/joomla/administrator/index.php"
```
`form_data` 字段包含通过管理面板页面上的表单发送的请求,该页面具有登录门户。我怀疑攻击者可能尝试了多个凭据来获取管理界面的访问权限。
为了确认我的怀疑并有效分析模式,我将使用以下查询将搜索细化为摘要表:
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70" http_method=POST uri="/joomla/administrator/index.php"
| table _time uri src_ip dest_ip form_data
```
通过分析 `username` 和 `passwd` 字段,我识别出来自 IP `23.22.63.114` 的暴力破解攻击。攻击者以大量密码组合针对 `admin` 账户,确认了系统性的凭据猜测尝试。
### 步骤 4:提取和过滤
原始日志显示 `form_data` 中的 `username` 和 `passwd` 字段未被正确解析。为了隔离相关事件,我使用通配符过滤器 `form_data=*username*passwd*` 优化了搜索。这专门捕获了 `form_data` 中同时存在两个凭据字段的日志。
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70" http_method=POST uri="/joomla/administrator/index.php" form_data=*username*passwd* | table _time uri src_ip dest_ip form_data
```
现在我将应用**正则表达式(Regex)**来隔离并将每次密码尝试提取到一个名为 `creds` 的新字段中。
使用命令 `rex field=form_data "passwd=(?
### 步骤 4:手动与自动归因
在提取了针对 `admin` 账户使用的凭据后,分析 `http_user_agent` 字段揭示了两个不同的攻击向量。
主要来源 IP `23.22.63.114` 使用 Python 脚本执行高容量、自动化的暴力破解攻击。相反,密码 `batman` 的单个登录尝试来自 IP `40.80.148.42`,通过 Mozilla 浏览器。
我现在将优化搜索,以关联这些不同的源 IP 并分析其请求的时间。
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70" http_method=POST form_data=*username*passwd* | rex field=form_data "passwd=(?
现在,我将这些文件与之前识别的攻击者 IP 进行交叉引用。通过在 Splunk 中选择文件名并检查 `c_ip`(客户端 IP)字段,我可以确认这些恶意上传是否来自与暴力破解攻击相同的来源。
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip="192.168.250.70" part_filename{}="3791.exe"
```
通过检查 `c_ip` 字段,我确认恶意文件是从 `40.80.148.42` 上传的。这是一个关键发现,因为它将之前识别的手动登录尝试直接连接到恶意软件的安装。这证明攻击者成功地从测试凭据进展到了交付有效载荷。
### 步骤 2:执行分析
我发现 `3791.exe` 已成功上传;下一步逻辑是确定它是否实际执行。为了调查这一点,我将搜索从网络流量转向主机日志,以识别与此文件关联的进程创建事件。
**搜索查询:**
```
index=botsv1 "3791.exe"
```
我在多个主机日志源中发现了可执行文件 3791.exe 的痕迹,包括 Sysmon、WinEventLog 和 fortigate_utm。
为了确认文件是否实际运行,我专注于 Sysmon 日志。具体来说,我正在查找 EventCode=1,它表示进程创建事件。这将提供我需要的详细信息,如完整命令行和文件哈希,以证明该程序已在系统上运行。
为什么这很重要:
• Sysmon 事件 ID 1:这是 Windows 环境中进程启动的主要指标。
• 证据:如果 `3791.exe` 出现在此事件 ID 下,则确认安装成功且恶意软件现在处于活动状态。
**搜索查询:**
```
index=botsv1 "3791.exe" sourcetype="XmlWinEventLog" EventCode=1
```
通过将**事件 ID 1**(进程创建)与**命令行**活动和提取的**MD5 哈希**相关联,我已确认攻击者成功在服务器上执行了恶意有效载荷。
上图显示了我提取的 **MD5 哈希**,这标志着安装阶段的结束。
## 目标行动阶段
由于网站已被篡改,我需要调查修改了哪些内容。我将首先分析 **Suricata** 日志,以映射外部 IP 与 IP 为 `192.168.250.70` 的 Web 服务器之间的流量。这将帮助我精确定位攻击者如何与网站交互以更改其外观。
**搜索查询:**
```
index=botsv1 dest=192.168.250.70 sourcetype=suricata
```
Suricata 日志未显示任何外部 IP 访问服务器。现在我将反转查询,以查看服务器是否发起任何出站通信。
**搜索查询:**
```
index=botsv1 src=192.168.250.70 sourcetype=suricata
```
Web 服务器发起流量是非常不寻常的,因为它应该主要是客户端请求的目标。然而,这些日志显示服务器向三个外部 IP 地址发起了出站连接。
由于涉及的流量很大,我需要转向并单独检查每个目标 IP,这将使我能够识别这些通信的具体性质。
**搜索查询:**
```
index=botsv1 src=192.168.250.70 sourcetype=suricata dest_ip=23.22.63.114
```
URL 字段包含两个 PHP 文件和一个可疑图像。鉴于 jpeg 文件的名称具有挑衅性(`Poisonivy-is-coming-for-you-batman.jpeg`),我将更新查询以跟踪此文件的来源。
**搜索查询:**
```
index=botsv1 url="/poisonivy-is-coming-for-you-batman.jpeg" dest_ip="192.168.250.70" | table _time src dest_ip http.hostname url
```
`fortigate_utm` 日志显示源和目标 IP,url 字段提供 **FQDN**。此字段使我能够将攻击者的域直接映射到用于恶意下载的特定 IP。
我将交叉引用 `stream:http` 日志,以 granular 地验证攻击者 IP 与恶意主机之间的取证链接。
**搜索查询:**
```
index=botsv1 sourcetype=stream:http dest_ip=23.22.63.114 "poisonivy-is-coming-for-you-batman.jpeg" src_ip=192.168.250.70
```
可疑域现已确认为攻击者用于入侵后通信的 **命令与控制(C2)** 服务器。
## 武器化阶段
攻击者通过暂存恶意软件、欺骗域和 C2 基础设施来进行武器化。我现在将使用 **OSINT** 调查 `prankglassinebracket.jumpingcrab.com`,揭示针对 Wayne Enterprise 预先生成的基础设施的 IP 和情报。
### Robtex 分析
通过搜索 **Robtex**,我已识别出与攻击者基础设施关联的 IP 地址和子域名。分析显示三个主要 IP — `69.197.18.183`、`70.39.97.227` 和 `169.47.130.85` — 以及可能预先生成用于进一步恶意活动的同级域列表。
**参考:** [Robtex DNS Lookup](https://www.robtex.com/dns-lookup/prankglassinebracket.jumpingcrab.com)
在 Robtex 上搜索 IP 地址 `23.22.63.114` 揭示了一组模仿 Wayne Enterprise 的域。主机名如 `waynecorpnc.com`、`waynecorpinc.com` 和 `wanecorpinc.com` 是**域名仿冒**的明显例子,可能由攻击者在攻击的武器化阶段预先设置。
**参考:** [Robtex IP Lookup - 23.22.63.114](https://www.robtex.com/ip-lookup/23.22.63.114)
### VirusTotal 分析
在 **VirusTotal**(用于分析可疑资产的首要 OSINT 工具)上搜索该 IP,在"RELATIONS"标签下显示关联域列表。
这些发现确认了多个模仿"Wayne Enterprise"的相似域的存在,进一步证明攻击者已暂存完整的基础设施以实现其目标。这种准备程度表明这是一次复杂的针对性攻击,而非随机的机会性攻击。
在域列表中,我们看到了与攻击者关联的域 `www.po1s0n1vy.com`。让我在 VirusTotal 上搜索此域。
我已成功揭露攻击者预先部署的基础设施。这结束了对武器化阶段的分析,提供了针对 Wayne Enterprise 攻击所准备的工具和欺骗性资产的完整视图。
## 投递阶段
在**投递阶段**,攻击者通过各种向量部署恶意软件以获得初始访问权限。利用之前识别的 IP 和域,我将利用 OSINT 和威胁狩猎平台来揭示关联的恶意软件。
由于"Poison Ivy"组织已知在初次尝试失败时会使用二次攻击向量,我将关联内部日志与威胁情报,以完整绘制其方法论。
#### 使用的 OSINT 资源:
* **VirusTotal**
* **ThreatMiner**
* **Hybrid-Analysis**
我将通过在 **ThreatMiner** 上搜索 IP `23.22.63.114` 来开始调查,以识别与此主机关联的任何先前发现的恶意软件样本。
**参考:** [ThreatMiner Host Lookup - 23.22.63.114](https://www.threatminer.org/host.php?q=23.22.63.114#gsc.tab=0&gsc.q=23.22.63.114&gsc.page=1)
三个文件与此 IP 关联,包括具有 **MD5 哈希 c99131e0169171935c5ac32615ed6261** 的恶意有效载荷。
如下所示,通过分析此哈希的元数据,我可以揭示文件行为及其在对手投递策略中的角色的关键细节。
### VirusTotal:恶意软件元数据分析
通过在 **VirusTotal** 上分析特定文件哈希,我访问了**详细信息**标签以提取关于恶意软件有效载荷的关键元数据。
**参考:** [VirusTotal File Analysis - 9709...34a8](https://www.virustotal.com/gui/file/9709473ab351387aab9e816eff3910b9f28a7a70202e250ed46dba8f820f34a8/community)
### Hybrid-Analysis:行为沙箱分析
**Hybrid-Analysis** 是一个强大的行为分析平台,可在沙箱中执行恶意软件以观察其实时活动。它提供了全面的取证分解,使我能够准确查看有效载荷一旦到达目标系统后会做什么。
此行为分析提供的关键洞察包括:
* **网络通信:** 识别 DNS 请求和联系的主机(包括国家映射)。
* **取证标记:** 识别硬编码字符串、DLL /导出和 Mutex 信息。
* **威胁情报:** 将活动映射到 **MITRE ATT&CK** 框架并识别特定的恶意指标。
* **视觉证据:** 审查运行时截图以观察恶意软件与操作系统的交互。
# 调查总结:Wayne Enterprise 事件
本报告完成了对 `imreallynotbatman.com` 攻击的端到端取证分析。通过将碎片化日志映射到**网络杀伤链**,我将原始数据转化为对手生命周期的清晰叙述。
## 最终事件重建
### 1. 侦察与利用
攻击始于对外部 Web 基础设施的重度探测。我识别出了两个主要攻击者控制 IP 发起的持续扫描和暴力破解活动。
* **入侵:** 在 142 个唯一暴力破解尝试中,对手成功进行一次身份验证,获得了对 Web 服务器的未授权访问。
* **主要归因 IP:** `40.80.148.42`(扫描/访问)和 `23.22.63.114`(暴力破解来源)。
### 2. 安装与目标行动
一旦获得访问权限,对手迅速采取行动巩固其存在并执行其可见目标:篡改公司公众形象。
* **持久性:** Sysmon 日志捕获了恶意可执行文件 `3791.exe` 的上传。我提取了 **MD5 哈希** 用于进一步取证透视和基于签名的阻止。
* **篡改:** 攻击者用挑衅性图像 `poisonivy-is-coming-for-you-batman.jpeg` 替换了合法网站内容,确认其主要目标的完成。
### 3. 武器化(基础设施分析)
使用 OSINT 工具如 **Robtex** 和 **VirusTotal**,我超越了内部日志来绘制对手的暂存环境。
* **命令与控制(C2):** 对手使用动态 DNS 域 `prankglassinebracket.jumpingcrab.com` 来掩盖其物理位置。
* **欺骗性资产:** 我发现了一组域名仿冒域(如 `waynecorpnc.com`、`wanecorpinc.com`)预先生成用于潜在的钓鱼或凭据收集。
### 4. 投递(次要攻击向量)
分析显示对手有备用计划以防初次尝试失败。
* **恶意软件发现:** 我发现了与攻击者基础设施关联的次要有效载荷 `MirandaTateScreensaver.scr.exe`。
* **取证签名:** MD5 哈希 `c99131e0169171935c5ac32615ed6261` 被识别为未来威胁狩猎的关键**入侵指标(IoC)**。
## 最终反思
本调查凸显了**多层可见性**的重要性。通过将 Splunk 网络遥测与基于主机的 Sysmon 日志和外部威胁情报相关联,我不仅能够看到发生了什么,还能够看到对手如何策划其活动。
从简单的暴力破解入侵开始,最终演变为全面篡改。我成功揭露了 **Poison Ivy** 组织为罪魁祸首,暴露了预先生成的基础设施和二次恶意软件的复杂网络,证明他们的意图远不止一个被入侵的主页。
**联系与探索:**
* **GitHub:** 感谢您的关注!本实验是我致力于掌握事件响应和取证分析的持续承诺的一部分。我不断添加新的实验和文档——请很快回来查看即将推出的项目!查看我的其他工作,包括我的[**基于 SQL 的安全事件调查**](https://github.com/safayetchowdhury/SQL-based-Security-Incident-Investigation)项目。
* **LinkedIn:** 我很乐意**[建立联系](https://www.linkedin.com/in/chowdhurysafayet/)**!如果您在信息安全领域工作或对这些方法论感兴趣,让我们讨论如何共同改善安全态势。标签:APT攻击, BOTS数据集, BurpSuite集成, Cyber Kill Chain, DAST, ESC4, Firewall, Metaprompt, OSINT, Splunk SPL, Suricata, Sysmon, Webserver日志, Web安全, 企业安全, 域环境安全, 威胁情报, 安全运营, 库, 应急响应, 开发者工具, 恶意软件分析, 扫描框架, 攻击链分析, 现代安全运营, 红队行动, 网站篡改, 网络安全, 网络杀伤链, 网络流量分析, 网络资产管理, 蓝队分析, 隐私保护