tahosprojects/Honeypot-TI-LLM-Splunk

GitHub: tahosprojects/Honeypot-TI-LLM-Splunk

该项目构建了一条从蜜罐捕获到Splunk索引再到LLM自动化MITRE ATT&CK分类的实时威胁情报pipeline,解决了海量原始攻击事件难以高效分拣的问题。

Stars: 0 | Forks: 0

# Honeypot-TI-LLM-Splunk 实时蜜罐威胁情报与自动化分拣实验室。面向公网的 T-Pot 蜜罐捕获真实的互联网攻击流量,Splunk 集中处理遥测数据,Canarytokens 增加欺骗层,Python 分类器使用 LLM 将捕获的事件映射到 MITRE ATT&CK,然后将丰富后的结果写回 Splunk。 **技术栈:** T-Pot 24.04.1 · Splunk Enterprise · Ubuntu 22.04 · RamNode VPS · Docker · Canarytokens · Python · Anthropic Claude API · Splunk REST API · Splunk HEC · MITRE ATT&CK **详细说明:** [Honeypot_TI_Lab_Writeup.pdf]() 深入涵盖了架构、故障排除、欺骗层和 LLM 数据扩充 pipeline。 ## 概述 我之前的实验室专注于 Active Directory 遥测、端点取证和云检测工程。该项目通过将受控蜜罐环境暴露于公共互联网并捕获真实的攻击者行为,而不仅仅是模拟活动,将之前的工作扩展到了实时威胁情报领域。 目标是构建一个小型 SOC 风格的 pipeline:收集原始攻击遥测数据,将其索引到 Splunk 中,添加高可信度的欺骗信号,并通过使用 MITRE ATT&CK 上下文丰富事件来自动化初步分拣。 ## 架构 ``` Internet Attackers ↓ T-Pot Honeypots + Honeytokens ↓ Splunk SIEM ↓ Python LLM Classifier ↓ MITRE ATT&CK-Enriched Events ↓ Splunk HEC ``` 该环境运行在单个 RamNode VPS 上。T-Pot 提供蜜罐服务,Splunk 充当中央 SIEM,Canarytokens 创建欺骗警报,Python 分类器拉取最近的 Splunk 事件,使用 Claude 对其进行分类,并将丰富后的输出写回 Splunk。 ## 1. VPS 部署 实验室最初在一台配备 8GB RAM、4 个 vCPU 和 180GB 存储空间的 RamNode Ubuntu 22.04 VPS 上运行。这足以开始构建,但不足以可靠地运行 Splunk 和完整的蜜罐技术栈。

安装 T-Pot 后,SSH 从端口 `22` 移至端口 `64295`,允许蜜罐服务占用常用端口作为诱饵,同时保持管理的独立性。

## 2. T-Pot 蜜罐部署 T-Pot 24.04.1 以 Hive 模式部署,包含多个容器化的蜜罐,包括 Cowrie、Dionaea、Honeytrap、Conpot、Suricata、Sentrypeer、Adbhoney、Ciscoasa 等。

蜜罐在暴露到互联网后几小时内就开始接收到流量。第一个仪表板截图显示了跨多个蜜罐和来源国家的 97 次攻击。

大多数早期活动是自动化扫描和机会性探测,这与未对外公开的公共 VPS 通常吸引的流量相符。 ## 3. Splunk SIEM 设置 Splunk Enterprise 直接安装在 VPS 上,并用作该项目的主要 SIEM。在设置过程中,Splunk 的默认 Web 端口 `8000` 与已经在该端口上监听的 Honeytrap 发生了冲突。

我使用 `lsof` 确认了冲突,并将 Splunk Web 移至不同的端口,而不是破坏蜜罐服务。这是最早的提醒之一:蜜罐平台会有意绑定到常用端口,因此针对常规服务的假设并不总是适用。 ## 4. 日志接入 Splunk T-Pot 日志源被添加到 Splunk 中,并使用了自定义的 sourcetypes,以便可以单独搜索每个蜜罐。 主要 sourcetypes: ``` tpot:cowrie tpot:honeytrap tpot:dionaea tpot:suricata tpot:conpot ``` 接入通过以下方式进行了验证: ``` index=main sourcetype=tpot:* ```

sourcetype 的细分确认 Splunk 正在索引来自多个蜜罐源的事件。 ``` index=main sourcetype=tpot:* | stats count by sourcetype ```

此时,Splunk 已经索引了来自 Conpot、Dionaea 和 Honeytrap 的超过 1,100 个事件。 ## 5. 资源争用与扩容 在 8GB RAM 上运行 Splunk、T-Pot 以及 T-Pot 的内部技术栈会导致不稳定。由于 Splunk 已经充当 SIEM,我禁用了 T-Pot 内部冗余的 ELK 技术栈,然后将 VPS 扩容至 16GB RAM、8 个 vCPU 和 260GB 存储空间。

