
Exponierte KI-Dienste entdecken
Erkennungs- und Sicherheitstest-Plattform im Internet-Maßstab für exponierte KI-Agenten-Infrastruktur.
AIMap findet, identifiziert und testet öffentlich exponierte KI-Endpunkte auf Sicherheit – MCP-Server, Ollama-Instanzen, vLLM/LiteLLM-Proxys, LangServe-Ketten, Gradio-Apps, ComfyUI-Knoten und mehr. Stellen Sie sich Shodan vor, aber gezielt für die Angriffsfläche von KI-Agenten entwickelt.
Entwickelt von Bishop Fox.
Warnung Dieses Tool ist ausschließlich für autorisierte Penetrationstests und Sicherheitsforschung bestimmt. Verwenden Sie AIMap nur gegen Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Unbefugter Zugriff auf Computersysteme ist illegal. Bishop Fox übernimmt keine Haftung und ist nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Tool verursacht werden. Nutzen Sie es verantwortungsbewusst.
┌─────────────┐ ┌──────────────┐ ┌───────────┐
│ React SPA │────▶│ FastAPI │────▶│ MongoDB │
│ (Vite) │ WS │ Backend │ │ │
└─────────────┘ └──────┬───────┘ └───────────┘
│
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Shodan │ │ Nuclei │ │ Redis │
│ API │ │ Scanner │ │ Streams │
└──────────┘ └──────────┘ └──────────┘
Backend – Python/FastAPI mit asynchronem MongoDB (Motor), Redis Streams zum Streaming von Angriffsprotokollen und einer Discovery-Engine, die Shodan-Abfragen → httpx-Erreichbarkeitsprüfungen → Nuclei-Template-Scans → Anreicherungspipeline orchestriert.
Frontend – React 18 + TypeScript + Tailwind CSS + shadcn/ui. Bietet einen 3D-Globus (globe.gl), Echtzeit-Angriffs-Streaming über WebSocket und eine Shodan-artige Suchoberfläche.
Scannen – 5 benutzerdefinierte Nuclei-YAML-Templates für die Erkennung von MCP-Servern, die Aufzählung von MCP-Tools, die Erkennung OpenAI-kompatibler APIs, die LangServe-Erkennung und Prompt-Leak-Tests.
| Protokoll | Erkennungsmethode | Shodan-Abfragen |
|---|---|---|
| MCP (Model Context Protocol) | SSE-Transport, JSON-RPC, /mcp/sse-Pfade | 4 Abfragen |
| Ollama | Standardport 11434, Produkt-Fingerprint | 3 Abfragen |
| vLLM / LiteLLM / LocalAI | /v1/models-, /v1/chat/completions-Endpunkte | 4 Abfragen |
| LangServe / LangChain | Playground-Endpunkte, LangServe-Marker | 2 Abfragen |
| OpenClaw / Clawdbot | Kontroll-Dashboard, Port 18789 | 3 Abfragen |
| Open WebUI / LibreChat | Erkennung anhand des Titels | 2 Abfragen |
| Gradio | Titel, Fußzeilen-Wasserzeichen, Favicon-Hash | 3 Abfragen |
| Streamlit | Titel, Favicon-Hash | 2 Abfragen |
| ComfyUI / Stable Diffusion | Titel, Port-basierte Erkennung | 4 Abfragen |
| HuggingFace TGI | HTML-Marker | 1 Abfrage |
| Allgemeine Inferenz | /api/generate-, /api/tags-Pfade | 2 Abfragen |
Jeder Endpunkt erhält einen Risikowert von 0–10, der sich aus folgenden Faktoren zusammensetzt:
| Faktor | Auswirkung auf den Wert |
|---|---|
| Keine Authentifizierung | +4.0 |
| Unbekannter Authentifizierungsstatus | +1.0 |
| 10+ exponierte Tools | +2.0 |
| 5+ exponierte Tools | +1.0 |
Tool mit kritischem Risiko (z. B. exec_code, run_shell) | jeweils +1.0 |
Tool mit hohem Risiko (z. B. query_db, file_read) | jeweils +0.5 |
Offenes CORS (*) | +1.0 |
| Kein TLS | +0.5 |
| Systemprompt geleakt | +0.5 |
| Modelle exponiert | +1.0 |
| Unzensiertes Modell erkannt | +2.0 |
| Registrierung aktiviert (keine Einladung erforderlich) | +1.5 |
| Gefährliche Kombination (z. B. keine Authentifizierung + Code-Ausführungs-Tool) | jeweils +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
Dadurch werden 4 Dienste gestartet:
Öffnen Sie http://localhost, um auf die Benutzeroberfläche zuzugreifen.
# 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
Stellen Sie sicher, dass MongoDB lokal auf Port 27017 läuft. Redis ist optional – das Backend weicht auf In-Memory-Puffer aus, wenn Redis nicht verfügbar ist.
Erstellen Sie eine .env-Datei im Projektstamm:
# 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 verwendet Clerk für die Authentifizierung. So aktivieren Sie sie:
# .env (project root)
CLERK_ISSUER=https://your-app.clerk.accounts.dev
# frontend/.env.local
VITE_CLERK_PUBLISHABLE_KEY=pk_test_...
So deaktivieren Sie die Authentifizierung (lokale Entwicklung, Demos): Lassen Sie CLERK_ISSUER leer oder nicht gesetzt. Das Backend akzeptiert dann alle Anfragen mit einer synthetischen Benutzeridentität local.