Kamerka GUI
Kamerka GUI ist ein auf Django basierendes Aufklärungs-Dashboard zum Erkennen, Überprüfen und Priorisieren von Internet-exponierten Systemen der industriellen Steuerungstechnik, des Internets der Dinge und medizinischen Geräten. Es kombiniert Shodan-Suchergebnisse, Google Maps-Visualisierung, Geräte-Screenshots, passive Intelligence-Anreicherung und ausgewählte Scan-/Exploit-Helfer in einer Web-Oberfläche.
Die App hilft, das Rauschen bei der Überprüfung zu reduzieren, indem sie einen Filter Honeypots-Schalter in Gerätetabellen bereitstellt. Dieser schließt Geräte aus, die Honeypot-ähnliche Indikatoren aufweisen, sodass Analysten sich zuerst auf wahrscheinlich echte Assets konzentrieren können. Kamerka zeigt außerdem ein Geräte-Indikator-Feld an, das aus geparsten Bannern, Protokollantworten, Screenshot-Labels und anderen Geräte-Metadaten erstellt wird, um zu erklären, warum ein Gerät markiert wurde oder wie es lokalisiert oder klassifiziert werden kann.
Verwenden Sie es nur für autorisierte Forschung, Bestandsaufnahme von Assets, defensives Exposure-Management und die Meldung an die entsprechenden Eigentümer oder CERT/CSIRT-Teams.
Was es macht
- Durchsucht Shodan nach Kategorien von ICS-, IoT-, Gesundheits- und Angreifer-Infrastruktur-Geräten.
- Unterstützt länderspezifische und koordinatenbasierte Suchanfragen.
- Speichert Suchanfragen und gefundene Geräte in einer lokalen Django-Datenbank.
- Zeigt Suchverlauf, Dashboards, Statistiken, Favoriten und eine Screenshot-Galerie an.
- Stellt Geräte auf globalen und gerätespezifischen Google Maps-Ansichten dar.
- Extrahiert Geräteindikatoren aus Bannern und Protokollantworten zur Unterstützung der Geolokalisierung.
- Zeigt gerätebezogene Informationen, Bannerdaten, Screenshots, Hostnamen, Organisation, Standort, Ports, Produkte und Schwachstellen an.
- Führt Shodan-Host-Scans und Whois-XML-API-Anreicherung über den Intel-Tab aus.
- Unterstützt den Import von Nmap-XML-Ausgaben und die Ausführung ausgewählter Nmap-NSE-Scans.
- Enthält ausgewählte Proof-of-Concept-Exploit-Helfer für bestimmte Gerätefamilien.
Screenshots
Karte




Screenshot-Galerie

Dashboard