扩容稳定了实验室环境,并使得在一台主机上同时运行 Splunk 和蜜罐服务成为可能。 ## 6. Honeytoken 欺骗层 原始的蜜罐日志很有用,但它们包含了大量的扫描器噪声。为了添加更高可信度的信号,我在攻击者或自动化后渗透工具可能会查找的地方部署了 Canarytokens。 | Honeytoken | 用途 | |---|---| | 虚假备份凭证 | 检测与诱饵凭证文件的交互 | | 虚假 AWS 凭证 | 检测尝试使用虚假云密钥的行为 |

上面截图中的 token 值已被涂黑。即使是虚假凭证和 Canarytoken URL 也不会被发布,因为公开的仓库会让任何人都能发现这些诱饵——而不仅仅是真正攻破主机的攻击者——这会令 token 失效并产生虚假警报。 ## 7. LLM MITRE ATT&CK 分类器 最后阶段是一个名为 `honeypot_llm_classifier.py` 的 Python 脚本。该脚本从 Splunk 中拉取最近的蜜罐事件,将其发送给 Claude 进行分类,并返回结构化的字段: ``` attack_category attack_summary mitre_technique_id mitre_technique_name severity ``` 分类器首先在 dry-run(试运行)模式下对样本事件进行了测试。

测试事件将诸如暴力破解、恶意软件投递、漏洞利用尝试和侦察等活动映射到了 ATT&CK 技术,包括 T1110.001、T1105、T1210 和 T0846。 在测试模式成功运行后,我对实时 Splunk 事件运行了该脚本。

实时结果将真实的蜜罐活动分类为暴力破解和侦察,并带有合理的严重性评级,而不是将每一次扫描器命中都视为严重。 ## 8. 将丰富后的事件写回 Splunk 最后一步是通过 HTTP Event Collector 将丰富后的结果写回 Splunk,从而形成闭环。 ``` index=main sourcetype=tpot:llm_enriched ```

这产生了可供分析师直接使用的事件,其中包含了原始的蜜罐字段以及由 LLM 生成的 ATT&CK 映射、摘要和严重性评级。 ## 9. 最终攻击量 随着运行时间的增加,蜜罐仪表板显示出了高得多的攻击量。

仪表板显示大约达到了 39,000 次蜜罐攻击总量,包括: | 蜜罐 | 事件数 | |---|---:| | Honeytrap | 19k | | Dionaea | 12k | | Sentrypeer | 3k | | Cowrie | 2k | | Ciscoasa | 533 | | RDPHoneypot | 476 | | Conpot | 381 | | Adbhoney | 179 | | Tanner | 164 | | Miniprint | 125 | 这进一步印证了该项目的核心教训:暴露的公共基础设施会被迅速发现,即使它从未对外公开过。 ## 关键决策与经验教训 - **选择 Splunk 而非 T-Pot 内置的 ELK 技术栈。** 我使用 Splunk 作为核心记录系统,因为它更符合 SOC 的工作流程,并能与我之前的检测工程工作相衔接。 - **选择扩容而不是强求在 8GB 内存上运行。** Splunk 加上完整的蜜罐套件需要更多内存。升级到 16GB RAM 使实验室变得稳定。 - **在蜜罐实验室中出现端口冲突是正常的。** Honeytrap 占用 `8000` 端口并不是一个偶然问题。它是蜜罐攻击面的一部分。 - **Honeytoken 能产生更高可信度的警报。** 原始的蜜罐命中记录显示了扫描量,但 token 交互暗示了更深层次的攻击者行为。 - **LLM 丰富在受到约束时非常有用。** 分类器使用结构化输出和 ATT&CK 映射,将原始事件转化为可供分析师直接使用的摘要。 - **密钥审查至关重要。** 截图、脚本、API 密钥、HEC token 和 honeytoken 值在发布前都需要进行审查。 ## 本项目的意义 端到端的威胁情报与自动化事件响应:实时蜜罐部署、真实攻击者遥测数据收集、Splunk SIEM 接入、基于欺骗的警报、Python 自动化、LLM 辅助分拣以及 MITRE ATT&CK 数据扩充。 其结果是一个小而完整的 SOC 风格工作流:原始互联网攻击进入,Splunk 对其进行索引,分类器对其进行数据丰富,最终事件作为结构化情报被写回。
标签:BOF, DLL 劫持, Docker, Python, 大语言模型, 威胁情报, 安全防御评估, 开发者工具, 无后门, 欺骗防御, 蜜罐, 证书利用, 请求拦截, 逆向工具