Akasha53/Ananta

GitHub: Akasha53/Ananta

本地优先的 OSINT 分析平台,整合多层安全扫描工具与本地大语言模型,实现从数据收集到智能报告生成的全流程自动化。

Stars: 0 | Forks: 0

# Ananta
CI Status GitHub Issues
Ananta 是一个本地优先的 OSINT 分析平台,其构建理念简单明了:从公开来源收集证据,保持工作流可审计,并将技术信号转化为可读的情报报告。 它结合了 FastAPI 后端、静态 Web 界面、用于后台扫描的可选 Celery worker,以及通过 `text-generation-webui` 提供服务的可选本地 LLM,以实现更丰富的报告综合。该平台专为分析师、安全从业者和研究人员设计,旨在无需将工作流发送到第三方云服务的情况下,实现结构化的侦察和报告。 ## 预览 | 主控制台 | 项目视图 | |---|---| | ![Main Console](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/ec8b23fa2b205907.png) | ![Project View](<./img/Capture d'écran 2026-02-15 170410.png>) | ## Ananta 的功能 Ananta 接受目标(例如域名、IP 地址、URL 或一般研究查询),并从多个 OSINT 来源构建报告。系统可以运行轻量级的被动查询、基于 API 的增强,以及在明确批准后进行更敏感的检查(如端口和漏洞扫描)。结果被存储,在多个视图中呈现,并以多种格式导出。 核心功能包括: - 基于浏览器界面的本地优先 OSINT 工作流。 - 分层执行模型,将被动、增强和敏感工具区分开来。 - 带有进度跟踪和 worker 监控的异步后台作业。 - 结构化情报输出,如图谱数据、暴露点、时间线事件和差异对比。 - 支持导出为 PDF、JSON、CSV、XML、Markdown 和 XLSX 多种格式。 - 针对工具执行、审批和操作可观测性的审计日志。 - 可选的本地 LLM 集成,用于更好的叙述性报告,同时保持模型在您的机器上执行。 ## 关键特性 ### 1. 分层 OSINT 执行 Ananta 将工具分为三层: - `Layer 1`:被动、低风险收集,例如 WHOIS、DNS、HTTP 头、robots.txt、TLS 和邮件姿态检查。 - `Layer 2`:增强或聚合来源,例如 Censys、crt.sh、Wayback Machine、Shodan、VirusTotal、SecurityTrails 以及配置后的 SpiderFoot。 - `Layer 3`:敏感操作,例如主动端口扫描和漏洞扫描,受明确的审批流程和审计日志保护。 该模型不仅仅是文档。应用程序利用它来决定什么可以自动运行,什么必须记录,以及什么需要人工确认。 ### 2. 超越原始工具转储的报告 Ananta 旨在生成可用的情报,而不是互不相关的输出列表。典型的报告结合了: - 原始工具证据。 - 标准化和结构化的发现。 - 衍生出的图谱关系。 - 暴露点摘要。 - 时间线事件和历史。 - 可选的 LLM 编写的叙述性综合。 如果本地 LLM 不可用,后端仍然可以生成后备报告路径,因此平台在没有模型的情况下仍然有用。 ### 3. 异步作业和操作可见性 较长的扫描可以通过 Celery 和 Redis 在后台运行。UI 和 API 可以跟踪: - 作业状态。 - 进度百分比。 - 结果负载。 - Worker 可用性。 - 监控日志和系统健康状况。 这使得主界面在后台进行较长扫描时仍能保持响应。 ### 4. 内置安全性和可追溯性 Ananta 包含许多对于面向公共安全的项目至关重要的控制措施: - 每个请求的请求 ID。 - 昂贵端点的速率限制。 - 安全头和可配置的 CORS。 - 标准化的错误负载。 - 工具执行的完整审计跟踪。 - 敏感操作的审批工作流。 - 健康状况和 worker 状态端点。 ## 架构 项目围绕几个核心组件组织: | 组件 | 角色 | |---|---| | `main.py` | FastAPI 应用程序设置、中间件、错误处理、应用元数据 | | `web_routes.py` | 主要的 HTTP 和 WebSocket 路由 | | `backend_logic.py` | 核心编排、增强、标准化、报告和导出 | | `tasks.py` | 用于异步扫描、清理、调度和并行工作流的 Celery 作业 | | `celery_config.py` | Celery 队列、路由、限制和 Redis 支持的配置 | | `database.py` | SQLAlchemy 模型、引擎设置、会话处理、数据库回退逻辑 | | `models.py` | Pydantic 请求和响应模式 | | `tools/tool_registry.py` | 工具分类、法律风险元数据和执行策略 | | `web/html` | 主 UI 页面 | | `web/javascript` | 前端应用逻辑、页面、service worker 和监控脚本 | | `web/css` | 主样式和移动端样式 | ### 运行流程 宏观上看,一次完整的扫描流程如下: 1. 用户通过 Web UI 或 API 提交目标。 2. 后端判断请求是对话、被动 OSINT、增强 OSINT 还是敏感工作流。 3. 相关工具根据扫描模式直接运行或分发到 Celery。 4. 结果被标准化并存储在数据库中。 5. 衍生出结构化输出,如图谱、暴露点和时间线数据。 6. 生成最终报告,可选包含本地 LLM 综合。 7. 报告通过 UI、历史视图、导出和比较端点变得可用。 ## 用户界面 前端由 FastAPI 应用程序直接提供服务,包含几个专注的页面: | 页面 | 用途 | |---|---| | `/web/html/index.html` | 主分析控制台 | | `/web/html/database.html` | 存储的报告和历史 | | `/web/html/monitoring.html` | 操作监控和日志 | | `/web/html/workers.html` | Celery worker 可见性 | | `/web/html/timeline.html` | 基于时间线的报告历史 | | `/web/html/comparison.html` | 差异和比较视图 | | `/web/html/scheduled.html` | 计划扫描管理 | | `/web/html/offline.html` | PWA 体验的离线回退页面 | 前端还包括: - WebSocket 作业更新。 - 通过 service worker 提供的离线支持。 - 移动端样式。 - 主题支持。 - 分离到专用脚本中的监控和计划扫描页面。 ## API 概览 Ananta 暴露了广泛的 API 接口。最重要的端点分组如下。 ### 核心分析 - `POST /agent/ask` - `POST /agent/ask_async` - `GET /jobs/{job_id}` - `GET /jobs/` ### OSINT 和报告 - `GET /osint/search_smart/` - `GET /osint/whois/` - `GET /osint/dns/` - `GET /osint/headers/` - `GET /osint/censys/` - `GET /osint/report/` - `GET /osint/report/view` - `GET /osint/history/` ### 结构化情报视图 - `GET /osint/graph` - `GET /osint/structured` - `GET /osint/exposures` - `GET /osint/timeline_events` - `GET /osint/timeline_summary` - `GET /osint/timeline` - `GET /osint/diff` - `GET /osint/compare` ### 导出 - `GET /osint/generate_pdf/` - `GET /osint/export/json` - `GET /osint/export/csv` - `GET /osint/export/xml` - `GET /osint/export/markdown` - `GET /osint/export/xlsx` ### 操作和管理 - `GET /health` - `GET /workers/status` - `GET /monitoring/stats` - `GET /monitoring/logs` - `GET /cache/stats` - `POST /cache/clear` - `POST /api-keys/create` - `GET /api-keys/list` - `DELETE /api-keys/{key_id}` ### 敏感操作审批 - `POST /agent/request_approval` - `POST /agent/approve/{approval_id}` - `POST /agent/deny/{approval_id}` ### 实时更新 - `GET /ws/jobs/{job_id}` 通过 WebSocket 服务器运行时,可在 `/docs` 获取交互式 API 文档。 某些管理或受保护的路由可能需要通过 `X-API-Key` 头提供 API 密钥。 ## 扫描模式 异步分析端点支持多种执行模式: | 模式 | 描述 | |---|---| | `fast` | 仅 Layer 1,针对快速被动分析进行了优化 | | `standard` | Layer 1 和 Layer 2 来源 | | `full` | 主要的顺序报告流程 | | `parallel` | Layer 1 和 Layer 2 并行执行,然后聚合 | | `priority` | 紧急队列 | | `critical` | 包含已批准敏感工具的 Layer 3 工作流 | 这为您在速度、深度和操作风险之间提供了实际的权衡。 ## 数据模型 主要的持久化实体包括: - `EntityReport`:目标的存储报告和原始数据。 - `ScanJob`:异步作业状态和进度。 - `ScanJobArchive`:已完成作业的历史归档。 - `ToolExecutionLog`:工具运行的审计日志。 - `Entity`:分析过程中发现的标准化实体。 - `Finding`:结构化的发现和证据。 - `PendingApproval`:敏感工具的审批记录。 - `ScheduledScan`:定期分析定义。 这种结构是实现历史记录、导出、时间线生成、图谱视图和可审计性的基础。 ## 系统要求 ### 基础要求 - Python `3.10+` - `pip` - 支持的 SQL 数据库: - PostgreSQL 是主要的预期配置。 - 当未设置 `DATABASE_URL` 时,自动支持 SQLite 回退。 ### 用于异步操作 - Redis - Celery worker 进程 ### 用于完整的本地报告生成 - `text-generation-webui` 子模块已初始化 - 与配置的端点兼容的本地模型 ### Python 依赖 从以下位置安装项目要求: - `requirements.txt` - `requirements-dev.txt` ## 快速开始 ### 1. 克隆仓库 ``` git clone --recursive https://github.com/Akasha53/Ananta.git cd Ananta ``` `--recursive` 标志很重要,因为该仓库使用 `text-generation-webui` 作为 git 子模块。 ### 2. 安装 Python 依赖 ``` pip install -r requirements.txt -r requirements-dev.txt ``` ### 3. 创建您的环境文件 从 `.env.example` 开始并创建一个本地 `.env`。 示例: ``` DATABASE_URL=postgresql://user:password@localhost/ananta_db REDIS_URL=redis://localhost:6379/0 LLM_API_URL=http://127.0.0.1:5000/v1/chat/completions LLM_TIMEOUT=420 # 可选外部 enrichments CENSYS_API_KEY= VIRUSTOTAL_API_KEY= SHODAN_API_KEY= SECURITYTRAILS_API_KEY= SPIDERFOOT_API_URL=http://127.0.0.1:5001 SPIDERFOOT_API_KEY= # 环境与 Web 安全 ENVIRONMENT=development CORS_ORIGINS=http://localhost:8010 RATE_LIMIT_ENABLED=true ``` 重要说明: - 如果省略 `DATABASE_URL`,Ananta 将回退到 `sqlite:///./ananta.db`。 - 如果未配置可选的提供商密钥,这些增强功能将被干净地跳过。 - `LLM_API_URL` 是可配置的,不必是默认的本地端点。 ### 4. 初始化数据库 ``` python -c "from database import init_db; init_db()" alembic upgrade head ``` ### 5. 启动堆栈 #### Windows 仓库包含辅助脚本: ``` launch_all.bat ``` 这将启动: - 端口 `8010` 上的 FastAPI - 端口 `5000` 上的本地 LLM 服务器 - 一个 Celery worker 停止服务: ``` stop_all.bat ``` #### Linux / macOS 手动启动 终端 1: ``` redis-server ``` 终端 2: ``` python -m uvicorn main:app --host 127.0.0.1 --port 8010 --reload ``` 终端 3: ``` cd text-generation-webui python server.py --model mistralai_Mistral-7B-Instruct-v0.2 --api --nowebui --gpu-memory 7GiB --load-in-4bit ``` 终端 4: ``` python -m celery -A tasks.app worker -Q default,osint_fast,osint_medium,osint_critical,priority,maintenance --loglevel=info ``` ### 6. 打开应用程序 - Web UI: `http://localhost:8010/web/html/index.html` - API 文档: `http://localhost:8010/docs` - 健康检查: `http://localhost:8010/health` ## 基本用法 ### UI 工作流 打开主控制台并提交一个目标,例如: - `example.com` - `8.8.8.8` - `analyze example.com` 应用程序将决定是将请求作为聊天、被动分析还是更深层次的 OSINT 工作流来处理。 ### 同步 API 示例 ``` curl -X POST http://localhost:8010/agent/ask \ -H "Content-Type: application/json" \ -d "{\"query\": \"analyze example.com\"}" ``` ### 异步 API 示例 启动后台扫描: ``` curl -X POST http://localhost:8010/agent/ask_async \ -H "Content-Type: application/json" \ -d "{\"query\": \"analyze example.com\", \"scan_mode\": \"full\", \"language\": \"en\"}" ``` 异步流程中支持的报告语言代码为 `fr`、`en`、`es` 和 `de`。 检查进度: ``` curl http://localhost:8010/jobs/{JOB_ID} ``` ### Worker 检查 ``` curl http://localhost:8010/workers/status ``` ## 报告和导出 Ananta 存储报告数据,以便以后可以重新查看、比较和导出。支持的导出格式包括: - PDF - JSON - CSV - XML - Markdown - XLSX PDF 导出旨在生成面向分析师的可读报告,包含摘要部分、技术附件和法律警告文本。 ## 安全模型和负责任的使用 Ananta 是为 OSINT、研究和授权的安全工作构建的。该项目包含防护措施,但这些防护措施不能取代操作员的责任。 重要原则: - 被动收集是默认路径。 - 敏感操作必须经过明确批准。 - 工具运行是可审计的。 - 用户仍需对法律授权和使用背景负责。 Layer 3 功能(如端口扫描和漏洞检查)仅应在您拥有明确测试目标许可的情况下使用。 ## 可观测性和操作 平台包括用于以下方面的操作端点和 UI 页面: - 应用健康状况 - 缓存统计 - Worker 检测- 监控日志 - 计划扫描 - 后台清理 中间件和运行时保护包括: - 按环境配置的 CORS - CSP 和其他安全头 - 按端点的速率限制 - gzip 压缩 - 带有 `X-Request-ID` 的请求跟踪 - 标准化的错误负载 ## 开发 ### 实用命令 直接运行服务器: ``` python main.py ``` 运行测试: ``` pytest tests/ -v ``` 检查路由: ``` python -c "from main import app; print([r.path for r in app.routes])" ``` 检查配置的数据库 URL: ``` python -c "from database import engine; print(engine.url)" ``` ### 数据库迁移 创建迁移: ``` alembic revision --autogenerate -m "describe change" ``` 应用迁移: ``` alembic upgrade head ``` 回退一步: ``` alembic downgrade -1 ``` ## 仓库布局 ``` . ├── main.py ├── web_routes.py ├── backend_logic.py ├── tasks.py ├── celery_config.py ├── database.py ├── models.py ├── tools/ ├── osint_tools/ ├── web/ │ ├── html/ │ ├── javascript/ │ └── css/ ├── docs/ ├── tests/ ├── alembic/ └── text-generation-webui/ # git submodule ``` ## 限制和说明 - 异步作业、worker 监控和计划扫描需要 Redis。 - 本地 LLM 在架构中是可选的,但强烈建议用于完整的报告体验。 - 外部提供商的增强取决于您自己的 API 密钥和配额。 - Windows 使用 `--pool=solo` 以兼容 Celery。 - 对于特定的实现领域,`docs/` 中的某些项目文档仍然比 README 更详细。 ## 许可证 Ananta 代码库在 **MIT License** 下发布。请参阅 [LICENSE](./LICENSE)。 该仓库还包含可选的 `text-generation-webui` 子模块,该子模块仍属于其上游 **AGPL-3.0** 许可证。根目录的 MIT 许可证不会取代或覆盖该上游许可证。 ## 贡献 欢迎提交问题和拉取请求。如果您为项目做出贡献: - 保持更改与分层安全模型一致 - 避免削弱敏感操作的可审计性或审批流程 - 记录任何新的环境变量、路由或外部提供商要求 ## 项目状态 Ananta 是一个积极发展的项目,在分析、报告、异步执行、结构化输出和操作工具方面具有可工作的核心功能。`docs/ROADMAP_ANANTA.md` 中的路线图涵盖了未来的工作,例如更丰富的图表、更强的关联性、更好的比较工作流和更深层次的报告视图。
标签:API集成, AV绕过, Celery, ESC4, FastAPI, GitHub, HTTP/HTTPS抓包, IP地址查询, LLM, OSINT, PDF导出, Python, reconnaissance, Sigma 规则, Unmanaged PE, 二进制模式, 前端界面, 可观测性, 商业软件, 域名分析, 威胁情报, 安全分析平台, 实时处理, 审计追踪, 密码管理, 开发者工具, 异步任务, 态势感知, 情报报告生成, 搜索引擎查询, 数据统计, 无后门, 本地大模型, 本地部署, 端口扫描, 网络侦查, 网络安全, 网络安全, 自动化安全扫描, 逆向工具, 隐私保护, 隐私保护