cemsid/hermes-security

GitHub: cemsid/hermes-security

一款基于Hermes大模型的自主漏洞扫描器,让非技术用户也能获得专业的网站安全审计与自动修复建议。

Stars: 0 | Forks: 0

# 🛡️ HERMES SECURITY — 自主漏洞扫描器 我的家庭正面临经济困难。 当我看到这次黑客马拉松时,我想 —— 也许我能做点什么。 我是为了钱参加的吗?是的,我很诚实。 但我也确实看到了一个问题,并想要解决它。 我从事 WordPress 网站工作已经很久了。 在搭建和维护客户网站的过程中,我总是看到同样的情况: 网站所有者根本不知道他们的网站暴露在多大的风险中。 进行安全审计要么太贵,要么太技术化。 *为什么每个人都不能了解自己网站的安全性呢?* 这个问题为我开启了 Hermes。 黑客马拉松最难的部分是让所有组件协同工作 —— nmap、Hermes-4-405B、前端、Telegram、GitHub hunter、ArXiv、Excalidraw... 所有这些都要在真实服务器上同时运行。 当它成功运行时,我感到很自豪。但我仍然不完全满意。 那种感觉没有阻止我 —— 它让我继续构建。 🌐 **https://hermes-intel.duckdns.org** ## ⚕️ Hermes-4-405B — 在每一步做出决策的 AI 这不是一个简单的“扫描并显示结果”的工具。 Hermes-4-405B 在每个端点都处于活跃状态 —— 分析、学习、编写修复方案。 所有 AI 调用都通过 `inference-api.nousresearch.com/v1/chat/completions` 进行。主要模型是 **Hermes-4-405B**;如果失败,会自动回退到 **Hermes-3-70B**,然后是 **Hermes-3-8B**。每个端点都有不同的系统提示 —— 安全分析需要 JSON 输出,聊天模式使用自然语言,ArXiv 评论生成 2 句话摘要。运行参数为 `max_tokens: 8000`,`temperature: 0.3`,以确保输出一致且具技术性。 ## 🔍 全量扫描 — 8 层实时分析流水线 `/api/full-scan` 端点通过单个 HTTP 请求运行 8 种不同的检查: **1. 可达性 + SSL** — 通过 `requests.get()` 测试 HTTPS 连接。SSL 错误、连接错误和仅支持 HTTP 的情况会被分别捕获。检查 5 个关键 HTTP 安全头(CSP、X-Frame-Options、XCTO、HSTS、Referrer-Policy),并计算 `headers_score` 百分比。 **2. nmap 端口扫描** — 通过 `subprocess.run()` 调用真实的 nmap:`-T4 --open -sV -p 80,443,8080,8443,22,21,3306,5432,6379,27017`。输出通过正则表达式解析,提取端口/服务/版本。超时:15 秒。 **3. robots.txt 检查** — 根据 HTTP/HTTPS 状态使用正确的协议获取。验证存在性和内容长度。 **4. SSL 证书过期检测** — Python 的 `ssl` 和 `socket` 模块连接到 443 端口以检索证书。使用 `datetime` 解析 `notAfter` 字段,计算 `ssl_days_left` 和 `ssl_expiry`。 **5. DNS/IP 变更检测** — 通过 `socket.gethostbyname()` 获取当前 IP。与存储在 `/tmp/hermes-dns-{domain}.txt` 中的上次 IP 进行比较。如果更改,则返回 `dns_changed: true`。 **6. HTTP→HTTPS 重定向检查** — 发送带有 `allow_redirects=False` 的 HTTP 请求。对于 301/302/307/308 状态码,检查 `Location` 头是否包含 HTTPS 前缀。 **7. Google Safe Browsing** — 对 Google Transparency Report 进行简单的 GET 请求,搜索 `dangerous` 或 `malware` 关键词。执行黑名单检测。 **8. 篡改检测** — 主页前 5000 个字符的 MD5 哈希存储在 `/tmp/hermes-content-{domain}.txt` 中。每次扫描时进行比较。如果更改,则返回 `content_changed: true`。 所有这些数据在单个提示中发送给 Hermes-4-405B。模型返回包含 5-8 个详细 `findings`、`score`、`threat_assessment`、`critical_actions` 和 `auto_fix` 的 JSON。 ## 🔬 38 项安全测试 — 独立的前端检查 除了后端数据外,还有 38 项独立的安全测试通过 `index.html` 中的 JavaScript 运行。每项测试返回 PASS / WARN / INFO: - SSL/TLS 证书有效性和剩余天数 - HTTPS 重定向强制执行 - HTTP 安全头:CSP、X-Frame-Options、HSTS、X-Content-Type-Options、Referrer-Policy、Permissions-Policy - 暴露的敏感文件:`.env`、`.git`、`wp-config.php`、`phpinfo.php`、`backup.zip` - 目录列表检测 - 错误信息泄露 - URL 参数中的密码泄露 - SQL 注入被动检测 - XSS 反射检测 - 后台面板暴露(`/admin`、`/wp-admin`、`/administrator`) - 备份文件检查(`.bak`、`.old`、`.backup`) - 混合内容(HTTPS 页面上的 HTTP 资源) - CORS 策略分析 - CSRF token 存在性 - 针对检测到的服务版本的 CVE 数据库查询 - HTTP/2 和 HTTP/3 支持 - Cookie 安全标志(Secure、HttpOnly、SameSite) - 点击劫持保护 - 内容嗅探保护 - 以及更多 ## ⚡ delegate_task — 真正的并行 Agent 架构 `/api/delegate` 端点使用 Python `threading.Thread`。为每个域名生成一个独立的线程 —— 最多 3 个并行 agent。每个线程独立运行 nmap 扫描并向 Hermes-4-405B 发送单独的分析请求。线程以 90 秒超时进行 join。结果收集在 `results` 字典中,并作为单个 JSON 响应返回。 如果 API 无法访问,浏览器端回退机制会自动激活:根据 SSL 存在性生成基本分数,用户不会看到错误。 ## 🤖 自主 Issue Hunter — 灵感源自 Symphony #404 `_issue_hunter_loop()` 函数在后台守护线程中运行。即使页面刷新,它也会继续运行。 **流程:** 1. `_fetch_github_issues()` — 向 GitHub API 发送 `GET /repos/{owner}/{repo}/issues`。按 `state=open` 和指定标签进行过滤。 2. **认领** — 未认领的 issue 被添加到 `_issue_hunter_state['claimed']` 字典中。`_add_label()` 将 `hermes-claimed` 标签附加到 GitHub issue 上。 3. **Hermes 分析** — Issue 标题和正文发送给 Hermes-4-405B。模型返回包含以下内容的 JSON:`understood`、`root_cause`、`fix_type`(patch/nginx_config/bash_script)、`fix_code`、`test_commands`、`confidence`(HIGH/MEDIUM/LOW)、`estimated_effort`(S/M/L/XL)、`pr_title`。 4. **CI 模拟** — 如果 `confidence` 为 HIGH 或 MEDIUM,则 CI PASS;如果为 LOW,则 CI FAIL。模拟真实的 CI 流水线行为。 5. **PR 评论** — `_post_github_comment()` 向 GitHub issue 发布评论,包含修复代码、测试命令和 CI 结果。 6. **轮询** — 循环在配置的间隔(默认:60 秒)后重复。 **一次性测试** — `/api/issue-hunter/analyze-one` 端点允许分析任何 issue 标题 + 正文对,无需实时仓库连接。 ## 📡 域名情报 — 被动侦察引擎 `/api/domain-intel` 端点从 4 个来源收集数据: - **crt.sh** — 通过证书透明度日志发现子域名。使用 `q=%.{domain}` 模式获取所有证书。从 `name_value` 字段解析子域名。返回最多 40 个唯一子域名。 - **Google DoH (DNS over HTTPS)** — 从 `dns.google/resolve` API 获取 A、AAAA、MX、NS、TXT、CNAME 记录。无外部库 —— 纯 HTTP 请求。 - **SSL 证书详情** — Python `ssl` + `socket` 模块连接到 443 端口以检索证书。提取主题、颁发者、notBefore、notAfter、SAN 列表(最多 15 条)、版本和剩余天数。 - **Hermes AI 风险分析** — 所有数据合并到单个提示中发送给 Hermes。返回 `risk_level`、`exposure_score`、`key_findings`、`recommendations`、`summary`。 ## 📄 ArXiv 集成 — 学术 CVE 研究 `/api/arxiv-search` 端点使用 ArXiv Atom API。`search_query` 参数构建为 `all:{term} AND (cat:cs.CR OR cat:cs.NI OR cat:cs.SE)`。涵盖类别:`cs.CR`(密码学与安全)、`cs.NI`(网络与互联网架构)、`cs.SE`(软件工程)。 XML 响应使用 `xml.etree.ElementTree` 解析。对于每篇论文:提取标题、摘要(400 字符)、链接、PDF 链接、发布日期和前 3 位作者。PDF 链接通过将 URL 中的 `abs` 转换为 `pdf` 自动生成。 Hermes-4-405B 为排名靠前的结果生成 2 句话的相关性评估。 ## 🗺️ Excalidraw 图表 — AI 驱动的网络地图 `/api/diagram` 端点完全在 Python 中生成 Excalidraw JSON —— 无外部库。 `rect()`、`text()`、`arrow()` 函数生成 Excalidraw 元素格式的字典。每个元素包含唯一的 ID 计数器、`versionNonce`、`boundElements`、`strokeColor`、`backgroundColor`、`roundness` 和所有必需字段。 颜色编码:分数 ≥80 → `#00875a`(绿色),≥60 → `#ff991f`(橙色),≥40 → `#ff7452`,<40 → `#de350b`(红色)。风险端口(21、22、23、3306、5432、6379、27017)为红色;安全端口为蓝色。严重/高危发现显示在单独的框中,通过箭头连接到服务器。 输出可导出为 `.excalidraw` 或 `.svg`。Hermes AI 生成 2-3 句话的图表架构分析。 ## 🧠 技能系统 — 持久化记忆 每次扫描后,Hermes-4-405B 在 `skill_learned` 字段中生成一条安全规则。此规则通过 `tg_bot.py` 写入 `/var/www/html/hermes-skills.json`。保留最近 50 条技能。技能也会追加到 `/root/.hermes/memories/MEMORY.md`。 `/api/skills` GET 端点返回所有技能。在前端的 Schedule & Skills 标签页中按域名分组显示。 ## ✈️ Telegram 集成 双层 Telegram 系统: **1. tg_bot.py** — 使用长轮询的独立 Python bot。处理 `/scan`、`/summary`、`/findings`、`/domainintel`、`/arxiv` 命令。每位用户最后 10 条消息存储在 `chat_histories` 字典中。非命令消息路由到 `/api/chat`,与 Hermes-4-405B 进行自然语言对话。 **2. hermes-addons.js** — 前端的 Telegram 按钮调用 `sendTelegramAlert()`。分数、风险条、SSL 状态、主要发现、域名情报和 ArXiv 结果以 Markdown 格式 POST 到 `api.telegram.org/bot{TOKEN}/sendMessage`。 ## ⏰ 每日晚间 Cron — 个性化自动扫描 `/api/cronjob` 端点为每位用户动态生成 bash 脚本,并将其注册到 crontab 中。脚本名称格式:`hermes-scan-{domain}-{chat_id}.sh` —— 每个用户/域名对唯一。 多用户自动错峰:统计现有的 `hermes-scan-` 条目,每个新条目偏移 2 分钟(02:00、02:02、02:04...)。日志文件单独保存在 `/var/log/hermes-scan-{domain}.log`。 在每个脚本内部,所有值都通过 Python3 单行命令从 `/api/full-scan` 输出中解析:分数、严重/高/中/低计数、端口列表、HTTPS 状态、SSL 过期时间、DNS IP、篡改状态、Google 黑名单。 ## 🔧 SWE Agent — 自动修复生成 `/api/swe-agent` 端点接收漏洞 + 目标域名,并指派 Hermes-4-405B 扮演“mini-swe-agent”角色。模型生成: - `understanding` — 漏洞存在的原因 - `fix_type — nginx_config / bash_script / code_patch - `fix_code` — 完整、可部署的修复代码 - `test_commands` — 用于验证修复的命令列表 - `before_after` — 易受攻击配置与安全配置的对比 - `confidence` — HIGH / MEDIUM / LOW 在前端,点击任何发现旁边的“Auto-Fix”按钮会调用此端点并立即显示结果。 ## 📊 PDF 导出 jsPDF 库在 `hermes-addons.js` 内部使用。深色主题:背景 `#040c10`,顶部栏 `rgba(0,255,136,0.15)`,分数颜色动态变化。分数环绘制为 SVG。通过 `data-hermes-{level}` 属性从 DOM 读取漏洞计数。日志行根据 OK/WARN/ERROR 状态进行颜色编码。文件名自动生成为 `hermes-report-{domain}-{timestamp}.pdf`。 ## 💎 钱包卫士 — 链上安全分析 通过 Etherscan API 获取实时链上数据:ETH 余额、交易计数、代币列表、钱包年龄。概览、交易和代币/NFT 标签页分开显示。所有数据发送给 Hermes-4-405B 进行行为风险分析。风险分数从 0-100 计算,确定钱包画像(HODLer、Trader、Suspicious 等)。 ## 🏗️ 技术栈 ``` Backend → Python 3 / Flask / Flask-CORS / gunicorn (4 workers) AI → Hermes-4-405B (primary) → Hermes-3-70B → Hermes-3-8B (fallback) AI API → inference-api.nousresearch.com/v1/chat/completions Port Scan → nmap (-T4 --open -sV) DNS → Google DoH (dns.google/resolve) Subdomains → crt.sh certificate transparency ArXiv → export.arxiv.org Atom API + xml.etree.ElementTree Diagram → Native Python Excalidraw JSON generation PDF → jsPDF (browser-side) Blockchain → Etherscan API Bot → Python requests + long polling Infra → Ubuntu 24, nginx reverse proxy, systemd, crontab Frontend → Vanilla JS, dark terminal UI ``` 作为一名学生,我参加这次黑客马拉松的原因既有个人的也有技术的。 但最终,呈现出的成果超越了我自己。 *安全应该对不懂终端的人触手可及。* *任何拥有 WordPress 网站的人都应该能够使用它。* *Hermes 让这成为可能。* 🌐 **https://hermes-intel.duckdns.org** ⚕️ **由 Hermes-4-405B 驱动 — Nous Research**
标签:AI安全, Chat Copilot, ESC4, Hermes-4-405B, Nmap, Nous Research, OSINT, Python, SSL证书检测, WordPress安全, 加密, 动态插桩, 后端开发, 威胁建模, 密码管理, 插件系统, 操作系统监控, 数据可视化, 无后门, 智能安全分析, 漏洞修复建议, 漏洞扫描器, 网站安全检测, 网络安全, 自动化渗透测试, 虚拟驱动器, 资产侦察, 逆向工具, 防御性安全, 隐私保护, 黑客马拉松