osintph/darkweb-scanner

GitHub: osintph/darkweb-scanner

自托管威胁情报平台,集成暗网爬虫、Telegram 监控、勒索软件追踪和基础设施侦察功能,一键 Docker 部署。

Stars: 102 | Forks: 19

# 🔍 暗网扫描器 — 网络威胁情报平台 一个自托管的、开源的威胁情报平台,专为菲律宾和东南亚安全环境构建。可抓取 .onion 网络、监控 Telegram 频道、追踪勒索软件组织、分析威胁行为者画像,并每日推送情报摘要 —— 所有功能均可通过单次 Docker 部署完成。 **许可证:AGPL v3** ## ⚡ 快速部署 ``` curl -fsSL https://raw.githubusercontent.com/osintph/darkweb-scanner/main/deploy.sh -o /tmp/deploy.sh && sudo bash /tmp/deploy.sh ``` 适用于 Ubuntu 22.04/24.04、Debian 以及大多数基于 Debian 的发行版。该脚本将安装 Docker、克隆代码库、配置 Tor、生成密钥、设置带 SSL 的 Nginx,并自动启动所有服务。 **使用真实域名和 SSL 证书:** ``` DOMAIN=scanner.yourdomain.com SSL_EMAIL=you@example.com \ curl -fsSL https://raw.githubusercontent.com/osintph/darkweb-scanner/main/deploy.sh -o /tmp/deploy.sh && \ sudo bash /tmp/deploy.sh ``` ## 🧩 功能特性 - **暗网爬虫 (Dark Web Crawler)** — 基于 Tor 的异步 .onion 站点爬虫,支持可配置的关键词监控和实时告警 - **频道监控器 (Channel Monitor)** — 交互式仪表板标签页,可按需抓取任何 Telegram 频道,自动将消息翻译成英文,并将结果打包为 ZIP 下载(包含 HTML 报告 + 媒体文件) - **Telegram 抓取器 (Telegram Scraper)** — 使用与爬虫相同的引擎,监控公开 Telegram 频道中的关键词命中情况 - **项目 (Projects)** — 限定范围的监控任务,支持按项目设置关键词、目标域名、实体和命中追踪 - **IP 调查 (IP Investigation)** — 并行查询 AbuseIPDB 和 VirusTotal,包含地理位置、ASN 和历史记录 - **基础设施侦察 (Infrastructure Recon)** — 类似 DNSDumpster 的概览(服务器地图、ASN/托管分布、实时 HTTP 服务 Banner 和技术指纹识别)、完整的被动 + 主动 DNS 侦察、主动子域爆破(100 条词表)、30 个常见服务的 TCP 端口扫描、实时 HTTP/HTTPS 目录枚举(70 条路径词表)、证书透明度、区域传送尝试、SPF/DMARC/DKIM 邮件安全评分、交互式子域节点图以及单 IP 端口热力图 —— 尽在仪表板之中 - **Web Check** — 针对任意域名的按需 OSINT 分析:SSL、Headers、开放端口、技术栈、WHOIS 等 —— 可通过 `webcheck.osintph.info` 访问 - **勒索软件追踪器 (Ransomware Tracker)** — 实时追踪活跃的勒索软件组织,重点关注东南亚/菲律宾地区 - **威胁行为者画像 (Threat Actor Profiles)** — 与东南亚相关的结构化 APT 和网络罪犯档案 - **每日摘要 (Daily Digest)** — 每日清晨发送的邮件,包含 CISA KEV、OTX Pulses、abuse.ch Feeds 和精选 RSS —— 通过 Mailgun 发送 - **认证 (Authentication)** — bcrypt 密码、TOTP 2FA、可选的 Google/GitHub OAuth、基于角色的访问控制 - **多用户 (Multi-user)** — 管理员和普通用户角色,支持按用户的项目所有权 ## 🚀 部署 ### 系统要求 - 全新的 Linux 服务器(推荐 Ubuntu 22.04/24.04) - 最低 1GB RAM,推荐 2GB - 开放 80 和 443 端口 - 一个域名(可选,但推荐用于可信 SSL) ### 部署后首次设置 1. 访问 `https://YOUR_SERVER_IP/register` 并创建您的管理员账户 2. 编辑您的配置: ``` nano ~/darkweb-scanner/.env nano ~/darkweb-scanner/config/keywords.yaml nano ~/darkweb-scanner/config/seeds.txt ``` 3. 重启以应用配置更改: ``` cd ~/darkweb-scanner && docker compose restart dashboard ``` ### Web Check(手动步骤 — 不包含在 deploy.sh 中) Web Check 作为独立服务运行,必须在主平台部署后手动设置。完整说明请参阅 [docs/deployment.md](docs/deployment.md#web-check-integration)。 ``` # 简短版本 cd /root git clone https://github.com/lissy93/web-check.git cd web-check && BASE_URL=/ yarn install && yarn build cd /root/darkweb-scanner && docker compose up -d webcheck ``` 然后为 `webcheck.YOURDOMAIN` 申请 SSL 证书并重载 Nginx —— 完整步骤请参阅部署文档。 ### 更新 ``` cd ~/darkweb-scanner git pull docker compose build --no-cache docker compose up -d ``` ## ⚙️ 配置 所有配置均位于 `.env` 文件中。**切勿提交此文件。** ### 基础变量 | 变量 | 描述 | |----------|-------------| | `DASHBOARD_SECRET_KEY` | Flask 会话密钥 — 请修改此项 | | `TOR_CONTROL_PASSWORD` | 由部署脚本自动生成 | | `DATABASE_URL` | SQLite(默认)或 PostgreSQL | ### 威胁情报源 | 变量 | 描述 | |----------|-------------| | `OTX_API_KEY` | AlienVault OTX — 在 otx.alienvault.com 免费获取 | | `ABUSEIPDB_API_KEY` | AbuseIPDB — 免费层:1,000 次查询/天 | | `VIRUSTOTAL_API_KEY` | VirusTotal — 免费层:4 次请求/分钟 | ### 每日摘要 (Mailgun) | 变量 | 描述 | |----------|-------------| | `MAILGUN_API_KEY` | Mailgun API 密钥 | | `MAILGUN_DOMAIN` | 您的 Mailgun 发送域名 | | `MAILGUN_FROM` | 发件人地址 | ### Telegram 抓取器 | 变量 | 描述 | |----------|-------------| | `TELEGRAM_API_ID` | 来自 my.telegram.org/apps | | `TELEGRAM_API_HASH` | 来自 my.telegram.org/apps | | `TELEGRAM_PHONE` | 带国家代码的手机号码 — Channel Monitor 标签页必需 | | `TELEGRAM_CHANNELS` | 逗号分隔的频道用户名(不带 @) — 由后台抓取器使用 | ## 📡 频道监控器 **Channel Monitor** 标签页允许您直接从仪表板按需抓取任何公开的 Telegram 频道 —— 无需 CLI。它将获取消息、自动检测语言并翻译成英文、下载媒体文件(图片和视频),并将所有内容打包成可下载的 ZIP。 ### 设置 将以下内容添加到您的 `.env`(使用现有 Telegram 抓取器的相同凭据): ``` TELEGRAM_API_ID=12345678 TELEGRAM_API_HASH=abcdef1234567890abcdef1234567890 TELEGRAM_PHONE=+639XXXXXXXXX ``` `TELEGRAM_PHONE` 是唯一的新变量 —— 您的手机号码需包含国家代码(例如菲律宾为 `+63`)。 ### 首次认证 Telegram 首次需要交互式登录。在服务器上运行一次此命令: ``` cd ~/darkweb-scanner docker compose exec dashboard python3 -c " import asyncio from telethon import TelegramClient import os from dotenv import load_dotenv load_dotenv('/app/.env') async def auth(): c = TelegramClient('/app/data/channel_monitor/channel_monitor', int(os.environ['TELEGRAM_API_ID']), os.environ['TELEGRAM_API_HASH']) await c.start(phone=os.environ['TELEGRAM_PHONE']) print('Auth OK:', (await c.get_me()).username) await c.disconnect() asyncio.run(auth()) " ``` 出现提示时,输入发送到您 Telegram 应用的 OTP。会话将保存到 `/app/data/channel_monitor/channel_monitor.session` 并在重启后保留 —— 您只需执行一次此操作。 ### 使用标签页 1. 点击导航栏中的 **📡 Channel Monitor** 2. 输入频道用户名(例如 `irna_1931`)、邀请链接或 `@handle` 3. 配置选项: - **Message Limit** — 获取的消息数量(0 = 全部) - **Last N Days** — 仅获取最近 N 天的消息 - **Force Source Language** — 覆盖自动检测(适用于混合语言频道) - **Max Video Size** — 跳过大于此大小的视频(MB)。设为 0 可跳过所有视频 - **Min Free Disk** — 如果服务器磁盘空间低于此阈值则中止(GB) - **Skip English translation** — 如果消息已经是英文,则跳过翻译步骤 4. 点击 **▶ Start Scan** — 输出将在控制台面板中实时流式显示 5. 完成后,点击 **⬇ Download ZIP** 以获取: - `messages.html` — 完整的渲染报告,包含原始文本、英文翻译和内嵌媒体 - `messages.json` — 原始结构化数据 - `media/` — 所有下载的图片和视频 ### 注意事项 - 仅支持**公开**频道 - 扫描在后台线程中运行 —— 您可以导航到其他页面后再回来 - 任务历史记录在当前服务器会话期间保存在内存中;容器重启后会重置 - 输出文件存储在服务器上的 `/app/data/channel_monitor/{job_id}/` 下 ### 依赖项 Channel Monitor 需要两个额外的 Python 包(已添加到 `pyproject.toml`): ``` deep-translator>=1.11 langdetect>=1.0 ``` 复制更新后的文件后,重建容器以安装它们: ``` cd ~/darkweb-scanner docker compose build --no-cache dashboard docker compose up -d ``` ### 告警 | 变量 | 描述 | |----------|-------------| | `ALERT_WEBHOOK_URL` | Slack 或 Discord Webhook URL | | `SMTP_HOST` / `SMTP_PORT` | 用于邮件告警的 SMTP 服务器 | | `SMTP_USER` / `SMTP_PASSWORD` | SMTP 凭据 | | `ALERT_EMAIL_FROM` / `ALERT_EMAIL_TO` | 告警邮件地址 | ## 📁 项目结构 ``` config/ keywords.yaml # keyword monitoring rules seeds.txt # .onion seed URLs for the crawler docs/ # feature documentation src/darkweb_scanner/ crawler.py # async Tor crawler scanner.py # keyword matching engine storage.py # SQLAlchemy models and storage layer feeds.py # OTX, CISA, abuse.ch, RSS feeds digest.py # daily email digest dns_crawler.py # DNS recon + subdomain brute-force + port scan + dir enum ip_lookup.py # IP investigation module telegram_scraper.py # Telegram channel scraper (keyword hit pipeline) channel_monitor.py # Telegram channel monitor (on-demand scrape + translate) threat_actors.py # threat actor profile data ransomware_data.py # ransomware group data dashboard/ app.py # Flask application factory auth_routes.py # login, register, TOTP, OAuth dashboard_routes.py # all API and dashboard routes channel_monitor_routes.py # Channel Monitor API routes + job runner templates/ index.html # single-page dashboard UI docker/ app/Dockerfile tor/Dockerfile nginx/ # nginx with auto SSL entrypoint deploy.sh # zero-prerequisite deployment script ``` ## 🔧 常用命令 ``` # 从 ~/darkweb-scanner 运行 make scan # run a crawl (foreground) make check-tor # verify Tor connectivity make stats # show scan statistics make hits # show recent keyword hits make logs # tail all container logs make stop # stop all containers ``` ## 🗺️ 路线图 - 泄露数据搜索(集成 HIBP) - 通过仪表板上传自定义端口扫描词表 - 计划/周期性 DNS 侦察任务 - 移动端界面 - 扩展东南亚/菲律宾威胁行为者画像和关键词覆盖范围 ## 📄 许可证 根据 GNU Affero General Public License v3.0 (AGPL-3.0-only) 授权。 您可以自由使用、修改和分发本软件。如果您将修改后的版本作为网络服务运行,则必须向该服务的用户提供源代码。 完整文本请参阅 [LICENSE](LICENSE) 文件。 ### v0.9.1 - Keyword Generator 中的项目下拉菜单现在可在标签页加载时正确填充 ### v1.0.0 - Infrastructure Recon:DNS 标签页中新增主动子域爆破、TCP 端口扫描和目录枚举功能
标签:Atomic Red Team, ESC4, .onion爬虫, OSINT, Telegram监控, Unix, 关键词告警, 勒索软件追踪, 品牌保护, 域名监控, 威胁情报, 安全运营, 实时处理, 密码管理, 开发者工具, 扫描框架, 攻击者画像, 数字足迹, 数据可视化, 数据泄露检测, 暗网监控, 测试用例, 网络安全, 自托管, 请求拦截, 逆向工具, 隐私保护