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
```
## 示例输出
### 生成时间线
```
./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。
### 生成时间线
```
./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 地址批量处理, 云计算, 威胁情报, 子域名变形, 安全日志分析, 开发者工具, 数据擦除, 聊天机器人, 规则引擎