Hauptansichten
Dashboard: Übersichtszahlen, Shodan-Guthaben, letzte Suchanfragen, Diagramme, weltweite Abdeckung und Favoriten.
Database: durchsuchbare Tabelle aller gefundenen Geräte mit Filterung nach wahrscheinlichen Honeypots.
History: frühere Suchanfragen mit Ländernamen, ausgewählten Gerätekategorien und Links zu Ergebnissen.
Map: globale geclusterte Google Map der gefundenen Geräte.
Gallery: alle gesammelten Geräte-Screenshots mit Länderfilterung.
Results: gerätebezogene Tabelle, Karte, Statistiken und exportähnliches Durchsuchen pro Suche.
Device: Registerkarten für Lokalisierung, Intel und Exploit für ein einzelnes Gerät.
Anforderungen
- Python 3.10 bis 3.13 wird für den gewarteten Django 5.2- und Celery-Stack empfohlen.
- Redis-Server für Celery-Hintergrundjobs.
- Shodan-API-Schlüssel. Ein kostenpflichtiges Konto wird empfohlen, da umfangreiche Suchanfragen Credits/Seiten verbrauchen.
- Google Maps JavaScript-API-Schlüssel für Karten und Routen-/Standortfunktionen.
- Whois XML-API-Schlüssel, wenn Sie Whois-Anreicherung wünschen.
GeoLite2-City.mmdb im Repository-Stammverzeichnis, wenn Sie Nmap-XML-Import-Geolokalisierung wünschen.
- Nmap lokal installiert, wenn Sie aktive Nmap-Scans durchführen möchten.
Python-Abhängigkeiten sind in requirements.txt aufgeführt. Das Projekt zielt nun auf die Django 5.2 LTS-Linie, Celery 5.6 und begrenzte Python-Pakete ab, sodass Installationen aktuell bleiben, ohne auf inkompatible Hauptversionen springen zu müssen.
Installation
Klonen Sie das Repository und erstellen Sie eine virtuelle Umgebung:
git clone https://github.com/woj-ciech/Kamerka-GUI.git
cd Kamerka-GUI
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
Falls python3.12 nicht verfügbar ist, verwenden Sie einen anderen Python 3.10-3.13-Interpreter. Vermeiden Sie die Wiederverwendung einer alten Python 3.8/3.9 virtuellen Umgebung, da der aktuelle Abhängigkeitssatz Python 3.10+ erfordert.
Datenbankschema erstellen:
Erstellen Sie keys.json im Repository-Stammverzeichnis:
{
"keys": {
"shodan": "YOUR_SHODAN_API_KEY",
"google_maps": "YOUR_GOOGLE_MAPS_API_KEY",
"whoisxmlapi": "YOUR_WHOIS_XML_API_KEY"
}
}
Starten Sie Redis in einem separaten Terminal:
Starten Sie einen Celery-Worker in einem anderen Terminal:
source .venv/bin/activate
celery --app kamerka worker --loglevel=info
Starten Sie den Django-Entwicklungsserver:
source .venv/bin/activate
python manage.py runserver
Öffnen Sie die App:
Konfigurationshinweise
keys.json wird zur Laufzeit benötigt, da die App API-Schlüssel aus keys['keys'] liest.
- Halten Sie
keys.json außerhalb der Versionskontrolle. Es enthält private Anmeldedaten.
- Die Standarddatenbank ist SQLite. Dies ist für lokale Tests geeignet; verwenden Sie bei der Bereitstellung eine Produktionsdatenbank.
- Hintergrundsuchvorgänge, Shodan-Scans, Whois-Scans und Nmap-Importe sind auf aktive Celery-Worker angewiesen.
- Koordinatensuchvorgänge verwenden Shodan-Geo-Abfragen um die angegebenen Breiten-/Längengrade.
- Große Shodan-Suchvorgänge können schnell Credits verbrauchen. Verwenden Sie Seitenlimits bewusst.
Typischer Arbeitsablauf
- Öffnen Sie die Suchseite und wählen Sie einen Suchmodus für ICS, IoT, Gesundheitswesen oder Infrastruktur.
- Wählen Sie eine oder mehrere Gerätekategorien aus.
- Wählen Sie ein Land aus oder geben Sie Koordinaten an, und legen Sie dann fest, wie viele Shodan-Seiten gesammelt werden sollen.
- Senden Sie die Suche ab und warten Sie, bis die Celery-Aufgabe abgeschlossen ist.
- Überprüfen Sie das Dashboard, den Verlauf oder die Seite mit den Suchergebnissen.
- Öffnen Sie einzelne Geräte, um Intel, Kartenstandort, Screenshots, Shodan-Scanergebnisse und Whois-Daten zu überprüfen.
- Verwenden Sie aktive Scans oder Exploit-Helfer nur, wenn Sie eine ausdrückliche Genehmigung haben.
Unterstützte Suchkategorien
Die vollständige Liste der unterstützten Shodan-Abfragen wird in queries.md gepflegt.
Breite Kategorien umfassen:
- Industrielle Steuerungssysteme und OT-Protokolle.
- Kameras und IoT-Geräte mit Screenshot-Funktion.
- Gesundheitswesen und medizinische Systeme.
- Gebäudeautomation und intelligente Infrastruktur.
- Indikatoren für Angreifer-Infrastruktur.
- Allgemeine exponierte Dienste wie VNC, RDP, MQTT, Drucker und Webkameras.
Nmap-Unterstützung
Kamerka kann Nmap-XML-Ausgaben importieren und enthält NSE-Hilfsskripte unter nmap_scripts.
Enthaltene Skriptfamilien sind:
- ATG
- BACnet
- Codesys
- DNP3
- EtherNet/IP
- Fox/Niagara
- Modbus
- Omron FINS
- PCWorx
- ProConOS
- Siemens S7
Exploit-Helfer
Das Projekt enthält ausgewählte Exploit-/Helfer-Module für bestimmte Gerätefamilien, darunter:
- Bosch Security Systems DVR 630/650/670 Series
- VideoIQ Remote-Datei-Offenlegung
- Hikvision-Backdoor-artiger Benutzeränderungsablauf
- Contec Smart Home Passwort-Reset-Verhalten
- Grandstream UCM Informationen-/Versionsprüfung
- Netwave Kamera-Status-Offenlegung
- CirCarLife SCADA Informationsoffenlegung
- Amcrest unauthentifizierter Audio/Video-Endpunkt-Helfer
- Lutron Quantum Informationsoffenlegung
Diese Helfer dienen nur der kontrollierten Validierung. Führen Sie sie nicht gegen Systeme aus, die Sie nicht besitzen oder für die Sie keine Testberechtigung haben.
Fehlerbehebung
- Wenn Suchvorgänge nie abgeschlossen werden, überprüfen Sie, ob Redis läuft und der Celery-Worker verbunden ist.
- Wenn Karten nicht geladen werden, überprüfen Sie, ob der Google Maps-API-Schlüssel gültig und für Ihren Host autorisiert ist.
- Wenn Shodan-Suchvorgänge fehlschlagen, überprüfen Sie, ob der API-Schlüssel über Guthaben verfügt und die Abfrage-/Seitenanzahl zulässig ist.
- Wenn die Whois-Anreicherung leer ist, überprüfen Sie den Whois-XML-API-Schlüssel und das Kontingent.
- Wenn der Nmap-XML-Import fehlschlägt, überprüfen Sie, ob die XML-Datei gültig ist und
GeoLite2-City.mmdb im Projektstammverzeichnis existiert.
Sicherheits- und Rechtshinweis
Kamerka kann exponierte kritische Infrastrukturen, IoT- und medizinische Assets identifizieren. Behandeln Sie alle Funde verantwortungsvoll:
- Nur auf Assets anwenden, die Ihnen gehören oder für die Sie autorisiert sind.
- Systeme Dritter nicht ausnutzen, verändern oder stören.
- Exponierte kritische Systeme über geeignete verantwortungsvolle Offenlegungskanäle melden.
- Die Autoren und Mitwirkenden sind nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Tool verursacht werden.
Weiterführende Lektüre
Danksagungen