2.4.1. OSINT: Shodan KAMERKA IoT
Estado y vigencia de la herramienta (2026): Kamerka ha evolucionado significativamente respecto a sus primeras versiones. Actualmente se encuentra plenamente operativa, con soporte actualizado para la integración de APIs modernas (Shodan, Google maps y Whoisxmlapi) y una interfaz renovada para la geolocalización de activos expuestos.
OSINT para "el internet de las cosas (IoT)"
Kamerka es una herramienta desarrollada en Python3 por woj-ciech orientada a labores de reconocimiento e inteligencia OSINT sobre el Internet de las Cosas (IoT) y sistemas de control industrial (ICS/SCADA). Su propósito principal es mapear y geolocalizar de forma interactiva activos expuestos a partir de consultas operativas en Shodan, todo gestionado a través de una interfaz web intuitiva basada en Django.
El proyecto continúa en mantenimiento y evolución activa bajo su versión Kamerka-GUI. Aunque para aprovechar al máximo las consultas masivas por países y el consumo de múltiples páginas es recomendable disponer de créditos de Shodan (mediante cuentas de membresía o académicas), la herramienta puede configurarse con distintos tipos de cuenta según el volumen de datos que se desee extraer.
Puedes acceder al repositorio oficial del proyecto en:
2.4.1.1. Funcionamiento de filtros Shodan y cuentas de usuario
Opción de uso recomendado
La plataforma Shodan (https://www.shodan.io/) ya ha sido presentada en una sección anterior. No obstante, las opciones de búsqueda, la profundidad de los datos y el volumen de resultados disponibles varían en función del plan o tipo de cuenta empleado, desde el registro gratuito básico hasta licencias profesionales o corporativas.
Entre los principales factores diferenciadores entre cuentas destacan:
Acceso a filtros avanzados y etiquetas (tags): como filtrado por país, puertos específicos, organizaciones o vulnerabilidades (CVEs).
Créditos de consulta y escaneo (query & scan credits): necesarios para exportar grandes volúmenes de datos o paginar más allá de los primeros resultados.
Aunque los planes comerciales amplían notablemente las capacidades de automatización y extracción masiva, una cuenta gratuita ya desbloquea filtros esenciales que no están disponibles sin autenticación. Además, Shodan ofrece una modalidad académica gratuita: si dispones de una dirección de correo institucional universitaria o educativa (típicamente con dominio .edu o afín), puedes asociarla para acceder a ventajas ampliadas, incluyendo créditos mensuales para consultas y un conjunto más amplio de filtros de búsqueda sin coste alguno.
Funcionamiento básico Shodan
Desde la sección de Explorar (https://www.shodan.io/explore), la herramienta nos proporciona información sobre los tipos de búsqueda que pueden realizarse, convenientemente ordenados:
Una búsqueda básica sin filtros, empleará el motor de búsqueda en función del texto introducido, viendo a través de la URL un resultado que tiene esta forma y diferentes resultados sin filtrar y con diferentes opciones de filtro al lado:
https://www.shodan.io/search?query=<texto_insertado>
No obstante, si se intenta añadir un filtro cualquiera sin estar loginado, como los que están al lado que indican país y puerto, Shodan inmediatamente advertirá de la condición:
Así pues, la diferencia entre tener o no una cuenta (aunque sea la gratuita, de registro) es grande si se prueba a realizar la búsqueda, ahora sí, empleando filtros básicos. En estos casos, el motor de búsqueda de Shodan realiza el siguiente formato de búsqueda a través de la URL (enmascarando los caracteres especiales):
https://shodan.io/search?query=<texto1>+<texto2>+<filtro1>:”<valor_filtro1>”+<filtro2>:”<valor_filtro2>”+…
Existe tanto en internet como en la página principal de Shodan ejemplos de estos filtros, que están debidamente inventariados y son propuestos al realizar la búsqueda básica (https://www.shodan.io/search/filters):
Con solo crear una cuenta gratuita se obtiene acceso a funciones básicas muy útiles, entre ellas el Dashboard principal de Shodan (https://www.shodan.io/dashboard). Aunque las capacidades crecen exponencialmente en los planes comerciales (https://account.shodan.io/billing), conviene destacar el enorme valor de la cuenta académica. Utilizando una dirección de correo institucional (como dominios universitarios o .edu), Shodan proporciona un nivel de acceso altamente productivo, dotado de créditos de consulta suficientes para llevar a cabo investigaciones y prácticas de reconocimiento exhaustivas a través de KAMERKA.
2.4.1.2. Instalación y uso de KAMERKA
Instalación
Siguiendo las instrucciones del repositorio de Github, se recomienda su instalación creando un entorno aislado de Python3 con la función venv
git clone https://github.com/woj-ciech/Kamerka-GUI.git
cd Kamerka-GUI
## Para la creación del entorno. En su defecto, utilizar el comando python3 en vez de python3.12 si da algún problema en Kali Linux.
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
Nota: Para desactivar el entorno aislado Python3 después de utilizar Kamerka y luego para volver a iniciarlo, se recuerdan las instrucciones básicas (en el mismo directorio creado Kamerka-GUI:
# Desactivar:
deactivate
# Volver a activar, en este caso los archivos para el programa se guardan en un directorio oculto nombrado como .venv, pero podría ser otro nombre.
source .venv/bin/activate
Preparación de a herramienta
1) Realizar la siguiente acción para generar el esquema de la BBDD:
python manage.py migrate
2) Obtener las claves API de los siguientes servicios o aplicaciones (no se va a detallar como en esta página). Son imprescindibles para el funcionamiento óptimo de KAMERKA.
- Shodan: Shodan.io
- Google maps > Maps JavaScript API – Google Cloud: https://console.cloud.google.com/
- Whoisxmlapi: https://www.whoisxmlapi.com/
keys.json con el siguiente formato, introduciendo las claves API obtenidas:
{
"keys": {
"shodan": "YOUR_SHODAN_API_KEY",
"google_maps": "YOUR_GOOGLE_MAPS_API_KEY",
"whoisxmlapi": "YOUR_WHOIS_XML_API_KEY"
}
}
4) Generar base de datos para el servicio Kamerka y volver a realizar la generación de esquema:
python manage.py makemigrations app_kamerka
python manage.py migrate
Arranque de la herramienta
Para poner en marcha Kamerka, es necesario levantar tres servicios simultáneos en segundo plano. Para ello, se deben abrir tres terminales o pestañas independientes y ejecutar un comando en cada una de ellas que son los que se indican abajo.
Se debe asegurar que el entorno virtual de Python esté activado en todas las pestañas antes de iniciar cada proceso:
source .venv/bin/activate
redis-server
source .venv/bin/activate
celery --app kamerka worker --loglevel=info
source .venv/bin/activate
python manage.py runserver
Uso de la herramienta
Una vez iniciados todos los servicios, abrir el navegador web y acceder a la siguiente dirección local (la interfaz de Kamerka se ejecuta por defecto en el puerto 8000):
http://localhost:8000/
Con la plataforma operativa, el entorno queda listo para experimentar con los distintos módulos de análisis. A modo de ejemplo práctico, dentro de la sección «Internet of Things» se pueden introducir coordenadas geográficas concretas para rastrear dispositivos de videovigilancia (como cámaras Hikvision); los resultados obtenidos se presentarán de forma visual sobre un mapa o clasificados en una lista estructurada desde la pestaña «Devices».
Nota: En este ejemplo, se ha empleado una API Shodan de una cuenta académica, devolviendo resultados bastante buenos a partir de los créditos que proporciona este tipo de cuenta.