ouaffaqoussama/ioc-lab-cobalt-strike-investigation

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

一份基于 Elastic、Zeek 和 Sysmon 遥测数据对模拟 Cobalt Strike 入侵进行端到端取证重构的实战分析报告与 IOC 集合。

Stars: 0 | Forks: 0

# Cobalt Strike 入侵 — 取证日志分析与 IOC 开发 对模拟的 Cobalt Strike 攻击在三台主机 Windows 环境中入侵过程的端到端调查,基于 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**,这为后续的数据包检查设定了初步优先级。 - 对目标端口进行聚合分析。在流量巨大的交互对中发现了 **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 告警相关联;Zeek 连接命中 22,281 次,`logstash-*` 总命中 67,491 次 | | 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 地址,产出了决定性的证据:一个 PowerShell 下载启动器正在获取 `http://23.57.69.98/hablo2`,且关联到 Web 服务器上的 **PID 1876**。 从这个进程向后倒推,确定了入口点——即 Python Web 应用 **`app.py`** 就是渗透利用向量,这与源自 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**) 进行内存执行——这是一种“靠生存环境作战”(Living off the Land)的技术,可避免在磁盘上留下独立的可执行文件。 - **持久化:** 文件 `85d2db3` 被安装为 Windows 服务 (`6759e42`),记录时间为 22:33。 - **Beacon 行为:** 观察到 DC1 通过 443 端口向 23.57.69.98 和 52.85.10.88 发起外部连接。 - **账户:** PowerShell 活动使用了 `WEB\Administrator` 账户;`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`。 **主动狩猎** 在整个网络范围内全面排查完整的指标集合——包括 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合规, MIT许可证, OpenCanary, Rootkit, Sysmon, Zeek, 数字取证, 网络信息收集, 自动化脚本, 越狱测试