Kamerka GUI
Kamerka GUI è un dashboard di ricognizione basato su Django per scoprire, esaminare e classificare i sistemi di controllo industriale, i dispositivi dell'Internet delle Cose (IoT) e i dispositivi medici esposti su Internet. Combina dati di ricerca Shodan, visualizzazione Google Maps, screenshot dei dispositivi, arricchimento di intelligence passiva e helper di scansione/exploit selezionati in un'unica interfaccia web.
L'app aiuta a ridurre il rumore durante la revisione con un interruttore Filter Honeypots nelle tabelle dei dispositivi. Questo esclude i dispositivi che espongono indicatori stile honeypot, così gli analisti possono concentrarsi prima su risorse probabilmente reali. Kamerka mostra anche un campo Indicator del dispositivo, costruito da banner analizzati, risposte di protocollo, etichette di screenshot e altri metadati del dispositivo, per spiegare perché un dispositivo è stato segnalato o come può essere localizzato o classificato.
Utilizzalo solo per ricerche autorizzate, inventario delle risorse, gestione difensiva dell'esposizione e segnalazione ai proprietari appropriati o ai team CERT/CSIRT.
Cosa Fa
- Cerca su Shodan categorie di dispositivi ICS, IoT, sanitari e infrastruttura attaccante.
- Supporta ricerche per paese e ricerche per coordinate.
- Memorizza ricerche e dispositivi scoperti in un database Django locale.
- Mostra cronologia delle ricerche, dashboard, statistiche, preferiti e una galleria di screenshot.
- Visualizza i dispositivi su viste Google Maps globali e per dispositivo.
- Analizza gli indicatori dei dispositivi da banner e risposte di protocollo per aiutare con la geolocalizzazione.
- Mostra intelligence a livello di dispositivo, dati banner, screenshot, hostname, organizzazione, posizione, porte, prodotti e vulnerabilità.
- Esegue scansioni host Shodan e arricchimento API Whois XML dalla scheda Intel.
- Supporta l'importazione di output Nmap XML e l'esecuzione di scansioni Nmap NSE selezionate.
- Include helper di exploit proof-of-concept selezionati per famiglie di dispositivi specifiche.
Schermate
Mappa

Intelligence dispositivo

Intelligence dispositivo con screenshot


Galleria screenshot

Dashboard

