timiphil/sentinel-log-core

GitHub: timiphil/sentinel-log-core

一个轻量级的 C++ 安全日志分析工具包,用于解析、标准化、关联和分析 SOC 风格的安全事件,并通过模糊测试保障解析器的健壮性。

Stars: 0 | Forks: 0

# Sentinel Log Core 一个轻量级的 C++ 安全日志分析工具包,用于解析、关联和分析 SOC 风格的安全事件。 专为解析器健壮性、蓝队学习以及使用 libFuzzer 和 ClusterFuzzLite 进行模糊测试而设计。 Sentinel Log Core 是一个教育和实验性的安全项目,展示了现代 SOC pipeline 如何解析、标准化、关联和分析安全事件,并通过模糊测试强调健壮的解析器设计。 ## 功能 - 键值对安全日志解析器 - 扁平化 JSON 安全事件解析器 - CSV/SIEM 导出解析器 - 检测规则引擎 - YAML 风格规则加载器 - 提取威胁指标(IP 地址、域名、哈希值) - 将事件与离线威胁情报数据集进行匹配 - IPv4 验证及公网/私网 IP 检查 - 时间戳解析与标准化 - 按用户、源 IP 和目标 IP 进行事件关联 - 构建按时间顺序的调查时间线 - 会话跟踪 - MITRE ATT&CK 风格的事件映射 - 文本、JSON 和 CSV 报告输出 - 命令行界面 - 兼容 ClusterFuzzLite 的 fuzz targets ## 架构 ``` flowchart TD A[Security Logs] B[Log Parsers] C[Normalized Log Events] D[Rule Engine] E[IOC Extraction] F[Threat Intelligence] G[Correlation Engine] H[Timeline Builder] I[Report Generator] J[Text Report] K[JSON Report] L[CSV Report] A --> B B --> C C --> D D --> E D --> F E --> G F --> G G --> H H --> I I --> J I --> K I --> L ``` ## 为什么选择 Sentinel? 开发 Sentinel Log Core 旨在探索 SOC 和 SIEM 平台如何处理安全遥测数据。 该项目专注于: - 防御性解析器开发 - 安全日志标准化 - 检测规则评估 - 威胁情报匹配 - 事件关联 - 解析器模糊测试 ## 技术栈 - C++17 - Clang - libFuzzer - ClusterFuzzLite - GitHub Actions - Git ## 示例用法 构建 CLI: ``` clang++ -Iinclude src/*.cpp -o sentinel ``` ### 分析日志 ``` ./sentinel parse-log tests/samples/logs/suricata.log ``` ## 示例输出 demo ### 生成时间线 ``` ./sentinel parse-log tests/samples/logs/sysmon.log --timeline ``` ### 生成 JSON 输出 ``` ./sentinel parse-log tests/samples/logs/auth.log --json ``` ### 生成 CSV 输出 ``` ./sentinel parse-log tests/samples/logs/auth.log --csv ``` ### 使用外部 YAML 规则 ``` ./sentinel parse-log tests/samples/logs/auth.log --rules tests/samples/rules/sample.yaml ``` ### 与威胁情报进行匹配 ``` ./sentinel parse-log tests/samples/logs/suricata.log --intel tests/samples/intel/iocs.csv ``` ## 项目布局 | 目录 | 描述 | |-----------|-------------| | `include/sentinel/` | 公共 C++ 头文件 | | `src/` | 核心实现和 CLI | | `fuzz/` | libFuzzer harnesses 和种子语料库 | | `tests/samples/` | SOC 日志、规则和威胁情报示例 | | `.clusterfuzzlite/` | ClusterFuzzLite 配置 | ### 模糊测试 Sentinel 包含多个 fuzzing targets: - log_fuzzer - json_fuzzer - csv_fuzzer - config_fuzzer 这些 fuzzers 会测试不同的解析器入口点,旨在通过 ClusterFuzzLite 离线运行。 ``` ### 本地 fuzz 构建示例 ```bash clang++ -fsanitize=fuzzer,address -Iinclude \ $(find src -name "*.cpp" ! -name "main.cpp") \ fuzz/log_fuzzer.cpp \ -o log_fuzzer ``` Run: ./log_fuzzer fuzz/corpus/log_fuzzer -max_total_time=10 ``` ## 目的 本项目旨在模拟一个真实的安全日志分析库和命令行工具。它适用于学习 SOC 工作流、试验检测逻辑,以及针对格式错误的输入测试解析器的健壮性。 ## 路线图 计划的改进包括: - Sigma 规则兼容性 - 更多日志格式 - STIX/TAXII 威胁情报 - 更好的关联引擎 - 性能优化 ## 许可证 MIT 许可证 ## 贡献 欢迎 contributions。 请参阅 CONTRIBUTING.md。 如果您有任何想法、建议或发现问题,请随时提交 issue 或发起 pull request。
标签:C++, DNS 反向解析, IOC提取, IP 地址批量处理, 云计算, 威胁情报, 子域名变形, 安全日志分析, 开发者工具, 数据擦除, 聊天机器人, 规则引擎