
اكتشف خدمات الذكاء الاصطناعي المكشوفة
منصة اكتشاف واختبار أمني على مستوى الإنترنت للبنية التحتية المكشوفة لوكلاء الذكاء الاصطناعي.
يكتشف AIMap نقاط النهاية المكشوفة علنًا للذكاء الاصطناعي، ويأخذ بصماتها، ويختبرها أمنيًا — خوادم MCP، ومثيلات Ollama، ووكلاء vLLM/LiteLLM، وسلاسل LangServe، وتطبيقات Gradio، وعقد ComfyUI، والمزيد. فكّر في Shodan، لكنه مصمم خصيصًا لسطح الهجوم الخاص بوكلاء الذكاء الاصطناعي.
من تطوير Bishop Fox.
تحذير هذه الأداة مخصصة لاختبار الاختراق والبحث الأمني المصرّح بهما فقط. يجب عليك استخدام AIMap فقط ضد الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني. لا تتحمل Bishop Fox أي مسؤولية وليست مسؤولة عن أي إساءة استخدام أو ضرر ناتج عن هذه الأداة. استخدمها بمسؤولية.
┌─────────────┐ ┌──────────────┐ ┌───────────┐
│ React SPA │────▶│ FastAPI │────▶│ MongoDB │
│ (Vite) │ WS │ Backend │ │ │
└─────────────┘ └──────┬───────┘ └───────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Shodan │ │ Nuclei │ │ Redis │
│ API │ │ Scanner │ │ Streams │
└──────────┘ └──────────┘ └──────────┘
الواجهة الخلفية — Python/FastAPI مع MongoDB غير المتزامن (Motor)، وRedis Streams لبث سجلات الهجوم، ومحرك اكتشاف ينسق استعلامات Shodan → فحوصات التحقق من النشاط عبر httpx → عمليات فحص قوالب Nuclei → خط أنابيب الإثراء.
الواجهة الأمامية — React 18 + TypeScript + Tailwind CSS + shadcn/ui. تتميز بكرة أرضية ثلاثية الأبعاد (globe.gl)، وبث هجمات في الوقت الفعلي عبر WebSocket، وواجهة بحث بأسلوب Shodan.
الفحص — 5 قوالب Nuclei YAML مخصصة لكشف خوادم MCP، وتعداد أدوات MCP، وكشف نقاط النهاية المتوافقة مع OpenAI، وكشف LangServe، واختبار تسريب التعليمات.
| البروتوكول | طريقة الكشف | استعلامات Shodan |
|---|---|---|
| MCP (Model Context Protocol) | نقل SSE، JSON-RPC، مسارات /mcp/sse | 4 استعلامات |
| Ollama | المنفذ الافتراضي 11434، بصمة المنتج | 3 استعلامات |
| vLLM / LiteLLM / LocalAI | نقطتا النهاية /v1/models و /v1/chat/completions | 4 استعلامات |
| LangServe / LangChain | نقاط نهاية Playground، علامات langserve | استعلامان |
| OpenClaw / Clawdbot | لوحة التحكم، المنفذ 18789 | 3 استعلامات |
| Open WebUI / LibreChat | كشف قائم على العنوان | استعلامان |
| Gradio | العنوان، العلامة المائية في التذييل، تجزئة الأيقونة المفضلة | 3 استعلامات |
| Streamlit | العنوان، تجزئة الأيقونة المفضلة | استعلامان |
| ComfyUI / Stable Diffusion | العنوان، كشف قائم على المنفذ | 4 استعلامات |
| HuggingFace TGI | علامات HTML | استعلام واحد |
| الاستدلال العام | مسارا /api/generate و /api/tags | استعلامان |
تستقبل كل نقطة نهاية درجة مخاطر من 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 لكل توليفة |
# Clone
git clone [email protected]:BishopFox/aimap.git
cd aimap
# Configure
cp .env.example .env
# Edit .env — at minimum set SHODAN_API_KEY
# Launch
docker compose up --build
هذا يشغّل 4 خدمات:
افتح http://localhost للوصول إلى الواجهة.
# Backend
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
# Frontend (separate terminal)
cd frontend
npm install
npm run dev # starts on http://localhost:5173
تأكد من تشغيل MongoDB محليًا على المنفذ 27017. Redis اختياري — تتراجع الواجهة الخلفية إلى مخازن مؤقتة في الذاكرة عندما يكون Redis غير متاح.
أنشئ ملف .env في جذر المشروع:
# Required
SHODAN_API_KEY=your_shodan_api_key
# Optional — Censys as an additional discovery source
CENSYS_API_ID=
CENSYS_API_SECRET=
# Optional — enables AI-powered attack analysis
ANTHROPIC_API_KEY=
# MongoDB (defaults work for local dev)
MONGODB_URI=mongodb://localhost:27017
MONGODB_DB=aimap
# Redis (defaults work for local dev; optional)
REDIS_URL=redis://localhost:6379/0
# CORS (default allows all origins)
CORS_ORIGINS=*
# Modal serverless (dispatches scans/attacks to Modal containers)
MODAL_ENABLED=false
# Clerk auth — see below
CLERK_ISSUER=
يستخدم AIMap Clerk للمصادقة. للتفعيل:
# .env (project root)
CLERK_ISSUER=https://your-app.clerk.accounts.dev
# frontend/.env.local
VITE_CLERK_PUBLISHABLE_KEY=pk_test_...
لتعطيل المصادقة (التطوير المحلي، العروض التوضيحية): اترك CLERK_ISSUER فارغًا أو غير معيّن. ستقبل الواجهة الخلفية جميع الطلبات بهوية مستخدم محلية (local) اصطناعية.
ollama, mcp_protocol, vllm) أو أدخل استعلام Shodan مخصصًاnet:<cidr> إلى كل استعلام)استخدم شريط البحث مع صيغة استعلام بأسلوب Shodan: