pbmundas/threat-intelligence-system

GitHub: pbmundas/threat-intelligence-system

一套集暗网爬虫、Elasticsearch全文检索和数据可视化仪表板于一体的威胁情报采集与分析平台。

Stars: 0 | Forks: 0

# ![Scale-Up Velocity](https://static.pigsec.cn/wp-content/uploads/repos/cas/c1/c14d069922aad170256e9d3e62e1d0a937767c3e873cf31868236aa5e8c96576.png) Omri Zilberstein - Dark Web 爬虫 在本项目中,我创建了一个 Dark Web Scraper 和仪表板,使用了 React.js、Express、Python 3.8、MongoDB 数据库和 Elasticsearch 数据库。 \ 抓取的数据会被索引到 Elasticsearch 中,以便进行快速文本查询,而用户数据则保存在 MongoDB 中。 \ 该应用已进行 Docker 化,可以通过 docker-compose up 运行。 \ 该应用拥有一个仪表板,用于展示收集到的数据、分析结果以及抓取工具的配置选项。 \ 使用了 Material-UI 组件来设计页面,并使用 recharts 绘制图表。 ![仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/96/96cedab703c086cf9b54831d64e8da9e95462b2989e038be8a73a3b5f46808c7.png) ## 数据库 - 该应用使用部署在 Atlas Cloud 上的 MongoDB 数据库。 - 该应用使用 Elasticsearch 数据库。 - Elasticsearch 用于文本查询和分析。 - MongoDB 用于存储用户数据。 ## 后端 - Express 应用位于 `server/app.js` 路径下,并导出 `index` 对象(`module.exports = app;`)。 - 服务器运行在容器端口 `8080` 上,Docker 将 React 应用暴露在 `http://localhost:8081/`(主机端口 8081 可避免常见的本地端口冲突)。它包含 2 个主要路由:Users 和 Data: - data: - [GET] api/data/ 获取所有抓取的数据。 - [GET] api/data/\_search/ 在 Elasticsearch 中搜索特定项目。 - [GET] api/data/\_search/ 获取包含特定标签的项目数量。 - [GET] api/data/\_status/ 获取抓取工具的当前状态。 - [GET] api/data/\_bins/[:page] 用于数据的无限滚动 endpoint。 - [GET] api/data/\_sentiment/ 分析发送数据的情感倾向。 - [POST] api/data/\_status/ 设置抓取工具状态。 - [POST] api/data/ 批量发布新数据。 - user: - [GET] api/user/\_alerts/ 获取当前用户已查看的 bins。 - [GET] api/user/\_all/ 获取所有用户。 - [GET] api/user/\_config/ 获取当前用户的配置。 - [PUT] api/user/\_alerts/ 更新已查看的 bins。 - [PUT] api/user/\_config/ 更新抓取工具的配置。 - [POST] api/user/\_new\_/ 创建新用户。 ## 客户端 - 应用标题为 `Dark Web Scraper`。 - 服务器为该应用提供服务,并展示从 Dark Web 收集到的所有 bins、抓取工具状态、新数据收集提醒、数据分析、配置选项等。 - 应用具有配置表单,您可以在其中编辑 Python 抓取工具的表单。 ![配置](https://static.pigsec.cn/wp-content/uploads/repos/cas/52/52ecb8856e4679cb244c1cc6e367013027f9df16b2e5a3982421d5eaab6819a7.png) - 应用会显示抓取工具的状态。 - 开启状态: - ![scraper-status-on](https://static.pigsec.cn/wp-content/uploads/repos/cas/18/1840a72adb9fa2922957f82203eab92bc988d59590e8df396185cc55c30a55df.png) - 关闭状态: - ![scraper-status-off](https://static.pigsec.cn/wp-content/uploads/repos/cas/03/0327732ee1798371189ad4a6b6266b4e2a7a1a41f62f3b02435861bcd137ab44.png) - 错误状态: - ![scraper-status-error](https://static.pigsec.cn/wp-content/uploads/repos/cas/de/defa07dae629e53e41d4b4548cd4de41a9e6058b60f71d2c0ab63f1648ebdf1b.png) - 冷却菜单: - ![scraper-status-cooldown](https://static.pigsec.cn/wp-content/uploads/repos/cas/c9/c9f5957167372eaf12fddd597551ce511326686778dfae232b0d1a1199d19e2d.png) - 应用包含一个展示所有数据的表格,您可以将数据标记为已读、恢复所有数据、显示全部内容,以及从所有抓取到的数据中进行全局搜索。 - ![infintes-scroller](https://static.pigsec.cn/wp-content/uploads/repos/cas/2a/2a6656ee05e30b0d4eafc4f314973edeca5057fb8a599e26b71b98ccd809b953.gif) - 应用具有响应式设计: - ![响应式](https://static.pigsec.cn/wp-content/uploads/repos/cas/a8/a874c79f74e05ff4ef585edbf96f4406104603bc1d60e447b21104fd38d3d91a.png) ## 抓取工具 - 该抓取工具使用 Python 编写。 - 支持公共表层网络 HTTP(S) 页面和 v3 onion 服务。 - 默认的代理模式为 auto:只有 onion 主机才会通过 Tor。它也可以被设置为 always 或 never。 - 通用文章/帖子标记会被自动检测;可选的 CSS 选择器和搜索 URL 模板可支持特定网站的布局。 - 请求使用明确的超时设置、瞬时故障重试以及 Tor 端的 DNS。 - 该爬虫不会绕过登录、CAPTCHA、付费墙或访问控制。 现有的 URL、关键词和冷却配置依然有效。新的可选字段包括:urls(多个目标)、proxy_mode、timeout、retries、search_url_template(例如 search?q={query}),以及包含 item、header、content、author 和 date 的 CSS 选择器的 selectors。如果没有提供搜索模板,每个目标将被抓取一次,并在本地应用关键词。 使用以下命令运行单元测试:python -m unittest discover -s scraper/tests -v ### 计划内的多站点收集 Docker worker 会读取 `scraper/sites.json` 并默认每 24 小时运行一次。每个启用的条目都是一个明确的白名单爬取任务。将 `keywords` 设置为 `["all"]` 可保留所有提取的内容,或者提供特定词条以保留匹配的记录。`max_pages`(上限为 500)、`max_depth` 和 `delay_seconds` 用于限制同一主机的爬取范围;站外链接永远不会被跟踪。 每次运行的结果都会写入 `dumps/YYYY-MM-DD/site-name/HHMMSSZ/` 目录下,包含一个清单文件、标准化的 JSONL 记录、页面元数据(包括发现的每个链接及其锚文本)以及原始 HTML 快照。外部链接会被记录但不会被跟踪;只有同一主机的 HTML 页面才会被爬取。 在 `docker-compose.yml` 中修改 `RUN_INTERVAL_HOURS` 以调整计划任务。 编辑 `scraper/sites.json` 添加授权的表层网络或 v3 onion 目标,然后使用 `docker compose up -d --build webscraper` 重启 worker。 ## Docker - 该应用已 Docker 化,您可以通过以下命令在 Docker 平台上运行它: ``` docker-compose up ``` - 该应用包含 Elasticsearch 服务、Server 服务(Node.JS)、Scraper(Python 服务)以及一个 Proxy 服务。 - Docker 将构建一个网络并连接所有服务,它提供热重载功能,因此可以实时编辑代码。
标签:BeEF, Docker, Elasticsearch, MITM代理, Python, React, Syscalls, 代码示例, 后端开发, 安全防御评估, 数据分析, 无后门, 爬虫, 请求拦截