Kamerka GUI
Kamerka GUI est un tableau de bord de reconnaissance basé sur Django pour découvrir, examiner et trier les systèmes de contrôle industriels, les objets connectés (IoT) et les dispositifs médicaux exposés sur Internet. Il combine les données de recherche Shodan, la visualisation Google Maps, les captures d'écran d'appareils, l'enrichissement passif en renseignement et des outils d'analyse/exploitation sélectionnés en une seule interface web.
L'application aide à réduire le bruit lors de l'examen grâce à un bouton bascule Filter Honeypots dans les tableaux d'appareils. Cela exclut les appareils qui présentent des indicateurs de type honeypot, ce qui permet aux analystes de se concentrer d'abord sur les actifs probablement réels. Kamerka met également en évidence un champ Indicator pour l'appareil, construit à partir des bannières analysées, des réponses aux protocoles, des étiquettes de captures d'écran et d'autres métadonnées d'appareil, pour expliquer pourquoi un appareil a été signalé ou comment il peut être localisé ou classifié.
Utilisez-le uniquement pour des recherches autorisées, l'inventaire des actifs, la gestion défensive de l'exposition et le signalement aux propriétaires appropriés ou aux équipes CERT/CSIRT.
Ce qu'il fait
- Recherche Shodan pour les catégories d'appareils ICS, IoT, soins de santé et infrastructure d'attaquant.
- Prend en charge les recherches par pays et par coordonnées.
- Stocke les recherches et les appareils découverts dans une base de données Django locale.
- Affiche l'historique des recherches, les tableaux de bord, les statistiques, les favoris et une galerie de captures d'écran.
- Affiche les appareils sur des vues Google Maps globales et par appareil.
- Analyse les indicateurs d'appareil à partir des bannières et des réponses aux protocoles pour faciliter la géolocalisation.
- Affiche le renseignement au niveau de l'appareil, les données de bannière, les captures d'écran, les noms d'hôte, l'organisation, l'emplacement, les ports, les produits et les vulnérabilités.
- Exécute des scans d'hôte Shodan et l'enrichissement via l'API Whois XML depuis l'onglet Intel.
- Prend en charge l'importation de sorties XML Nmap et l'exécution de scans Nmap NSE sélectionnés.
- Inclut des outils d'exploitation (proof-of-concept) sélectionnés pour des familles d'appareils spécifiques.
Captures d'écran
Carte

Renseignement sur l'appareil

Renseignement sur l'appareil avec capture d'écran


Galerie de captures d'écran

Tableau de bord

