
खोजें उजागर AI सेवाएँ
# AIMap
**AI एजेंट इंफ्रास्ट्रक्चर के लिए इंटरनेट-स्केल डिस्कवरी और सुरक्षा परीक्षण प्लेटफ़ॉर्म।**
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/7484/57dac8dcd2d53ead26c2d6a0f8a2c1b2d51e53ad4ded4ae46a0f9bf30d5bbdd5.gif" alt="AIMap UI Tour" width="800" />
</p>
AIMap सार्वजनिक रूप से एक्सपोज़्ड AI एंडपॉइंट्स — MCP सर्वर, Ollama इंस्टेंस, vLLM/LiteLLM प्रॉक्सी, LangServe चेन, Gradio ऐप्स, ComfyUI नोड्स, और बहुत कुछ — को ढूंढता है, फिंगरप्रिंट करता है, और सुरक्षा-परीक्षण करता है। Shodan की तरह सोचें, लेकिन AI एजेंट अटैक सरफ़ेस के लिए विशेष रूप से बनाया गया।
[Bishop Fox](https://bishopfox.com) द्वारा निर्मित।
> **चेतावनी**
> यह उपकरण केवल **अधिकृत पेनिट्रेशन टेस्टिंग और सुरक्षा अनुसंधान** के लिए है। आप AIMap का उपयोग केवल उन सिस्टमों के विरुद्ध कर सकते हैं जिनके आप स्वामी हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है। कंप्यूटर सिस्टमों तक अनधिकृत पहुंच अवैध है। Bishop Fox कोई देयता नहीं लेता है और इस उपकरण के किसी भी दुरुपयोग या क्षति के लिए जिम्मेदार नहीं है। जिम्मेदारी से उपयोग करें।
---
## यह क्या करता है
1. **खोज** — Shodan पर 32+ क्यूरेटेड सर्च क्वेरी के साथ इंटरनेट पर एक्सपोज़्ड AI/ML एंडपॉइंट खोजने के लिए क्वेरी करता है
2. **फिंगरप्रिंट** — प्रत्येक एंडपॉइंट को Nuclei टेम्पलेट और लाइव HTTP जांच के साथ प्रोब करता है ताकि प्रोटोकॉल, फ्रेमवर्क, ऑथ स्थिति, टूल, मॉडल और सिस्टम प्रॉम्प्ट की पहचान हो सके
3. **स्कोर** — प्रमाणीकरण, टूल एक्सपोज़र, CORS नीति, TLS, सिस्टम प्रॉम्प्ट लीक और खतरनाक क्षमता संयोजनों के आधार पर 0–10 का जोखिम स्कोर की गणना करता है
4. **परीक्षण** — प्रोटोकॉल-विशिष्ट अटैक सूट (MCP टूल दुरुपयोग, Ollama मॉडल निष्कर्षण, प्रॉम्प्ट इंजेक्शन) को रीयल-टाइम स्ट्रीमिंग परिणामों के साथ लॉन्च करता है
5. **विज़ुअलाइज़** — 3D ग्लोब जो हर खोजे गए एंडपॉइंट को दिखाता है, Shodan-शैली क्वेरी भाषा के साथ खोजा जा सकता है
---
## आर्किटेक्चर
```
┌─────────────┐ ┌──────────────┐ ┌───────────┐
│ React SPA │────▶│ FastAPI │────▶│ MongoDB │
│ (Vite) │ WS │ Backend │ │ │
└─────────────┘ └──────┬───────┘ └───────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Shodan │ │ Nuclei │ │ Redis │
│ API │ │ Scanner │ │ Streams │
└──────────┘ └──────────┘ └──────────┘
```
**बैकएंड** — Python/FastAPI एसिंक MongoDB (Motor) के साथ, अटैक लॉग स्ट्रीमिंग के लिए Redis स्ट्रीम्स, और एक डिस्कवरी इंजन जो Shodan क्वेरी → httpx लाइवनेस चेक → Nuclei टेम्पलेट स्कैन → एनरिचमेंट पाइपलाइन को ऑर्केस्ट्रेट करता है।
**फ्रंटएंड** — React 18 + TypeScript + Tailwind CSS + shadcn/ui। इसमें 3D ग्लोब (globe.gl), WebSocket के माध्यम से रीयल-टाइम अटैक स्ट्रीमिंग और Shodan-शैली सर्च इंटरफ़ेस है।
**स्कैनिंग** — MCP सर्वर डिटेक्शन, MCP टूल एनुमरेशन, OpenAI-संगत API डिटेक्शन, LangServe डिटेक्शन और प्रॉम्प्ट लीक परीक्षण के लिए 5 कस्टम Nuclei YAML टेम्पलेट।
---
## समर्थित प्रोटोकॉल
| प्रोटोकॉल | डिटेक्शन विधि | Shodan क्वेरी |
|----------|-----------------|----------------|
| **MCP** (मॉडल कॉन्टेक्स्ट प्रोटोकॉल) | SSE ट्रांसपोर्ट, JSON-RPC, `/mcp/sse` पथ | 4 queries |
| **Ollama** | डिफ़ॉल्ट पोर्ट 11434, उत्पाद फिंगरप्रिंट | 3 queries |
| **vLLM / LiteLLM / LocalAI** | `/v1/models`, `/v1/chat/completions` एंडपॉइंट | 4 queries |
| **LangServe / LangChain** | प्लेग्राउंड एंडपॉइंट, langserve मार्कर | 2 queries |
| **OpenClaw / Clawdbot** | कंट्रोल डैशबोर्ड, पोर्ट 18789 | 3 queries |
| **Open WebUI / LibreChat** | शीर्षक-आधारित डिटेक्शन | 2 queries |
| **Gradio** | शीर्षक, फुटर वॉटरमार्क, फ़ेविकॉन हैश | 3 queries |
| **Streamlit** | शीर्षक, फ़ेविकॉन हैश | 2 queries |
| **ComfyUI / Stable Diffusion** | शीर्षक, पोर्ट-आधारित डिटेक्शन | 4 queries |
| **HuggingFace TGI** | HTML मार्कर | 1 query |
| **जेनेरिक इनफ़रेंस** | `/api/generate`, `/api/tags` पथ | 2 queries |
---
## जोखिम स्कोरिंग
प्रत्येक एंडपॉइंट को 0–10 का जोखिम स्कोर मिलता है जिसकी गणना निम्न से की जाती है:
| कारक | स्कोर प्रभाव |
|--------|-------------|
| कोई प्रमाणीकरण नहीं | +4.0 |
| अज्ञात ऑथ स्थिति | +1.0 |
| 10+ टूल एक्सपोज़्ड | +2.0 |
| 5+ टूल एक्सपोज़्ड | +1.0 |
| क्रिटिकल-जोखिम टूल (जैसे, `exec_code`, `run_shell`) | +1.0 प्रत्येक |
| उच्च-जोखिम टूल (जैसे, `query_db`, `file_read`) | +0.5 प्रत्येक |
| ओपन CORS (`*`) | +1.0 |
| कोई TLS नहीं | +0.5 |
| सिस्टम प्रॉम्प्ट लीक हुआ | +0.5 |
| मॉडल एक्सपोज़्ड | +1.0 |
| अनसेंसर्ड मॉडल पाया गया | +2.0 |
| साइनअप सक्षम (कोई आमंत्रण आवश्यक नहीं) | +1.5 |
| खतरनाक संयोजन (जैसे, कोई ऑथ नहीं + कोड निष्पादन टूल) | +1.0 प्रत्येक |
---
## सेटअप
### पूर्वापेक्षाएँ
- Python 3.12+
- Node.js 18+
- MongoDB 7+
- Redis 7+ (वैकल्पिक — स्थानीय देव के लिए इन-मेमोरी पर वापस आ जाता है)
- [Nuclei](https://github.com/projectdiscovery/nuclei) (वैकल्पिक — सक्रिय स्कैनिंग के लिए आवश्यक)
- [Shodan API कुंजी](https://account.shodan.io/) (डिस्कवरी स्कैन के लिए आवश्यक)
### त्वरित प्रारंभ (Docker Compose)
```bash
# क्लोन करें
git clone [email protected]:BishopFox/aimap.git
cd aimap
# कॉन्फ़िगर करें
cp .env.example .env
# .env संपादित करें — कम से कम SHODAN_API_KEY सेट करें
# लॉन्च करें
docker compose up --build
```
यह 4 सेवाएँ शुरू करता है:
- **MongoDB** पोर्ट 27017 पर
- **Redis** पोर्ट 6379 पर
- **बैकएंड** पोर्ट 8000 पर
- **फ्रंटएंड** पोर्ट 80 पर
UI तक पहुँचने के लिए `http://localhost` खोलें।
### स्थानीय विकास (Docker के बिना)
```bash
# बैकएंड
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
# फ्रंटएंड (अलग टर्मिनल)
cd frontend
npm install
npm run dev # http://localhost:5173 पर शुरू होता है
```
सुनिश्चित करें कि MongoDB स्थानीय रूप से पोर्ट 27017 पर चल रहा है। Redis वैकल्पिक है — जब Redis अनुपलब्ध होता है तो बैकएंड इन-मेमोरी बफर पर वापस आ जाता है।
### पर्यावरण चर
प्रोजेक्ट रूट में `.env` फ़ाइल बनाएँ:
```bash
# आवश्यक
SHODAN_API_KEY=your_shodan_api_key
# वैकल्पिक — अतिरिक्त डिस्कवरी स्रोत के रूप में Censys
CENSYS_API_ID=
CENSYS_API_SECRET=
# वैकल्पिक — AI-संचालित अटैक विश्लेषण को सक्षम करता है
ANTHROPIC_API_KEY=
# MongoDB (डिफ़ॉल्ट स्थानीय देव के लिए काम करते हैं)
MONGODB_URI=mongodb://localhost:27017
MONGODB_DB=aimap
# Redis (डिफ़ॉल्ट स्थानीय देव के लिए काम करते हैं; वैकल्पिक)
REDIS_URL=redis://localhost:6379/0
# CORS (डिफ़ॉल्ट सभी ऑरिजिन की अनुमति देता है)
CORS_ORIGINS=*
# Modal सर्वरलेस (स्कैन/अटैक को Modal कंटेनरों में भेजता है)
MODAL_ENABLED=false
# Clerk ऑथ — नीचे देखें
CLERK_ISSUER=
```
### प्रमाणीकरण (Clerk)
AIMap प्रमाणीकरण के लिए [Clerk](https://clerk.com) का उपयोग करता है। सक्षम करने के लिए:
1. [clerk.com](https://clerk.com) पर एक Clerk एप्लिकेशन बनाएँ
2. बैकएंड जारीकर्ता URL सेट करें:
```bash
# .env (प्रोजेक्ट रूट)
CLERK_ISSUER=https://your-app.clerk.accounts.dev
```
3. फ्रंटएंड प्रकाशनीय कुंजी सेट करें:
```bash
# frontend/.env.local
VITE_CLERK_PUBLISHABLE_KEY=pk_test_...
```
**प्रमाणीकरण अक्षम करने के लिए** (स्थानीय देव, डेमो): `CLERK_ISSUER` को खाली या अनसेट छोड़ दें। बैकएंड सभी अनुरोधों को एक सिंथेटिक `local` उपयोगकर्ता पहचान के साथ स्वीकार करेगा।
---
## उपयोग
### डिस्कवरी स्कैन चलाना
1. साइडबार में **Scans** पर जाएँ
2. **New Scan** पर क्लिक करें
3. क्वेरी प्रीसेट चुनें (जैसे, `ollama`, `mcp_protocol`, `vllm`) या कस्टम Shodan क्वेरी दर्ज करें
4. वैकल्पिक रूप से CIDR रेंज में स्कोप करें (ऑर्केस्ट्रेटर प्रत्येक क्वेरी में `net:<cidr>` जोड़ता है)
5. **Run** पर क्लिक करें — स्कैन पाइपलाइन निष्पादित होती है:
- **Shodan खोज** — मिलान करने वाले होस्ट खींचता है
- **httpx स्वीप** — होस्ट के जीवित होने की पुष्टि करता है
- **Nuclei स्कैन** — जीवित होस्ट के विरुद्ध कस्टम टेम्पलेट चलाता है
- **एनरिचमेंट** — फ्रेमवर्क डिटेक्शन, ऑथ प्रोबिंग, जोखिम स्कोरिंग
6. रीयल-टाइम WebSocket स्थिति बार या स्कैन विवरण पृष्ठ को पोल करके प्रगति की निगरानी करें
### एंडपॉइंट खोजना
Shodan-शैली क्वेरी सिंटैक्स के साथ सर्च बार का उपयोग करें:
```
protocol:mcp # MCP सर्वर
auth:none # कोई प्रमाणीकरण नहीं
risk:critical # जोखिम स्कोर >= 9.0
risk:high # जोखिम स्कोर 7.0 – 8.9
risk:medium # जोखिम स्कोर 4.0 – 6.9
risk:low # जोखिम स्कोर 1.0 – 3.9
tool:query_db # एक विशिष्ट टूल को एक्सपोज़ करने वाले एंडपॉइंट
country:US # देश कोड द्वारा
port:11434 # पोर्ट नंबर द्वारा
org:"Amazon AWS" # होस्टिंग संगठन द्वारा (बहु-शब्द मानों को उद्धरण में लें)
has:system_prompt # लीक हुए सिस्टम प्रॉम्प्ट वाले एंडपॉइंट
```
फ़िल्टर को स्वतंत्र रूप से संयोजित करें:
```
protocol:mcp auth:none country:US # अमेरिका में अप्रमाणित MCP सर्वर
risk:critical tool:exec_code # कोड निष्पादन टूल वाले क्रिटिकल एंडपॉइंट
protocol:ollama port:11434 # डिफ़ॉल्ट पोर्ट पर Ollama
कोई भी टेक्स्ट जो `key:value` पैटर्न से मेल नहीं खाता है, सभी अनुक्रमित फ़ील्ड में फ्री-टेक्स्ट खोज के रूप में माना जाता है।
```
### अटैक टेस्ट लॉन्च करना
1. एंडपॉइंट के विवरण पृष्ठ पर जाएँ
2. **Attack** पर क्लिक करें ताकि टेस्ट पैनल खुले
3. एक अटैक प्रोफ़ाइल चुनें — सिस्टम प्रोटोकॉल के आधार पर स्वचालित रूप से इंजन का चयन करता है:
- **MCP** → टूल एनुमरेशन, अनधिकृत टूल आह्वान, टूल विवरण के माध्यम से प्रॉम्प्ट इंजेक्शन
- **Ollama** → मॉडल सूची, मॉडल वेट निष्कर्षण, प्रॉम्प्ट इंजेक्शन
- **OpenAI-संगत** → मॉडल एनुमरेशन, पूर्णता दुरुपयोग, सिस्टम प्रॉम्प्ट निष्कर्षण
4. WebSocket के माध्यम से रीयल-टाइम में परिणाम देखें
5. परिणामों में गंभीरता रेटिंग, कच्चे अनुरोध/प्रतिक्रिया जोड़े और सुधार मार्गदर्शन शामिल हैं
### ग्लोब की खोज करना
लैंडिंग पृष्ठ में एक इंटरैक्टिव 3D ग्लोब है जो सभी खोजे गए एंडपॉइंट दिखाता है:
- **पिन का रंग** = प्रोटोकॉल प्रकार (नीला = MCP, हरा = Ollama, बैंगनी = OpenAI-संगत, आदि)
- **पिन की ऊँचाई** = जोखिम स्कोर
- **होवर** करने पर एंडपॉइंट सारांश दिखाई देता है (IP, पोर्ट, प्रोटोकॉल, जोखिम, ऑथ, टूल, मॉडल, स्थान)
- **क्लिक** करने पर एंडपॉइंट विवरण पृष्ठ पर नेविगेट किया जाता है
- घुमाने के लिए माउस ड्रैग, ज़ूम करने के लिए स्क्रॉल
---
## Nuclei टेम्पलेट
`templates/` निर्देशिका में कस्टम टेम्पलेट:
| टेम्पलेट | उद्देश्य |
|----------|---------|
| `mcp-server-detect.yaml` | SSE ट्रांसपोर्ट और JSON-RPC क्षमताओं के माध्यम से MCP सर्वर का पता लगाता है |
| `mcp-tool-enum.yaml` | MCP सर्वर द्वारा एक्सपोज़ किए गए टूल (नाम, विवरण, इनपुट स्कीमा) की गणना करता है |
| `openai-compat-detect.yaml` | `/v1/models` के माध्यम से OpenAI-संगत एंडपॉइंट का पता लगाता है |
| `langserve-detect.yaml` | एक्सपोज़्ड प्लेग्राउंड के साथ LangServe तैनाती का पता लगाता है |
| `prompt-leak.yaml` | सामान्य इंजेक्शन तकनीकों के माध्यम से सिस्टम प्रॉम्प्ट निष्कर्षण का प्रयास करता है |
---
## API संदर्भ
सभी एंडपॉइंट `/api/` से उपसर्गित हैं।
| विधि | पथ | विवरण |
|--------|------|-------------|
| `GET` | `/health` | स्वास्थ्य जांच |
| `GET` | `/endpoints` | एंडपॉइंट सूची (पृष्ठांकित, फ़िल्टर करने योग्य) |
| `POST` | `/endpoints/search` | क्वेरी सिंटैक्स के साथ उन्नत खोज |
| `GET` | `/endpoints/globe` | 3D ग्लोब के लिए भू-डेटा |
| `GET` | `/endpoints/stats` | कुल आँकड़े |
| `GET` | `/endpoints/{id}` | एंडपॉइंट विवरण |
| `POST` | `/endpoints/{id}/enrich` | एक एंडपॉइंट के लिए एनरिचमेंट ट्रिगर करें |
| `POST` | `/endpoints/enrich-all` | बैच एनरिचमेंट |
| `GET` | `/scans` | स्कैन सूची |
| `POST` | `/scans` | स्कैन बनाएँ |
| `POST` | `/scans/{id}/run` | स्कैन निष्पादित करें |
| `GET` | `/scans/query-presets` | उपलब्ध Shodan क्वेरी प्रीसेट |
| `WS` | `/scans/{id}/progress` | लाइव स्कैन प्रगति |
| `POST` | `/attack` | अटैक टेस्ट लॉन्च करें |
| `WS` | `/attack/{id}/stream` | लाइव अटैक लॉग स्ट्रीम |
| `GET` | `/attack/{id}/status` | अटैक स्थिति |
---
## प्रोजेक्ट संरचना
```
aimap/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI ऐप, लाइफस्पैन, CORS, राउटर
│ │ ├── config.py # env से Pydantic सेटिंग्स
│ │ ├── auth.py # Clerk JWT सत्यापन (CLERK_ISSUER खाली होने पर बायपास)
│ │ ├── database.py # एसिंक MongoDB (Motor) कनेक्शन
│ │ ├── limiter.py # SlowAPI दर सीमित करना
│ │ ├── routes/
│ │ │ ├── endpoints.py # CRUD + खोज + ग्लोब + एनरिचमेंट
│ │ │ ├── scans.py # स्कैन जीवनचक्र + निष्पादन + WebSocket
│ │ │ └── attack.py # अटैक डिस्पैच + Redis स्ट्रीम्स + WebSocket
│ │ ├── discovery/
│ │ │ ├── orchestrator.py # स्कैन पाइपलाइन: Shodan → httpx → Nuclei → इनजेस्ट
│ │ │ ├── shodan_adapter.py # 32 क्यूरेटेड Shodan क्वेरी + परिणाम सामान्यीकरण
│ │ │ ├── nuclei_runner.py # Nuclei सबप्रोसेस रनर + फाइंडिंग पार्सर
│ │ │ └── base.py # SourceAdapter एब्सट्रैक्ट बेस
│ │ └── services/
│ │ ├── attack_mcp.py # MCP प्रोटोकॉल अटैक इंजन
│ │ ├── attack_ollama.py # Ollama अटैक इंजन
│ │ ├── attack_openclaw.py # OpenClaw/Clawdbot अटैक इंजन
│ │ ├── enrichment.py # Shodan/Nuclei एनरिचमेंट + जोखिम स्कोरिंग
│ │ ├── live_probe.py # मॉडल/टूल एनुमरेशन के लिए HTTP प्रोबिंग
│ │ ├── search.py # Shodan-शैली क्वेरी पार्सर → MongoDB फ़िल्टर
│ │ ├── redis_client.py # फ़ॉलबैक के साथ एसिंक Redis सिंगलटन
│ │ └── concurrency.py # सेमाफोर + Redis-आधारित स्लॉट सीमा
│ ├── Dockerfile
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── App.tsx # रूट्स + Clerk ऑथ रैपर
│ │ ├── pages/
│ │ │ ├── Marketing.tsx # 3D ग्लोब के साथ सार्वजनिक लैंडिंग पेज
│ │ │ ├── Landing.tsx # ग्लोब के साथ प्रमाणित डैशबोर्ड
│ │ │ ├── Search.tsx # क्वेरी सिंटैक्स के साथ एंडपॉइंट खोज
│ │ │ ├── Explore.tsx # सभी एंडपॉइंट ब्राउज़/फ़िल्टर करें
│ │ │ ├── AgentDetail.tsx # एकल एंडपॉइंट गहन-डाइव
│ │ │ ├── TestAgent.tsx # अटैक टेस्ट लॉन्चर
│ │ │ ├── Scans.tsx # स्कैन प्रबंधन
│ │ │ └── Ranges.tsx # CIDR रेंज प्रबंधन
│ │ ├── components/
│ │ │ ├── GlobeVisualization.tsx # globe.gl 3D ग्लोब + लीजेंड
│ │ │ ├── Layout.tsx # ऐप शेल (साइडबार + नेवबार)
│ │ │ └── ui/ # shadcn/ui घटक
│ │ ├── hooks/useApi.ts # सभी API एंडपॉइंट के लिए SWR हुक
│ │ └── lib/api-client.ts # Clerk टोकेन इंजेक्शन के साथ फ़ेच रैपर
│ ├── Dockerfile
│ ├── nginx.conf
│ └── tailwind.config.js
├── templates/ # Nuclei YAML टेम्पलेट
├── docs/ # GitHub Pages स्थैतिक साइट
├── docker-compose.yml
├── .env.example
└── README.md
```
---
## समवर्ती सीमाएँ
प्लेटफ़ॉर्म दुरुपयोग को रोकने के लिए वैश्विक समवर्ती सीमाएँ लागू करता है:
- **अधिकतम 3 समवर्ती स्कैन** — अतिरिक्त स्कैन HTTP 429 प्राप्त करते हैं
- **अधिकतम 5 समवर्ती अटैक** — अतिरिक्त अटैक HTTP 429 प्राप्त करते हैं
- **दर सीमित** — स्कैन और अटैक निर्माण एंडपॉइंट पर 10 अनुरोध/मिनट
Docker Compose का उपयोग करते समय, ये सीमाएँ Redis काउंटर (क्रॉस-कंटेनर) के माध्यम से लागू की जाती हैं। स्थानीय देव मोड में, ये `asyncio.Semaphore` (एकल-प्रक्रिया) पर वापस आ जाती हैं।
---
## वैकल्पिक: Modal सर्वरलेस
भारी स्कैनिंग वर्कलोड के लिए, स्कैन और अटैक को [Modal](https://modal.com) कंटेनरों में भेजा जा सकता है:
```bash
MODAL_ENABLED=true
```
जब सक्षम हो, तो `POST /scans/{id}/run` और `POST /attack` स्थानीय रूप से चलाने के बजाय `modal.Function.from_name("aimap", "run_scan_task")` / `run_attack_task` को कॉल करेगा। यदि Modal डिस्पैच विफल होता है तो स्थानीय निष्पादन पर वापस आ जाता है।
---
## लाइसेंस
MIT लाइसेंस। विवरण के लिए [LICENSE](https://github.com/bishopfox/aimap/blob/main/LICENSE) देखें।
यह प्रोजेक्ट [Bishop Fox](https://bishopfox.com) द्वारा अनुरक्षित है।