kumar-yoginder/Agrashandhani

GitHub: kumar-yoginder/Agrashandhani

一款面向威胁情报研究的 OSINT 聚合平台,解决多源查询与重复请求的问题。

Stars: 0 | Forks: 0

# Agrashandhani: OSINT 工具 **अग्रशंधनी** (leading inquiry) - 一款用于威胁情报研究的综合 OSINT 聚合平台 Agrashandhani 在多个威胁情报来源中搜索 IOCs(哈希、IP、域名、URL、CVE、邮箱等),将结果带时间戳缓存到本地,并支持从 CSV 文件进行批量处理。为需要大规模、快速、可靠威胁情报的安全专业人员而构建。 ## 快速开始 1. 创建并激活 Python 虚拟环境: ``` python3 -m venv .venv source .venv/bin/activate ``` 2. 安装依赖: ``` pip install -r requirements.txt ``` 3. 执行单个查询: ``` python main.py "44d88612fea8a8f36de82e1278abb02f" ``` 4. 执行 CSV 批量处理(第一列或每行一个 IOC,可选表头): ``` python main.py -c sample_iocs.csv ``` ## CLI 选项 - `query` — 要搜索的单个 IOC - `-c, --csv` — 从 CSV 文件读取 IOC - `-t, --type` — 强制 IOC 类型(`hash`、`ip`、`auto`) - `-s, --sources` — 以逗号分隔的来源列表(例如 `virustotal,malwarebazaar`) - `-v, --verbose` — 输出 JSON 格式的结果 - `-r, --refresh` — 强制搜索并绕过缓存 - `-l, --list-sources` — 列出可用来源 - `--validate-only` — 验证输入而不执行搜索 ## 主要功能 ✅ **多来源威胁情报** — 同时查询 11 个来源(VirusTotal、MalwareBazaar、Hybrid Analysis、MalShare、AlienVault OTX、Team Cymru、Any.run、SecurityTrails、Shodan、GreyNoise、IBM X-Force) ✅ **智能缓存** — 带时间戳的本地 JSON 数据库,避免重复 API 调用 ✅ **14+ IOC 类型** — MD5/SHA1/SHA256 哈希、IPv4/IPv6、域名、URL、邮箱、CVEs、APT、恶意软件家族、操作系统、国家/地区 ✅ **批量处理** — 支持自动表头检测和类型验证的 CSV 文件处理 ✅ **模块化架构** — 易于扩展以添加新来源 ✅ **智能限流** — 内置指数退避和重试逻辑 ✅ **多种输出格式** — 人类可读或详细 JSON,便于集成 ✅ **验证模式** — 在不调用 API 的情况下测试 IOC 格式 ## 支持的来源 Agrashandhani 集成 **11 个威胁情报来源**。每个来源仅查询其支持 IOC 类型。 | 来源 | 简称 | 哈希 (MD5/SHA1/SHA256) | IPv4 | IPv6 | 域名 | URL | 备注 | |---|---|:---:|:---:|:---:|:---:|:---:|---| | VirusTotal | `virustotal` | ✅ | ✅ | ✅ | ✅ | ✅ | 70+ 款 AV 引擎,文件/网络信誉 | | MalwareBazaar | `malwarebazaar` | ✅ | | | | | 恶意软件样本、YARA 规则、恶意软件家族 | | Hybrid Analysis | `hybrid_analysis` | ✅ | ✅ | | ✅ | ✅ | 沙箱分析、文件行为、网络指标 | | MalShare | `malshare` | ✅ | | | | | 恶意软件样本数据库、分析结果 | | AlienVault OTX | `otx` | ✅ | ✅ | ✅ | ✅ | ✅ | 威胁脉冲、被动 DNS、CVE 关联 | | Team Cymru | `cymru` | ✅ | ✅ | | | | 哈希信誉、IP 到 ASN/BGP 映射 | | Any.run | `anyrun` | ✅ | ✅ | | ✅ | ✅ | 动态沙箱分析、行为结果 | | SecurityTrails | `securitytrails` | | ✅ | | ✅ | | DNS 记录、WHOIS、子域名、IP 到主机名 | | Shodan | `shodan` | | ✅ | | ✅ | | 开放端口、运行服务、横幅、CVE、DNS 记录 | | GreyNoise | `greynoise` | | ✅ | | | | IP 分类:良性 / 恶意 / 背景噪声、标签 | | IBM X-Force | `xforce_ibm` | ✅ | ✅ | ✅ | ✅ | ✅ | 威胁评分、漏洞情报 | ### 各来源查询内容说明 #### 文件哈希查询(MD5 · SHA1 · SHA256) | 来源 | 返回结果 | |---|---| | VirusTotal | 70+ 款 AV 引擎的检测数、文件元数据、签名 | | MalwareBazaar | 恶意软件样本详情、YARA 规则匹配、恶意软件家族归属 | | Hybrid Analysis | 沙箱执行报告、行为分析、文件关系 | | MalShare | 来自社区上传恶意软件语料库的样本详情 | | AlienVault OTX | 文件信誉、关联威胁脉冲与对手组 | | Team Cymru | AV 检测率和哈希信誉评分 | | Any.run | 交互式沙箱分析、进程树、网络活动 | | IBM X-Force | 恶意软件分类、威胁评分、关联活动 | #### IP 地址查询(IPv4 · IPv6) | 来源 | 返回结果 | |---|---| | VirusTotal | IP 信誉、WHOIS 数据、被动 DNS、ASN 信息 | | AlienVault OTX | IP 信誉、地理位置、被动 DNS、关联脉冲 | | Hybrid Analysis | 与该 IP 相关的网络指标 | | Team Cymru | IP 到 ASN 映射、BGP 前缀数据、路由信息 | | Any.run | 来自沙箱提交的该 IP 威胁情报 | | SecurityTrails | 反向 DNS、主机名关联、历史 DNS 记录 | | Shodan | 开放端口、运行服务、横幅、CVE、地理位置 | | GreyNoise | IP 分类(良性 / 恶意 / 背景噪声)、标签 | | IBM X-Force | IP 信誉评分、地理位置、威胁类别 | #### 域名查询 | 来源 | 返回结果 | |---|---| | VirusTotal | 域名信誉、DNS 记录、WHOIS、关联 URL | | AlienVault OTX | 域名信誉、被动 DNS、关联恶意软件脉冲 | | Hybrid Analysis | 来自沙箱提交的域名网络指标 | | Any.run | 从沙箱运行中提取的域名威胁情报 | | SecurityTrails | 当前/历史 DNS 记录、WHOIS、子域名枚举 | | Shodan | DNS 记录、子域名、关联 IP 地址 | | IBM X-Force | 域名威胁评分、分类 | #### URL 查询 | 来源 | 返回结果 | |---|---| | VirusTotal | URL 信誉、文件下载、重定向、AV 检测 | | AlienVault OTX | URL 威胁分析、关联威胁脉冲 | | Hybrid Analysis | URL 行为、沙箱中的网络活动 | | Any.run | 来自交互式沙箱提交的 URL 分析结果 | | IBM X-Force | URL 威胁评分、分类 | ## 添加新的威胁情报来源 Agrashandhani 的模块化架构使得集成额外威胁情报提供者变得简单: 1. 在 `sources/newsource.py` 中创建继承自 `base.Source` 的类: ``` from sources.base import Source from clients import RateLimitedClient from config import YOUR_API_KEY class NewSource(Source): def __init__(self): super().__init__("newsource") self.client = RateLimitedClient() def query(self, ioc_type, value): # Your query implementation pass ``` 2. 在 `sources/__init__.py` 中注册: ``` from sources.newsource import NewSource SOURCES["newsource"] = NewSource() ``` ## 项目结构 ``` Agrashandhani/ ├── main.py # CLI entry point ├── requirements.txt # Python dependencies ├── .env # API keys (not in repo) ├── .env.example # Configuration template ├── data/ │ ├── threat_intel_db.json # Local cache with timestamps │ └── malware_families_mapping.json ├── sample_iocs.csv # Example batch file │ ├── config.py # Configuration & constants ├── clients.py # RateLimitedClient with retry logic │ ├── sources/ # Threat intelligence source implementations │ ├── __init__.py # Source registry & factory │ ├── base.py # Abstract Source class │ ├── virustotal.py # VirusTotal │ ├── malwarebazaar.py # MalwareBazaar │ ├── hybrid_analysis.py # Hybrid Analysis │ ├── malshare.py # MalShare │ ├── otx.py # AlienVault OTX │ ├── cymru.py # Team Cymru │ ├── anyrun.py # Any.run │ ├── securitytrails.py # SecurityTrails │ ├── shodan.py # Shodan │ ├── greynoise.py # GreyNoise │ └── xforce_ibm.py # IBM X-Force │ ├── validators/ # IOC validation & classification │ └── __init__.py # IOCValidator class (14+ types) │ ├── database/ # Local cache management │ └── __init__.py # ThreatIntelDB with timestamps │ ├── engine/ # Search orchestration core │ └── __init__.py # _run_osint_engine() function │ └── input_handler/ # Batch processing └── __init__.py # InputHandler for CSV files ``` ## 配置 在项目根目录创建 `.env` 文件并填入 API 密钥(可复制 `.env.example` 作为起点): ``` # VirusTotal — https://www.virustotal.com/gui/my-apikey VT_API_KEY=your_virustotal_api_key # MalwareBazaar — https://auth.abuse.ch/ MB_API_KEY=your_malwarebazaar_api_key # Hybrid Analysis — https://www.hybrid-analysis.com/ HA_API_KEY=your_hybrid_analysis_api_key # MalShare — https://malshare.com/register.php MALSHARE_API_KEY=your_malshare_api_key # AlienVault OTX — https://otx.alienvault.com/account/profile OTX_API_KEY=your_otx_api_key # Team Cymru — https://hash.cymru.com/ CYMRU_API_USERNAME=your_cymru_username CYMRU_API_PASSWORD=your_cymru_password # Any.run — https://app.any.run/ ANYRUN_API_KEY=your_anyrun_api_key # SecurityTrails — https://securitytrails.com/app/account/credentials SECURITYTRAILS_API_KEY=your_securitytrails_api_key # Shodan — https://account.shodan.io/ SHODAN_API_KEY=your_shodan_api_key # GreyNoise — https://www.greynoise.io/account/signup GREYNOISE_API_KEY=your_greynoise_api_key # IBM X-Force Exchange — https://exchange.xforce.ibmcloud.com/settings/api XFORCE_API_KEY=your_xforce_api_key XFORCE_API_PASSWORD=your_xforce_api_password ``` 所有密钥均为可选 — 若缺少某个密钥,对应来源将被跳过并显示提示信息。 ## 使用说明 - **本地缓存**:所有结果以 ISO 时间戳存储在 `data/threat_intel_db.json` 中。使用 `-r/--refresh` 可绕过缓存 - **依赖项**:轻量级依赖 — 生产环境仅需 `requests` 和 `python-dotenv` - **可扩展性**:无需修改现有代码添加新来源 — 仅扩展 `Source` 类 - **集成使用**:导入并调用 `from engine import run_osint_search` - **性能**:首次查询约 5-10 秒(API 调用),后续查询 <100 毫秒(缓存命中) - **批量处理**:CSV 文件自动检测表头;支持单列或混合格式 ## 许可证与支持 本仓库作为活跃的开发工作区维护。生产使用时请添加适当的许可证(推荐 MIT/Apache 2.0)。 ### 使用场景 - 🔍 **事件响应** — 在事件活跃期间快速对 IOC 进行跳转查询 - 🛡️ **威胁狩猎** — 从日志中批量查询可疑指标 - 📊 **威胁情报** — 聚合多来源数据用于分析 - 🔗 **安全自动化** — 集成到 SOAR 平台和 CI/CD 流水线 ### 贡献建议 可扩展方向: - 更多的威胁情报来源(URLhaus、AbuseIPDB、ThreatFox 等) - SQL 数据库后端(PostgreSQL、MongoDB) - REST API 包装器 - 异步/并行来源查询 - Web UI 仪表板 **Agrashandhani**:*快速、模块化、可靠。大规模威胁情报。*
标签:API安全, API聚合, Ask搜索, CSV解析, CVE查询, ESC4, Hybrid Analysis, IOC查询, IP查询, JSON输出, MalwareBazaar, MetaDefender, OSINT, Python, Python虚拟环境, requirements.txt, URL查询, VirusTotal, 依赖管理, 内存取证对抗, 哈希查询, 域名查询, 多源聚合, 威胁情报, 开发者工具, 批量处理, 指数退避, 无后门, 时间戳缓存, 智能缓存, 模块化架构, 缓存, 自动化查询, 逆向工具, 邮箱查询, 重试机制