漏洞情报聚合与分析工具——TL-ICScan

TL-ICScan 漏洞情报聚合与分析工具

新特性

  • 统一配置管理 : 新增 config.py 模块,支持环境变量配置
  • 统一日志系统: 所有模块使用标准 logging 模块,支持日志级别控制
  • 错误码体系: 新增统一的错误码定义(E001-E999),便于问题排查
  • 改进的配置示例 : watchlist.yml 包含4个详细示例和完整字段说明
  • 单元测试: 新增采集器单元测试,提高代码可靠性

Bug修复

  • 修复时区处理不一致问题(统一使用UTC)
  • 修复内存增长风险(添加单个值10KB限制)
  • 修复NVD数据采集断点续传机制
  • 修复GitHub API速率限制处理
  • 修复CSV导出注入防护
  • 修复数据库连接管理问题

性能优化

  • 优化批量提交大小(从100提升到500)
  • 添加数据库复合索引,提升查询性能
  • 改进缓存策略,支持环境变量配置TTL

文档改进

  • 添加详细的版本要求说明
  • 完善操作系统支持列表
  • 改进配置文件错误提示
  • 更新贡献指南

详细更新日志请查看 CHANGELOG.md | English Version


项目简介

TL-ICScan 是一款面向安全研究人员、红队与蓝队的本地化漏洞情报聚合与分析工具

一句话原理解析:

Python 负责"进货",Rust 负责"管库"。

  • Python (采集端):像勤劳的采购员,去 NVD、GitHub、Exploit-DB 等网站抓取最新的漏洞情报,并把它们"翻译"成统一格式。
  • Rust (核心库):像高效的仓库管理员,负责把 Python 抓回来的海量数据快速存入本地数据库,并提供毫秒级的查询服务。
  • Web UI (展示端):直接读取本地数据库,为您提供无需联网、随查随有的可视化查询体验。

在日常的安全运营与研究中,我们面临着情报源分散(NVD, CISA, 厂商公告, Exploit-DB)、数据格式不统一、以及过度依赖在线查询等痛点。TL-ICScan 旨在解决这些问题:

  • 多源聚合:自动采集并标准化 NVD、CISA KEV、MSRC、Exploit-DB、GitHub PoC 等多方情报。
  • 本地私有:所有数据存储于本地 SQLite 数据库,查询无需联网,保障操作隐蔽性。
  • 智能关联:自动关联漏洞的 PoC 状态、EPSS 评分与厂商公告,提供上帝视角。
  • 纯粹情报:专注于"情报"本身,不绑定资产管理,轻量级且易于集成。
  • 全平台支持:原生支持 Windows、Linux 与 macOS,提供统一的 CLI 操作体验。

核心功能

  1. 多源采集 (Collectors): 模块化 Python 脚本,支持 NVD, CISA KEV, MSRC, Exploit-DB, EPSS, GitHub PoC 等。
  2. 数据标准化 : 将异构数据清洗为统一的 NormalizedCVE 格式 (JSONL)。
  3. 高性能存储: Rust 核心引擎处理数据入库与索引,支持百万级记录秒级查询。
  4. 智能简报 (Digest): 基于 YAML 配置关注列表 (Watchlist),自动生成 Markdown 格式的每日/每周漏洞简报。
  5. 灵活导出: 支持导出为 JSON/CSV 格式,便于导入 Excel 或其他分析工具。

快速开始

方式一:Docker 部署 (推荐)

无需安装 Rust 和 Python 环境,直接使用 Docker 一键启动。

  1. 启动服务
    docker-compose up -d
    访问 http://localhost:8501 即可看到 Web 界面。
  2. 更新数据

    运行一次性更新任务 docker-compose run --rm updater

方式二:源码安装

1. 环境准备

  • Rust : 用于编译核心工具 (cargo build --release)

    • 版本要求: Rust 1.70 或更高版本
  • Python : 用于运行采集脚本

    • 版本要求: Python 3.8 或更高版本
  • 操作系统支持 :

    • Windows 10⁄11 (x64)
    • Linux (Ubuntu 20.04+, CentOS 7+, Debian 10+)
    • macOS (Intel/Apple Silicon)

2. 安装