Vues principales
Dashboard : comptes de haut niveau, crédits Shodan, recherches récentes, graphiques, couverture mondiale et favoris.
Database : tableau consultable de tous les appareils découverts avec filtrage des honeypots probables.
History : recherches précédentes avec noms de pays, catégories d'appareils sélectionnées et liens vers les résultats.
Map : carte Google mondiale regroupant les appareils découverts.
Gallery : toutes les captures d'écran d'appareils collectées, avec filtrage par pays.
Results : tableau d'appareils par recherche, carte, statistiques et navigation de type exportation.
Device : onglets Localiser, Renseignement et Exploitation pour un seul appareil.
Prérequis
- Python 3.10 à 3.13 recommandé pour la stack Django 5.2 et Celery maintenue.
- Serveur Redis pour les tâches d'arrière-plan Celery.
- Clé API Shodan. Un compte payant est recommandé car les recherches larges consomment des crédits/pages.
- Clé API JavaScript Google Maps pour les cartes et les fonctionnalités d'itinéraire/localisation.
- Clé API Whois XML si vous souhaitez un enrichissement Whois.
GeoLite2-City.mmdb dans la racine du dépôt si vous souhaitez la géolocalisation d'import XML Nmap.
- Nmap installé localement si vous souhaitez exécuter des scans Nmap actifs.
Les dépendances Python sont listées dans requirements.txt. Le projet cible désormais la ligne Django 5.2 LTS, Celery 5.6 et des packages Python limités afin que les installations restent à jour sans passer à des versions majeures incompatibles.
Installation
Clonez le dépôt et créez un environnement virtuel :
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
Si python3.12 n'est pas disponible, utilisez un autre interpréteur Python 3.10-3.13. Évitez de réutiliser un ancien environnement virtuel Python 3.8/3.9 car l'ensemble actuel des dépendances nécessite Python 3.10+.
Créez le schéma de base de données :
Créez keys.json à la racine du dépôt :
{
"keys": {
"shodan": "YOUR_SHODAN_API_KEY",
"google_maps": "YOUR_GOOGLE_MAPS_API_KEY",
"whoisxmlapi": "YOUR_WHOIS_XML_API_KEY"
}
}
Démarrez Redis dans un terminal séparé :
Démarrez un worker Celery dans un autre terminal :
source .venv/bin/activate
celery --app kamerka worker --loglevel=info
Démarrez le serveur de développement Django :
source .venv/bin/activate
python manage.py runserver
Ouvrez l'application :
Notes de configuration
keys.json est requis au moment de l'exécution car l'application lit les clés API depuis keys['keys'].
- Gardez
keys.json hors du contrôle de source. Il contient des identifiants privés.
- La base de données par défaut est SQLite. Cela convient pour les tests locaux ; utilisez une base de données de production si vous déployez.
- Les recherches en arrière-plan, les scans Shodan, les scans Whois et les importations Nmap dépendent du fait que les workers Celery soient actifs.
- Les recherches par coordonnées utilisent des requêtes géographiques Shodan autour de la latitude/longitude fournie.
- Les grandes recherches Shodan peuvent consommer rapidement des crédits. Utilisez les limites de pages intentionnellement.
Flux de travail typique
- Ouvrez la page de recherche et choisissez un mode de recherche ICS, IoT, soins de santé ou infrastructure.
- Sélectionnez une ou plusieurs catégories d'appareils.
- Choisissez un pays ou fournissez des coordonnées, puis sélectionnez le nombre de pages Shodan à collecter.
- Soumettez la recherche et attendez la fin de la tâche Celery.
- Consultez le tableau de bord, l'historique ou la page de résultats par recherche.
- Ouvrez les appareils individuels pour inspecter le renseignement, l'emplacement sur la carte, les captures d'écran, les résultats de scan Shodan et les données Whois.
- N'utilisez les scans actifs ou les outils d'exploitation que lorsque vous avez une autorisation explicite.
Catégories de recherche prises en charge
La liste complète des requêtes Shodan prises en charge est maintenue dans queries.md.
Les grandes catégories incluent :
- Systèmes de contrôle industriels et protocoles OT.
- Caméras et appareils IoT capables de captures d'écran.
- Systèmes de santé et médicaux.
- Automatisation des bâtiments et infrastructures intelligentes.
- Indicateurs d'infrastructure d'attaquant.
- Services génériques exposés tels que VNC, RDP, MQTT, imprimantes et webcams.
Support Nmap
Kamerka peut importer des sorties XML Nmap et inclut des scripts d'assistance NSE dans nmap_scripts.
Les familles de scripts incluses comprennent :
- ATG
- BACnet
- Codesys
- DNP3
- EtherNet/IP
- Fox/Niagara
- Modbus
- Omron FINS
- PCWorx
- ProConOS
- Siemens S7
Outils d'exploitation
Le projet inclut des modules d'exploitation/assistance sélectionnés pour des familles d'appareils spécifiques, notamment :
- Bosch Security Systems DVR 630/650/670 Series
- VideoIQ remote file disclosure
- Hikvision backdoor-style user modification flow
- Contec Smart Home password reset behavior
- Grandstream UCM information/version check
- Netwave camera status disclosure
- CirCarLife SCADA information disclosure
- Amcrest unauthenticated audio/video endpoint helper
- Lutron Quantum information disclosure
Ces outils sont uniquement destinés à une validation contrôlée. Ne les exécutez pas contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation de tester.
Dépannage
- Si les recherches ne se terminent jamais, confirmez que Redis est en cours d'exécution et que le worker Celery est connecté.
- Si les cartes ne se chargent pas, confirmez que la clé API Google Maps est valide et autorisée pour votre hôte.
- Si les recherches Shodan échouent, confirmez que la clé API a des crédits et que le nombre de requêtes/pages est autorisé.
- Si l'enrichissement Whois est vide, confirmez la clé API Whois XML et le quota.
- Si l'importation XML Nmap échoue, confirmez que le fichier XML est valide et que
GeoLite2-City.mmdb existe à la racine du projet.
Avis de sécurité et légal
Kamerka peut identifier les infrastructures critiques exposées, les actifs IoT et médicaux. Traitez toutes les découvertes de manière responsable :
- Utilisez uniquement sur des actifs que vous possédez ou que vous êtes autorisé à évaluer.
- N'exploitez, ne modifiez et ne perturbez pas les systèmes tiers.
- Signalez les systèmes critiques exposés par le biais de canaux de divulgation responsable appropriés.
- Les auteurs et contributeurs ne sont pas responsables de l'utilisation abusive ou des dommages causés par cet outil.
Lectures complémentaires
Crédits