JibrizZi/ioc-lab-cobalt-strike-investigation

GitHub: JibrizZi/ioc-lab-cobalt-strike-investigation

基于 Elastic、Zeek 和 Sysmon 遥测数据对模拟 Cobalt Strike 入侵进行端到端取证重建的项目,包含完整攻击链分析、IOC 集合和 MITRE ATT&CK 映射。

Stars: 0 | Forks: 0

# Cobalt Strike 入侵 — 取证日志分析与 IOC 开发 对一个三主机的 Windows 环境中模拟的 Cobalt Strike 攻击进行端到端调查,该调查基于 Elastic/Kibana、Zeek 和 Sysmon 遥测数据进行重建。 在只有原始日志索引的情况下,本次调查识别了初始漏洞利用向量、C2 基础设施、横向移动路径、持久化机制以及一个恶意创建的管理员账户——并产出了一套可操作的 IOC 集合和遏制方案。 ## 环境 | 主机 | 地址 | 角色 | |---|---|---| | WEB | 172.16.10.10 | 面向公网的 Web 服务器 (Python/Flask 应用) | | FS1 | 172.16.10.8 | 文件服务器 | | DC1 | 10.0.0.25 | 域控制器 | 数据集中共有七个唯一主机;以上三个已被确认受到入侵。 **遥测数据来源:** Zeek 连接日志、Sysmon(Event ID 10 — 进程访问)、Windows 安全和 PowerShell 操作日志(Event ID 4104 — 脚本块日志记录),以及 Windows 服务安装事件,这些数据全部被索引到 Elasticsearch 的 `logstash-*` 中,并通过 Kibana 进行查询。 ## 执行摘要 外部攻击者利用了面向公网的 Web 服务器上的一个 Python Web 应用(`app.py`),实现了远程命令执行。随后,通过 PowerShell `IEX` 下载器从 `23.57.69.98` 获取了第二阶段 payload,并通过 80 和 443 端口建立了 Cobalt Strike C2 连接。受感染的 Web 服务器随后被用作跳板机:使用 SMB 向文件服务器和其他主机进行横向移动,在域控制器上滥用 `rundll32` 执行内存级攻击,并安装了一个恶意二进制文件作为 Windows 服务以实现持久化。攻击者还创建了一个恶意的管理员账户,并且在 SMB 流量中观察到的 ZIP 压缩包表明,其进行了数据打包暂存,这是准备进行数据外传的典型特征。 **零号病人:** 2022-01-13 11:29:19.246 **数据集中观察到的驻留时间:** 从初始执行到服务持久化约 11 小时 ## 调查过程 ### 阶段 1 — 范围与发现 由于最初没有任何威胁指标,因此首要任务是梳理环境的整体结构并找出流量集中的位置。 - 对 `computer_name.keyword` 进行聚合以建立主机清单——共有 **7 个唯一主机**。 - 根据交互次数对源/目标 IP 对进行排名。排名第一的是 **77.83.199.29 ↔ 172.16.10.8**,这为初始的数据包检测设定了优先级。 - 对目标端口进行聚合。在这些高频交互的 IP 对中出现了 **RDP (3389)**,这提高了严重性评估等级:针对远程访问服务的高频流量是暴力破解的特征,而不是文件服务器的正常行为。 ![高频通信主机](https://static.pigsec.cn/wp-content/uploads/repos/cas/fb/fb43d4ca52458a3644356407ad4ab2a6baa033521f4e0188a4c5213edfc8f8ba.png) ![主机清单](https://static.pigsec.cn/wp-content/uploads/repos/cas/18/181a93c32614e1acd3c6cc7a7c34fac3fc6a63696d738eb2e0d1e6404dbb9da3.png) ![目标端口](https://static.pigsec.cn/wp-content/uploads/repos/cas/77/77cda6b447d6f9a7afcc13f90888233885ea82aaa227c0581545007e769b44a5.png) ### 阶段 2 — 识别威胁攻击者 从流量体量转向信誉度评估和告警关联,从而将恶意基础设施与干扰信息区分开来。最终突显出三个不同的外部地址,每个地址扮演不同的角色: | 地址 | 角色 | 证据 | |---|---|---| | 23.57.69.98 | 主 C2 | 与 Cobalt Strike 告警相关联;22,281 次 Zeek 连接命中,总计 67,491 次 `logstash-*` 命中 | | 89.187.174.89 | 漏洞利用源 | 针对 172.16.10.10 的 SQL 注入活动 | | 77.83.199.29 | 暴力破解 | 针对 172.16.10.8 的 RDP 暴力破解活动 | 数据量的巨大差异本身就是一种发现:对单一外部主机的 22,281 次 Zeek 连接是典型的 beacon 行为,而非正常用户流量。 ![恶意 IP 关联](https://static.pigsec.cn/wp-content/uploads/repos/cas/d5/d57fd657bd2d45e88f0cfe3be28a50acc3283ed7501bbc751556d189a1ed87b3.png) ![告警关联](https://static.pigsec.cn/wp-content/uploads/repos/cas/a9/a94c418bcba7e577c98a41da4cbcb31cdf7dd574c141b9131553f61581511572.png) ![Zeek 关联](https://static.pigsec.cn/wp-content/uploads/repos/cas/d9/d967cd9f29c8b1ec5221d2fdcb0b0d03a3221ff1bfbbdf01783bd3ba053f4da1.png) ### 阶段 3 — 初始访问与铁证 在命令行遥测数据中搜索该 C2 地址,产生了一个决定性的工件:一个用于获取 `http://23.57.69.98/hablo2` 的 PowerShell 下载器,绑定在 Web 服务器的 **PID 1876** 上。 从该进程向后追溯,确定了入侵的入口点——即 **`app.py`**,这个 Python Web 应用程序就是漏洞利用向量,这与来自 89.187.174.89 的 SQL 注入流量情况相符。这些证据综合起来,表明系统经历了远程命令执行,随后进行了分阶段的 payload 获取,这标志着攻击从单纯的漏洞利用过渡到了实际立足点的建立。 ![PowerShell IEX 下载](https://static.pigsec.cn/wp-content/uploads/repos/cas/a9/a95a1844864d2db2453c9178fbcb3db850aa9d7f2bb78b44997462bb34b965d1.png) ![命令行工件](https://static.pigsec.cn/wp-content/uploads/repos/cas/dd/dd854de5b8af4dd8704dc884d39e71c29e7fe5ee8576420537fd374bd1ac58ab.png) ### 阶段 4 — 横向移动、持久化与影响范围 - **跳板:** 受感染的 WEB 主机 (172.16.10.10) 被用作跳板机;**SMB (445)** 承载了针对 FS1 和其他主机的横向移动。 - **在 DC 上执行:** 滥用 `rundll32` (**PID 2436**) 进行内存内执行——这是一种“靠地生存”技术,旨在避免释放独立的可执行文件。 - **持久化:** 文件 `85d2db3` 被安装为 Windows 服务(`6759e42`),记录时间为 22:33。 - **Beaconing:** 观察到 DC1 在 443 端口上向 23.57.69.98 和 52.85.10.88 发起外部通信。 - **账户:** `WEB\Administrator` 被用于 PowerShell 活动;`bmctoots`(一个合法账户)被滥用以安装恶意服务;**`fake.admin`** 被创建为恶意管理员(首次出现于 2022-01-13 16:25:40)。 - **数据准备:** 在 SMB 流量中观察到 ZIP 压缩包(`wks1.zip`, `wks_admin.zip`)——这与数据收集和数据外传前的准备阶段相符。 ![SMB 横向移动](https://static.pigsec.cn/wp-content/uploads/repos/cas/78/785dc924eddd2625e9db17033e42886c06a940c7dfbc1cdb437eae3e32968114.png) ![服务持久化](https://static.pigsec.cn/wp-content/uploads/repos/cas/80/80ac753df20d495160327d62d80ff280ce1057da9073ce513c511a3681e25caf.png) ![服务安装与账户](https://static.pigsec.cn/wp-content/uploads/repos/cas/65/652d6466a410acb567f3fd919d5a1976cb8751e9c4a9e1273ea157b967c8e465.png) ## 入侵指标 机器可读版本位于 [`iocs/`](iocs/)。 **网络** | 指标 | 类型 | 上下文 | |---|---|---| | 23.57.69.98 | IPv4 | 主 Cobalt Strike C2 (80/443) | | 89.187.174.89 | IPv4 | SQL 注入源 | | 77.83.199.29 | IPv4 | RDP 暴力破解源 | | 52.85.10.88 | IPv4 | 次 beacon 目标 (443) | | `http://23.57.69.98/hablo2` | URL | 第二阶段 payload 获取 | **主机** | 指标 | 类型 | 上下文 | |---|---|---| | 85d2db3 | 文件名 | 持久化为服务的 payload | | 6759e42 | 服务名称 | 持久化机制 | | win_svc_a8 | 服务工件 | 相关服务命名 | | svcctl | 命名管道 | SMB 服务控制 — 远程服务创建 | | 1876 | PID | WEB 上的 PowerShell IEX | | 2436 | PID | DC1 上的 rundll32 | | 1816 | PID | 源进程,Sysmon Event 10 | | wks1.zip, wks_admin.zip | 文件名 | 暂存的压缩包 | **账户** | 账户 | 评估结论 | |---|---| | fake.admin | 攻击者创建的恶意管理员 | | WEB\Administrator | 已失陷 — 被用于执行 PowerShell | | bmctoots | 被滥用于安装服务的合法账户 | ## MITRE ATT&CK 映射 包含每种技术对应证据的完整表格,请参见 [`attack-mapping.md`](attack-mapping.md)。 | 战术 | 技术 | |---|---| | 初始访问 | T1190 — 利用面向公众的应用 | | 执行 | T1059.001 — PowerShell | | 命令与控制 | T1071.001 — 应用层协议: Web 协议 | | 命令与控制 | T1105 — 远程文件复制 | | 凭据访问 | T1110 — 暴力破解 | | 横向移动 | T1021.002 — SMB / Windows 管理共享 | | 横向移动 | T1021.001 — 远程桌面协议 | | 防御规避 | T1218.011 — 系统二进制文件代理执行: Rundll32 | | 持久化 | T1543.003 — 创建或修改系统进程: Windows 服务 | | 持久化 | T1136 — 创建账户 | | 收集 | T1074 — 数据暂存 | ## 建议的响应措施 **遏制** 隔离 DC1、FS1 和 WEB。在网络边界阻断 23.57.69.98、89.187.174.89 和 77.83.199.29。 **保留证据** 在进行修复之前对受影响的主机进行磁盘和内存镜像,捕获 PID 1876 和 2436 的内存数据。收集 `6759e42` 的服务注册表条目以及文件 `85d2db3`、`6759e42` 和 `win_svc_a8`。 **主动狩猎** 在整个网络资产中全面排查完整的 IOC 集合——包括 payload URL、恶意创建和被滥用的账户、暂存的压缩包,以及上述的服务名称和命名管道。 **根除与恢复** 禁用 `fake.admin`,轮换 `WEB\Administrator` 和 `bmctoots` 的凭据,移除恶意服务,修补 `app.py`,并审计应用程序的输入过滤机制。 **预防** 减少 RDP 暴露面,强制实施 MFA,对 80/443 端口的出站流量实施 TLS 检查,并确保 Sysmon Event 10 和 PowerShell 4104 日志得到妥善保留和监控——这两者在本次调查中都起到了决定性作用。 ## 我会采取的改进措施 本次调查主要依赖于流量体量优先的排查策略,这在这里奏效是因为该 beacon 比较喧闹。如果一个植入体带有抖动休眠机制且更加隐蔽,它就不会以这种方式暴露出来,因此首次排查将需要转而依赖于进程谱系——由 Web 服务进程派生出的 PowerShell 无论流量多少都是异常的。此外,域控制器上出现 `rundll32` 这一工件,本应比“高频通信主机”表格能成为一个更快的切入点。 ## 代码库内容 ``` ├── README.md full investigation writeup ├── attack-mapping.md ATT&CK techniques with supporting evidence ├── timeline.md chronological reconstruction ├── iocs/ machine-readable indicator sets (CSV) ├── queries/ Elastic/Kibana queries to reproduce each pivot └── screenshots/ evidence captures from the investigation ```
标签:AI合规, Cobalt Strike, IP 地址批量处理, MIT许可证, PE 加载器, 安全事件响应, 攻击诱捕, 数字取证, 网络信息收集, 自动化脚本, 越狱测试