harriscyb3r/skillcti-launcher

GitHub: harriscyb3r/skillcti-launcher

一款基于 Claude 驱动的本地自托管网络威胁情报平台,将 IOC 查询、威胁追踪与多源数据整合为一键式自动化分析报告。

Stars: 0 | Forks: 0

# SkillCTI 一个由 AI 驱动的网络威胁情报平台。生成专业的分析师报告、搜索 IOC、枚举域名、追踪 CVE、管理案例并监控威胁行为者活动——所有这些都来自一个由 Claude 支持的本地 Web 应用程序。 ![SkillCTI Dashboard](https://img.shields.io/badge/status-active-brightgreen) ![Python](https://img.shields.io/badge/python-3.11%2B-blue) ![React](https://img.shields.io/badge/react-18-61dafb) ![License](https://img.shields.io/badge/license-MIT-green) ## 功能 | 功能 | 描述 | |---|---| | **Dashboard** | 包含统计计数器(已生成报告、本周、总 API 花费、后端状态)、8 周报告活动条形图、报告类型环形图、活动监视列表警报、快速启动技能磁贴、近期报告列表、近期新闻源、技能使用图表、区域威胁脉搏和本周威胁行为者焦点的首页 | | **区域威胁脉搏** | AI 生成的、以地理范围为界限的活动威胁行为者、近期事件和相关 CVE 的快照——包含按严重程度划分的 CVE 风险概况条形图。需要在设置中设定区域;可按需刷新 | | **本周威胁行为者** | AI 生成的单一行为者焦点,展示别名、来源、动机、目标、标志性技术、著名工具和近期活动——可按需刷新 | | **Skills** | 跨越 CTI 报告、按需分析、DFIR、战略和 TPRM 的 AI 驱动报告生成——请参阅下方的 Skills 部分 | | **后台任务** | 报告在服务器端生成——合上你的笔记本电脑,让你的屏幕休眠,任务会继续运行,并在完成后出现在 Jobs 面板中 | | **定时报告** | 在 cron 风格的间隔安排定期报告生成——每日简报、每周摘要、每月报告 | | **IOC Search** | 在一个查询中通过 VirusTotal、AbuseIPDB、OTX、urlscan.io、Shodan、ThreatFox、MISP 和 Hybrid Analysis 丰富 IP、域名、哈希和 URL——附带 AI 生成的分类摘要 | | **Malware Intel** | 通过 VirusTotal、MalwareBazaar 和 Hybrid Analysis 进行深度哈希分析——检测、C2 关系、YARA 命中、沙箱结论 | | **CVE Search** | 搜索和分析附带 AI 生成影响简报的 CVE | | **Domain Enumeration** | 针对目标域名的 DNS、WHOIS、子域名和开放端口侦察 | | **Credential Exposure** | 身份和凭证监控——结合了 HIBP、HudsonRock Cavalier (infostealer logs)、LeakIX 和 IntelX。接受域名或电子邮件地址 | | **Ransomware Tracker** | 来自 ransomware.live 的实时勒索软件受害者源——可按组织、行业和日期过滤 | | **Threat Actors** | 带有 MITRE ATT&CK TTP 映射的精选勒索软件行为者档案 | | **MITRE ATT&CK** | 离线 ATT&CK 矩阵浏览器——战术、技术、子技术、威胁组织和技术细节。启动时下载 STIX bundle | | **MISP** | 浏览来自你本地 MISP 实例的事件,通过关键字搜索,点击 IOC 跳转至 IOC Lookup,并自动将 MISP 上下文注入所有 AI 生成的报告和 Analyst 聊天中 | | **Cases** | 完整的案例管理系统——创建和追踪调查,包含笔记、artifacts (IOCs, hashes, files)、状态和优先级、TLP 标签和标签 | | **Clients** | 客户经理——存储包含行业、威胁上下文、关键资产和联系方式的客户资料。客户上下文可以注入到报告生成中 | | **PIR** | 优先情报需求——定义常规收集问题,追踪发现并监控重新扫描计划 | | **Library** | 用于保存和标记笔记、IOC、报告和完成情报以供将来参考的情报库 | | **Watchlist** | 监控威胁行为者列表,并在出现新情报时获取警报;未读警报会在 Dashboard 上显示 | | **News Feed** | 汇总来自政府、媒体和研究来源的网络安全新闻,并带有未读追踪;最新文章的预览会出现在 Dashboard 上 | | **Feeds** | 精选威胁情报源——OTX pulses、Abuse.ch (ThreatFox、MalwareBazaar、URLhaus) | | **Analyst** | 带有 CTI 上下文的通用 AI 聊天——在连接时会使用实时的 MISP 事件进行丰富 | | **Reports** | 浏览、查看和下载所有以前生成的 HTML、PDF 和 PPTX 报告 | | **Multi-model** | 每次生成可在 Haiku (快速)、Sonnet (平衡) 或 Opus (最强) 之间选择 | | **Themes** | 7 种内置颜色主题——Dark、Light、Terminal、Slate、Mocha、Midnight、Cyberpunk | | **Premium UI** | Vercel/Linear 风格的暗色界面——阴影深度系统、强制的字体比例、一致的间距 token,purple 仅限于 CTA 和活动状态角色使用 | ## 架构 ``` skill-cti/ # Repo root ├── app/ # React 18 + Vite 6 + TypeScript + Tailwind frontend │ └── src/ │ ├── components/ # Sidebar, LaunchDrawer, StatusDot … │ ├── pages/ # Dashboard, Skills, Reports, IOCSearch, CVESearch … │ └── lib/ # api.ts, skills.ts, theme.ts, types.ts, generate.ts ├── backend/ # FastAPI backend (port 8765) │ ├── routers/ # One file per feature area │ ├── services/ # pdf_export.py, pptx_export.py, style_rule.py │ ├── data/ # Seed data (ransomware_actors.json); runtime DBs are gitignored │ ├── config.py # Pydantic settings (reads .env) │ ├── main.py # App entry, router registration, startup hooks │ ├── requirements.txt │ ├── .env.example # Environment variable template — copy to .env and fill in │ └── .env # Your local secrets — gitignored, never committed ├── reports/ # Generated HTML / PDF / PPTX — gitignored, auto-created ├── skills.js # Skill catalogue (prompt overrides, input schemas, metadata) └── skill-cti.html # Standalone single-file launcher (no backend required) ``` 前端开发服务器将 `/api`、`/v1`、`/reports` 和 `/skill` 代理到后端的 `http://localhost:8765`,因此在开发中没有 CORS 复杂性。 ## 快速开始 ### 前置条件 - Python 3.11+ - Node.js 18+ - 一个 [Anthropic API key](https://console.anthropic.com/) ### 1. 克隆 ``` git clone https://github.com/harriscyb3r/skill-cti.git cd skill-cti ``` ### 2. 后端 ``` cd backend cp .env.example .env # 编辑 .env — 添加你的 ANTHROPIC_API_KEY(必需)以及任何可选的 enrichment keys pip install -r requirements.txt python main.py # Backend 现在运行于 http://localhost:8765 ``` ### 3. 前端 ``` cd app npm install npm run dev # 打开 http://localhost:5173 ``` 就是这样。打开应用,进入 **Settings**,你的 API 密钥就已经从 `.env` 加载了。 ## 环境变量 将 `backend/.env.example` 复制到 `backend/.env` 并填入相应的值。 | 变量 | 必需 | 描述 | |---|---|---| | `ANTHROPIC_API_KEY` | **是** | 来自 [console.anthropic.com](https://console.anthropic.com/) 的 Claude API key | | `VIRUSTOTAL_API_KEY` | 否 | IOC 丰富——文件哈希、URL、IP、恶意软件情报 | | `ABUSEIPDB_API_KEY` | 否 | IOC 丰富——IP 信誉 | | `URLSCAN_API_KEY` | 否 | IOC 丰富——URL 和域名分析 | | `SHODAN_API_KEY` | 否 | IOC 丰富——IP 的端口/banner 数据 | | `THREATFOX_API_KEY` | 否 | IOC 丰富——Abuse.ch ThreatFox 数据库 | | `HYBRID_ANALYSIS_API_KEY` | 否 | IOC 丰富和恶意软件情报——沙箱报告 | | `HIBP_API_KEY` | 否 | 凭证暴露——域名违规计数(付费 HIBP API) | | `INTELX_API_KEY` | 否 | 凭证暴露——通过 IntelX 进行暗网搜索 | | `OTX_API_KEY` | 否 | 威胁源——AlienVault OTX pulses | | `IPINFO_API_TOKEN` | 否 | IOC 丰富——IP 地理位置和 ASN 数据 | | `PROXYCHECK_API_KEY` | 否 | IOC 丰富——VPN/代理/匿名器检测 | | `MISP_URL` | 否 | 你的 MISP 实例的 Base URL(例如 `https://localhost`) | | `MISP_API_KEY` | 否 | MISP automation key——启用事件浏览、IOC 丰富和报告上下文注入 | | `DEFAULT_TLP` | 否 | 报告上的默认 TLP 标签(默认:`TLP:AMBER`) | | `GEOGRAPHY` | 否 | 用于区域威胁脉搏的你的区域(例如 `Australia`、`APAC`、`United Kingdom`) | API 密钥也可以在运行时通过 UI 中的 **Settings** 页面进行设置或更新。 ## MISP 集成 MISP (Malware Information Sharing Platform) 是一个开源的威胁情报平台。连接后,SkillCTI 会: - 在 **MISP** 页面显示你的 MISP 事件,支持搜索和深入查看 - 使用匹配的 MISP 属性和事件上下文丰富 IOC 查询 - 将相关的 MISP 情报注入所有 AI 生成的报告和 Analyst 聊天中 ### 使用 Docker 安装 MISP 运行本地 MISP 实例最简单的方法是使用官方的 Docker Compose 设置。 **前置条件:** Docker Desktop (Windows/Mac) 或 Docker Engine + Docker Compose (Linux) ``` # 1. 克隆官方 MISP Docker 仓库 git clone https://github.com/MISP/misp-docker.git cd misp-docker # 2. 复制示例环境文件 cp template.env .env # 3. 编辑 .env — 设置 MISP_BASEURL 以匹配你将要访问它的地址 # 对于本地使用: # MISP_BASEURL=https://localhost # 将 MYSQL_PASSWORD 和 MISP_ADMIN_PASSPHRASE 更改为更安全的值 # 4. 启动 MISP docker compose up -d # 5. 等待约 2-3 分钟完成首次运行初始化,然后打开: # https://localhost # 默认管理员邮箱:admin@admin.test # 默认管理员密码:在 .env 中设置 (MISP_ADMIN_PASSPHRASE) ``` **检查状态:** ``` docker compose ps # All containers should show "running" docker compose logs -f # Follow startup logs ``` **停止和启动:** ``` docker compose stop # Stop containers (data preserved) docker compose start # Restart docker compose down # Stop and remove containers (data preserved in volumes) docker compose down -v # ⚠️ Removes all data including events ``` ### 创建 MISP API Key 1. 登录到位于 `https://localhost` 的 MISP 实例 2. 点击右上角的你的用户名 → **My Profile** 3. 向下滚动到 **Auth keys** 部分 4. 点击 **Add authentication key** 5. 设置可选的评论(例如 `SkillCTI`)和过期时间,然后点击 **Submit** 6. **立即复制生成的密钥**——它只会显示一次 ### 将 MISP 连接到 SkillCTI **选项 A —— 通过 `.env`(推荐用于持久化设置):** ``` MISP_URL=https://localhost MISP_API_KEY=your_automation_key_here ``` 编辑 `.env` 后重启后端。 **选项 B —— 通过设置页面:** 1. 打开 SkillCTI → **Settings** 2. 将你的 MISP URL(例如 `https://localhost`)和 API key 粘贴到 MISP 字段中 3. 点击 **Save**——会立即测试连接并更新侧边栏中的状态点 当连接正常时,侧边栏会显示绿色的 MISP 指示灯。 ## Skills Skills 是驱动报告生成的 prompt 模板。每个 skill 位于 repo 根目录下自己的目录中(例如 `cti-tabletop/SKILL.md`),并在 `app/src/lib/skills.ts` 中注册。 ### CTI 报告 | Skill | 描述 | |---|---| | **Daily Brief (Global)** | 涵盖过去 24 小时的单页全球网络新闻简报——TLDR 要点、头条新闻、CVE 观察、勒索软件观察 | | **Operational CTI** | 面向 SOC/IR/漏洞管理的密集月度简报——CVE 深入分析、IOC 表格、DRAFT Sigma/KQL 检测存根。AU 或 Global 模式 | | **Tactical CTI** | 面向从业者的中等深度月度报告——BLUF、带有 TTP 分析的事件、优先 CVE、狩猎假设。AU 或 Global 模式 | | **Strategic CTI** | 通俗易懂的董事会简报——执行摘要、月度主题、以业务术语表达的顶级漏洞、监管态势。AU 或 Global 模式 | | **Sector Report** | 多个月的行业情报——威胁行为者全景、事件、TTP 趋势、供应链风险、监管态势。AU 或 Global 模式 | ### 按需 CTI | Skill | 描述 | |---|---| | **Security Advisory** | 针对任何网络事件、CVE 或违规行为的面向客户可交付的执行建议 | | **Threat Actor Profile** | 使用 Diamond Model 的结构化行为者档案——TTPs、活动、基础设施、受害者学、IOCs | | **Detection as Code** | 来自威胁报告或 TTP 列表的 Sigma rules + Sentinel/Defender KQL——所有规则标记为 DRAFT | | **YARA Rule Generator** | 来自恶意软件分析、供应商报告或样本剖析的 DRAFT YARA rules | | **ATT&CK Navigator Layer** | 从报告中提取 MITRE 技术并渲染内联 ATT&CK 矩阵 + Navigator JSON 层导出 | | **Admiralty Assessment** | 使用 NATO Admiralty Code (6×6 source/information grading) 评估 CTI 报告的质量 | | **STIX Bundle Export** | 解析威胁情报源,提取 IOCs,并发出用于 MISP/OpenCTI/Sentinel TI 的有效 STIX 2.1 bundle | ### 战略 | Skill | 描述 | |---|---| | **Post-Incident Review** | 来自事件报告的结构化经验教训回顾——时间线重建、根本原因分析、检测差距分析、DRAFT Sigma/KQL 存根、优先行动清单 | | **IR Playbook Generator** | 针对 13 种攻击类型的 NIST 800-61r3 操作员手册——逐阶段检查清单、决策树、升级路径、通讯模板 | | **Threat Model** | PASTA 或 STRIDE 威胁模型——内联 SVG DFD、ATT&CK/CWE/CAPEC 映射、带热力图的威胁登记册、NIST CSF 2.0 缓解措施 | | **Tabletop Exercise (TTX)** | 即用型 IR 桌面推演——6 个分阶段注入、主持人笔记、讨论问题、AU 监管触发器 | | **BAS / Red Team** | Breach and attack simulation 活动计划——6–8 个攻击剧本、atomic 测试用例、控制层有效性矩阵、MITRE 覆盖热力图 | | **Mythos-Ready Assessment** | 针对 AI/agent 部署的战略准备评估——风险登记册、优先行动、90 天董事会模板 | ### TPRM | Skill | 描述 | |---|---| | **Vendor Risk Intelligence** | 针对供应商列表的第三方风险报告——CVEs、CISA KEV 命中、违规历史、执法行动、媒体信号、2×2 风险矩阵 | ### 输出格式 - **HTML** —— 暗色编辑报告,保存到 Reports 页面,可在浏览器中查看,并带有用于投影仪交付的 **PRESENT** 模式 - **PDF** —— A4 打印就绪简报,完成后自动下载 - **PPTX** —— 具有视觉幻灯片类型(统计数据、标注、亮点、时间线、议程、双栏布局)的专业 PowerPoint 演示文稿,完成后自动下载 ### 添加新 Skill 1. 创建一个目录 `skills/cti-yourskill/`(在 repo 根目录的 `skills/` 文件夹中),其中包含一个 `SKILL.md`,用于描述 skill 的内容要求和 HTML/输出结构 2. 在 `app/src/lib/skills.ts` 中按照现有模式注册它 3. 重启前端开发服务器——该 skill 会立即出现在 Skills 画廊中 ## 后台任务系统 所有报告生成都在 **服务器端** 作为 asyncio 后台任务运行。浏览器仅用于提交任务和轮询状态——关闭标签页、让笔记本电脑休眠或失去网络连接都不会中断生成。 - 任务会持久化到磁盘(`reports/_job-{id}.json`),并在后端重启后依然存在 - **Jobs** 面板显示带有字符计数和预计完成时间的实时进度 - 已完成的任务直接链接到报告查看器 (HTML) 或触发下载 (PDF/PPTX) - 侧边栏显示一个带有活动任务计数的动画徽章 ## 报告查看器 HTML 报告在全屏面板中渲染,具有: - 带有 scroll-spy 的固定侧边栏目录 - 引用上标 `[n]` 链接到参考部分 - 一个 **PRESENT** 按钮(右上角),进入针对投影仪优化、带有更大字体的全屏视图 ## UI 设计系统 前端在所有页面和组件中强制执行一套约定。添加新视图时请遵循这些约定。 ### 排版 | 角色 | 大小 / 粗细 | 字体 | |---|---|---| | 页面标题 | 22px / 700 | Inter (`font-sans`) | | 卡片标题 | 14–15px / 600 | Inter | | 正文 | 13px / 400 | Inter | | 区域标签 | 11px / 500, `uppercase tracking-[0.2em]`, `text-txt-3` | Inter | | 数据标识符 | 10px / 700 | IBM Plex Mono (`font-mono`) | `font-mono` **仅** 用于数据值:IOC 值、CVE ID、哈希、ATT&CK ID、CVSS vectors、TLP badges、时间戳和代码块。所有 UI 外观使用 `font-sans`。 **大小下限:** UI 文本永远不要低于 11px,`font-mono` 数据值永远不要低于 10px。对于小标签和徽章,通过加粗和 `tracking-*` 来补偿,而不是缩小。Inter 的视觉特性 (`cv11`, `ss01`, `ss03`)、`-0.011em` 字间距和 `tabular-nums` 在 `index.css` 中全局应用。 ### 颜色 通过 CSS 自定义属性进行 Tailwind CSS 基于变量的主题化。关键 token:`bg`、`surface`、`surface2`、`border`、`border2`、`txt`、`txt-2`、`txt-3`、`purple`、`cyan`、`green`、`red`、`amber`。 **Purple 仅限于两种角色:** 1. CTA / 主要操作——渐变按钮、焦点环、切换激活、加载 spinner 2. 活动 / 选定状态——`border-l-purple`、`bg-purple/[0.08]`、活动导航项、未读徽章 不要将 purple 用于悬停效果、装饰标签、图标色调或数据徽章。 ### 阴影 | Token | 用法 | |---|---| | `shadow-card` | 每个 `bg-surface` 卡片——增加深度 + 内嵌顶部高光(暗色)或柔和的下拉阴影(亮色) | | `shadow-elevated` | 悬浮在基础表面之上的抽屉、面板和覆盖层 | ### 边框圆角 - `rounded-lg` (8px) —— 卡片和面板 - `rounded-md` (6px) —— 输入和辅助控件 - `rounded-sm` (4px) —— 徽章和 pill ### 间距 四个 token 涵盖所有间距需求: | Token | 大小 | 用途 | |---|---|---| | `p-3` / `gap-3` / `mb-3` | 12px | 紧凑的内联组(图标+标签、区域标签 → 内容) | | `p-4` / `gap-4` / `mb-4` | 16px | 卡片内部填充,相关项之间 | | `p-6` / `gap-6` / `mb-6` | 24px | 页面外部填充,主要部分之间 | | `p-8` / `gap-8` / `mb-8` | 32px | 稀疏的主展示区 | 避免任意值(`p-[26px]`,`mb-[14px]` 等)。 ## 开发 ### 前端构建 ``` cd app npm run build # Outputs to app/dist/ ``` 后端在生产环境中将 `app/dist/` 作为静态文件提供服务(`/`),因此只需一个 `python main.py` 即可运行整个技术栈。 ### 后端 如果你运行以下命令,FastAPI 后端会在开发中自动重载: ``` cd backend uvicorn main:app --reload --port 8765 ``` ### 代理配置 `app/vite.config.ts` 将以下路径代理到 `http://localhost:8765`: - `/api` —— 后端 API - `/v1` —— Anthropic 代理 endpoint - `/reports` —— 报告文件服务 - `/skill` —— skill prompt 文件服务 - `/generate-pdf`,`/generate-pptx` —— 导出 endpoint ## 安全说明 - 后端通过其代理公开你的 Anthropic API key——**不要将端口 8765 暴露给互联网**。如果部署,请在本地运行或置于身份验证之后。 - 生成的报告可能包含敏感情报。`reports/` 目录已被 gitignored;默认情况下,将其内容视为 TLP:AMBER 或更高级别。 - 所有丰富的 API 密钥都存储在已被 gitignored 的 `backend/.env` 中。切勿提交此文件。 ## 贡献 欢迎提交 Pull request。如果有重大更改,请先开启一个 issue。 1. Fork 本 repo 2. 创建一个功能分支 (`git checkout -b feature/my-skill`) 3. 提交你的更改 4. 推送并开启一个 PR ## 许可证 MIT——详情请参阅 [LICENSE](LICENSE)。
标签:DLL 劫持, Python, React, Syscalls, 大语言模型, 威胁情报, 安全运营, 开发者工具, 扫描框架, 无后门, 用户定义反射加载器, 自动化报告, 自动化攻击, 逆向工具