Viste Principali
Dashboard: conteggi di alto livello, crediti Shodan, ricerche recenti, grafici, copertura mondiale e preferiti.
Database: tabella ricercabile di tutti i dispositivi scoperti con filtro per probabili honeypot.
History: ricerche precedenti con nomi di paesi, categorie di dispositivi selezionate e collegamenti ai risultati.
Map: mappa Google Maps globale con cluster dei dispositivi scoperti.
Gallery: tutti gli screenshot dei dispositivi raccolti, con filtro per paese.
Results: tabella dei dispositivi per ricerca, mappa, statistiche e navigazione in stile esportazione.
Device: schede Locate, Intel e Exploit per un singolo dispositivo.
Requisiti
- Python 3.10-3.13 consigliato per lo stack Django 5.2 e Celery mantenuto.
- Server Redis per lavori in background Celery.
- Chiave API Shodan. Si consiglia un account a pagamento perché le ricerche estese consumano crediti/pagine.
- Chiave API JavaScript Google Maps per mappe e funzionalità di percorso/posizione.
- Chiave API Whois XML se si desidera l'arricchimento Whois.
GeoLite2-City.mmdb nella radice del repository se si desidera la geolocalizzazione dell'importazione Nmap XML.
- Nmap installato localmente se si desidera eseguire scansioni attive Nmap.
Le dipendenze Python sono elencate in requirements.txt. Il progetto ora punta alla linea Django 5.2 LTS, Celery 5.6 e pacchetti Python vincolati in modo che le installazioni rimangano aggiornate senza saltare a versioni maggiori incompatibili.
Installazione
Clona il repository e crea un ambiente virtuale:
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
Se python3.12 non è disponibile, usa un altro interprete Python 3.10-3.13. Evita di riutilizzare un vecchio ambiente virtuale Python 3.8/3.9 perché il set di dipendenze attuale richiede Python 3.10+.
Crea lo schema del database:
Crea keys.json nella radice del repository:
{
"keys": {
"shodan": "YOUR_SHODAN_API_KEY",
"google_maps": "YOUR_GOOGLE_MAPS_API_KEY",
"whoisxmlapi": "YOUR_WHOIS_XML_API_KEY"
}
}
Avvia Redis in un terminale separato:
Avvia un worker Celery in un altro terminale:
source .venv/bin/activate
celery --app kamerka worker --loglevel=info
Avvia il server di sviluppo Django:
source .venv/bin/activate
python manage.py runserver
Apri l'app:
Note di Configurazione
keys.json è richiesto in fase di esecuzione perché l'app legge le chiavi API da keys['keys'].
- Mantieni
keys.json fuori dal controllo versione. Contiene credenziali private.
- Il database predefinito è SQLite. Va bene per test locali; utilizza un database di produzione se lo distribuisci.
- Le ricerche in background, le scansioni Shodan, le scansioni Whois e le importazioni Nmap dipendono da worker Celery attivi.
- Le ricerche per coordinate utilizzano query geografiche Shodan intorno alla latitudine/longitudine fornita.
- Grandi ricerche Shodan possono consumare crediti rapidamente. Usa i limiti di pagina intenzionalmente.
Flusso di Lavoro Tipico
- Apri la pagina di ricerca e scegli una modalità di ricerca ICS, IoT, sanitaria o infrastruttura.
- Seleziona una o più categorie di dispositivi.
- Scegli un paese o fornisci coordinate, poi scegli quante pagine Shodan raccogliere.
- Invia la ricerca e attendi il completamento del task Celery.
- Esamina il cruscotto, la cronologia o la pagina dei risultati per ricerca.
- Apri singoli dispositivi per ispezionare Intel, posizione sulla mappa, screenshot, risultati scansione Shodan e dati Whois.
- Utilizza scansioni attive o helper di exploit solo quando hai autorizzazione esplicita.
Categorie di Ricerca Supportate
L'elenco completo delle query Shodan supportate è mantenuto in queries.md.
Le categorie generali includono:
- Sistemi di controllo industriale e protocolli OT.
- Telecamere e dispositivi IoT in grado di catturare screenshot.
- Sistemi sanitari e medici.
- Automazione degli edifici e infrastrutture intelligenti.
- Indicatori di infrastruttura attaccante.
- Servizi esposti generici come VNC, RDP, MQTT, stampanti e webcam.
Supporto Nmap
Kamerka può importare output Nmap XML e include script helper NSE in nmap_scripts.
Le famiglie di script incluse includono:
- ATG
- BACnet
- Codesys
- DNP3
- EtherNet/IP
- Fox/Niagara
- Modbus
- Omron FINS
- PCWorx
- ProConOS
- Siemens S7
Helper di Exploit
Il progetto include moduli helper/exploit selezionati per famiglie di dispositivi specifiche, tra cui:
- 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
Questi helper sono solo per validazione controllata. Non eseguirli su sistemi che non possiedi o per cui non hai autorizzazione per testare.
Risoluzione dei Problemi
- Se le ricerche non si completano mai, conferma che Redis sia in esecuzione e che il worker Celery sia connesso.
- Se le mappe non si caricano, conferma che la chiave API Google Maps sia valida e autorizzata per il tuo host.
- Se le ricerche Shodan falliscono, conferma che la chiave API abbia crediti e che il conteggio query/pagine sia consentito.
- Se l'arricchimento Whois è vuoto, conferma la chiave API Whois XML e la quota.
- Se l'importazione Nmap XML fallisce, conferma che il file XML sia valido e che
GeoLite2-City.mmdb esista nella radice del progetto.
Avviso di Sicurezza e Legale
Kamerka può identificare infrastrutture critiche, dispositivi IoT e beni medici esposti. Tratta tutti i risultati in modo responsabile:
- Utilizza solo su risorse che possiedi o per cui sei autorizzato a valutare.
- Non sfruttare, modificare o interrompere sistemi di terze parti.
- Segnala i sistemi critici esposti attraverso canali di divulgazione responsabile appropriati.
- Gli autori e i contributori non sono responsabili per uso improprio o danni causati da questo strumento.
Letture Correlate
Crediti