Part1 前言
大家好,我是Zacarx。最近在整理日常安全运营中用到的工具,发现一个痛点:漏洞情报太分散了。NVD要查一遍,CISA KEV要看一遍,Exploit-DB还得翻一翻,GitHub上的PoC更是散落各处。每次出个新洞,光是收集情报就得花半天。
后来发现了天禄实验室开源的这款工具——TL-ICScan,用了一段时间,确实解决了我的问题。今天就把这个工具分享给大家,希望能帮各位在日常的安全运营、红队评估中节省点时间。
这是一款纯情报工具,不涉及漏洞扫描和利用,专注于"情报收集"这一件事。数据全部存在本地,查询不用联网,对于需要保密的内网环境非常友好。
Part2 工具介绍
先说说这工具的核心思路,用一句话概括就是: Python 负责"进货",Rust 负责"管库"。
具体来说:
- Python(采集端) 去 NVD、GitHub、Exploit-DB、CISA KEV 等网站抓取最新的漏洞情报
- Rust(核心库) 把抓回来的数据快速存入本地 SQLite 数据库,提供毫秒级查询
- Web UI(展示端) 直接读本地数据库,随查随有
这个架构的好处是:采集和存储分离,Python 写采集脚本方便扩展,Rust 处理大量数据性能有保障。
支持的情报源
目前支持以下数据源的自动采集:
| 数据源 | 说明 |
|---|---|
| NVD | 美国国家漏洞数据库,最全的CVE信息 |
| CISA KEV | 已知被利用漏洞目录,实战价值高 |
| Exploit-DB | 公开的漏洞利用代码库 |
| GitHub PoC | 自动搜索GitHub上的CVE相关仓库 |
| EPSS | 漏洞利用概率评分,帮你判断优先级 |
| MSRC | 微软安全响应中心公告 |
这些数据源会自动关联。比如一个CVE,工具会告诉你:NVD的描述是什么、CVSS评分多少、有没有在KEV列表里、GitHub上有几个PoC、EPSS评分是多少。一个界面全搞定。
安装部署
推荐用 Docker 一键部署,省心:
# 克隆项目
git clone https://github.com/tianlusec/TL-ICScan.git
cd TL-ICScan
# 启动服务
docker-compose up -d
启动后访问 http://localhost:8501 就能看到 Web 界面了。
如果想手动安装,需要准备:
- Rust 1.70+(编译核心工具)
- Python 3.8+(运行采集脚本)
# 编译 Rust 核心
cd tianlu-intel-core
cargo build --release
# 安装 Python 依赖
pip install -r requirements.txt
数据更新
首次使用需要拉取数据,项目提供了一键更新脚本:
- Windows:运行
update_all.bat - Linux/macOS:运行
./update_all.sh
脚本会自动运行所有采集器,把数据导入本地数据库。后续定期跑一下就行,增量更新。
如果有 NVD API Key,可以设置环境变量 NVD_API_KEY,能大幅提升采集速度。没有的话也能用,就是慢点。
Web界面使用
启动 Web UI:
streamlit run web_ui/dashboard.py
界面左侧是筛选条件:
- 关键字搜索 支持CVE ID、漏洞描述搜索
- 严重等级 CRITICAL、HIGH、MEDIUM、LOW
- 数据源 可以只看某个来源的数据
- 时间范围 按发布时间筛选
右侧是漏洞列表,点击可以查看详情。支持导出 CSV,方便导入 Excel 做进一步分析。
界面上有个"快速详情查看"功能,输入CVE ID可以直接查。如果本地没有,还能一键从NVD在线查询并入库,挺方便的。
命令行使用
除了 Web 界面,CLI 也很好用,适合写脚本批量处理:
# 查询最近7天的高危漏洞
./tianlu-intel-core list --since 7d --severity HIGH --db tianlu_intel_v2.db
# 查看某个CVE的详细信息
./tianlu-intel-core show CVE-2024-12345 --db tianlu_intel_v2.db
# 导出为CSV
./tianlu-intel-core export --format csv --since 2024-01-01 --db tianlu_intel_v2.db > output.csv
还有个 digest 命令,可以根据配置文件生成情报简报:
./tianlu-intel-core digest --config watchlist.yml --since 1d --db tianlu_intel_v2.db
Watchlist 配置
这是个很实用的功能。通过 watchlist.yml 配置你关注的技术栈,工具会自动筛选相关漏洞:
# 关注微软高危漏洞
-name:microsoft_critical
keywords: ["Microsoft", "Windows"]
severity:CRITICAL
# 关注VPN设备漏洞
-name:vpn_devices
keywords: ["Pulse Secure", "Fortinet", "Citrix"]
severity:HIGH
# 关注Web服务器
-name:web_servers
keywords: ["Apache", "Nginx", "Tomcat"]
配置好之后,每天跑一下 digest 命令,就能生成针对性的漏洞简报。对于需要定期输出安全周报的同学来说,这功能太香了。
Part3 实际使用场景
说几个我实际用到的场景:
1. 日常漏洞监控 每天早上跑一下更新脚本,然后用 Web 界面看看有没有新的高危漏洞。重点关注 CISA KEV 列表里的,这些是已经被实际利用的。
2. 应急响应 出了新漏洞,直接在工具里搜CVE ID,能快速看到:
- 漏洞描述和影响范围
- CVSS评分
- 有没有公开的PoC
- EPSS评分(被利用的概率)
这些信息对于判断漏洞优先级很有帮助。
3. 红队信息收集 打点之前,先用工具查一下目标技术栈相关的漏洞。比如目标用了 Fortinet,就搜一下最近有没有新洞,有没有公开的利用代码。
4. 安全周报输出 配置好 watchlist,每周跑一下 digest,自动生成 Markdown 格式的简报,稍微编辑一下就能发出去。
Part4 总结
- TL-ICScan 是一款专注于漏洞情报聚合的工具,不做扫描不做利用,就做好"情报"这一件事。
- 数据全部本地化存储,查询不依赖网络,适合对保密性有要求的环境。
- Python + Rust 的架构设计合理,采集灵活、查询高效。
- 支持 Docker 一键部署,上手门槛低。
- 项目开源,MIT 协议,可以自由使用和修改。
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)