复制代码
# 1. 编译核心工具
cd tianlu-intel-core
cargo build --release
# 编译产物位于 target/release/tianlu-intel-core (Windows 为 .exe)

# 2. 安装依赖
# 在项目根目录下运行
pip install -r requirements.txt

3. 初始化与更新数据

我们提供了一键更新脚本,会自动运行所有采集器并将数据导入数据库 (tianlu_intel_v2.db)。

  • Windows : 运行 update_all.bat
  • Linux/macOS : 运行 ./update_all.sh

4. 常用命令

所有操作通过 CLI 工具完成(假设位于项目根目录):

启动 Web UI (可视化仪表盘)

复制代码
# 启动 Web 界面,默认访问 http://localhost:8501
streamlit run web_ui/dashboard.py

查询漏洞列表

复制代码
# 查询最近 7 天发布的的高危漏洞
./tianlu-intel-core/target/release/tianlu-intel-core list --since 7d --severity HIGH --db tianlu_intel_v2.db

查看漏洞详情

复制代码
# 查看特定 CVE 的详细情报(包含描述、CVSS、PoC、参考链接等)
./tianlu-intel-core/target/release/tianlu-intel-core show CVE-2024-12345 --db tianlu_intel_v2.db

生成情报简报

复制代码
# 根据 watchlist.yml 生成简报
./tianlu-intel-core/target/release/tianlu-intel-core digest --config watchlist.yml --since 1d --db tianlu_intel_v2.db

配置说明 (Watchlist)

通过修改 watchlist.yml 定制您关注的情报:

复制代码
- name: "Windows 核心组件"
  vendors: ["microsoft"]
  products: ["windows_server_2019", "windows_10"]
  severity_min: "HIGH"

- name: "VPN 设备"
  keywords: ["vpn", "firewall", "pulse_secure"]
  epss_min: 0.1 # 仅关注利用概率 > 10% 的漏洞

贡献与支持

我们热烈欢迎各种形式的贡献!TL-ICScan 是一个开源项目,依靠社区的力量不断改进。

如何贡献

  • 提交 Issue: 报告 bug、提出新功能建议或分享使用经验

  • 提交 Pull Request : 贡献代码、文档或测试用例

    • 请先阅读 贡献指南 了解开发规范
    • 确保代码通过所有测试并遵循项目风格
  • 改进文档: 帮助完善文档、添加示例或翻译

  • 报告安全问题 : 负责任地披露安全漏洞,请参考 安全政策

  • Star 项目: 如果觉得有用,请给我们一个 Star 支持项目发展!

  • 分享反馈: 在 Discussions 中分享您的使用场景和建议

开源协议

本项目采用 MIT 开源协议,您可以自由地:

  • 商业使用
  • 修改源代码
  • 分发副本
  • 私人使用

唯一要求是保留原始许可证和版权声明。详见 LICENSE

项目状态

  • 开发状态: 活跃维护中
  • 稳定性: 生产就绪
  • 测试覆盖率: 持续改进中
  • 文档完整度: 完善

联系我们

相关推荐
kejiayuan15 分钟前
CTE更易懂的SQL风格
数据库·sql
kaico201819 分钟前
MySQL的索引
数据库·mysql
清水白石0081 小时前
解构异步编程的两种哲学:从 asyncio 到 Trio,理解 Nursery 的魔力
运维·服务器·数据库·python
资生算法程序员_畅想家_剑魔1 小时前
Mysql常见报错解决分享-01-Invalid escape character in string.
数据库·mysql
PyHaVolask2 小时前
SQL注入漏洞原理
数据库·sql
ptc学习者2 小时前
黑格尔时代后崩解的辩证法
数据库
代码游侠2 小时前
应用——智能配电箱监控系统
linux·服务器·数据库·笔记·算法·sqlite
!chen2 小时前
EF Core自定义映射PostgreSQL原生函数
数据库·postgresql
霖霖总总2 小时前
[小技巧14]MySQL 8.0 系统变量设置全解析:SET GLOBAL、SET PERSIST 与 SET PERSIST_ONLY 的区别与应用
数据库·mysql
马克学长2 小时前
SSM校园食堂订餐系统531p9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·ssm 校园食堂订餐系统