Shodan: OSINT de Infraestructura
Reconocimiento de Dispositivos y Superficie de Ataque
1h 9min
13,836 palabras
$579 MXN
IVA incluidoAcceso de por vida • Actualizaciones incluidasDescripción
Guía profesional completa de Shodan: OSINT de Infraestructura. 10000+ palabras, ejemplos reales, scripts y certificaciones. Nivel Intermedio.
Contenido
Shodan: OSINT de Infraestructura
Reconocimiento de Dispositivos y Superficie de Ataque
Lo que vas a dominar
Shodan: OSINT de Infraestructura — Guía Premium de Maestría
Introducción: El Motor de Búsqueda que Todo Profesional Debe Dominar
1. Bienvenida y Contexto
2. ¿Para Quién es Esta Guía?
3. Qué Hace Diferente a Esta Guía
Query que busca Elasticsearch expuestos sin autenticación en LATAM
4. Estructura de la Guía
5. Disclaimer Legal y Ético
Shodan: OSINT de Infraestructura — Guía Premium de Maestría
Capítulo 1: Fundamentos y Setup Profesional
1.1 ¿Qué es Shodan? — El Motor de Búsqueda para Dispositivos
1.2 Arquitectura y Componentes — Cómo Funciona por Dentro
1.3 Instalación Paso a Paso — Shodan CLI y SDK Python
Actualizar repositorios e instalar dependencias
Instalar shodan CLI via pip (recomendado entorno virtual)
Verificar instalación
Output esperado: shodan 1.30.0 (o superior)
Inicializar con tu API key
Output: Successfully initialized
Probar conectividad
Muestra: plan, créditos de escaneo, rate limits, etc.
Instalar EPEL y dependencias
Crear virtualenv e instalar
Inicializar
Requisito: Python 3.8+ instalado desde python.org (marcar "Add Python to PATH")
Abrir PowerShell como Administrador
Verificar Python
Instalar shodan
Inicializar
Verificar
Crear perfil si no existe
Añadir alias y función
Instalar Homebrew si no está presente
Instalar Python 3
Crear virtualenv e instalar shodan
Inicializar
Instalar dependencias del sistema
Instalar shodan CLI
Crear directorio de trabajo
Script de entrada para inicializar API key desde variable de entorno
Construir imagen
Ejecutar con API key
Usar docker-compose
1. Verificar versión
2. Verificar conectividad y plan
Output esperado:
Query credits: 100 (plan Freelancer)
Scan credits: 100
Monitored IPs: 16
Plan: dev (o freelancer, small business, etc.)
3. Prueba básica de búsqueda
Shodan: OSINT de Infraestructura — Guía Premium de Maestría
Capítulo 2: Técnicas Avanzadas
2.1 Comandos Esenciales
2.2 Automatización con Scripts
shodan-monitor.sh - Alerta sobre nuevos hosts de una organización
Uso: ./shodan-monitor.sh "Microsoft Corporation"
Requiere: shodan CLI inicializada (shodan init <API_KEY>)
Obtener lista actual de IPs y puertos únicos
Si no existe baseline, crear uno
Comparar: hosts en current.txt que no están en baseline
Actualizar baseline para la próxima ejecución
Cabecera del CSV
Para envío por correo usar smtplib (omitido por brevedad)
2.3 Integración con Otras Herramientas
Shodan: OSINT de Infraestructura — Guía Premium de Maestría
Capítulo 3: Análisis de Casos Reales
3.1 Caso 1: Pentesting Empresarial — Exposición Externa de FinTech “NovaPay”
3.2 Caso 2: Investigación OSINT — Infraestructura del Grupo APT “StormScale”
Obtener todos los hosts del ASN del proveedor
3.3 Caso 3: Incident Response — Compromiso por C2 en una Planta Industrial
Shodan: OSINT de Infraestructura — Guía Premium de Maestría
Capítulo 4: Defensa, Hardening y Blue Team
4.1 Detectando el Uso de Shodan
4.2 Hardening contra Estas Técnicas
4.3 Respuesta a Incidentes
4.4 Compliance y Regulaciones
Shodan: OSINT de Infraestructura — Guía Premium de Maestría
Capítulo 5: Ecosistema y Toolchain Completo
5.1 Pipeline de Reconocimiento Completo
pipeline_recon.sh - Fase 1: Descubrimiento de subdominios
Subfinder con todas las fuentes pasivas
Amass enum pasivo + activo (sin brute-force agresivo)
Unificar y ordenar
dnsenum sobre lista de subdominios
shodan_enrich.py - Enriquecimiento masivo con Shodan API
dashboard.py - Reporte rápido de hallazgos
full_recon.sh - Pipeline completo
5.2 Frameworks y Librerías
Búsqueda con múltiples filtros
Correlacionar con Shodan
5.3 Extensiones y Plugins
módulo auxiliar para Metasploit (auxiliary/gather/shodan_vuln_enum)
5.4 Alternativas y Comparativas
Shodan: OSINT de Infraestructura — Guía Premium de Maestría
Capítulo 4: Ejercicios Prácticos Guiados
4.1 Ejercicio 1: Setup de Laboratorio (500 palabras)
Output esperado: shodan 1.30.0 (o superior)
4.2 Ejercicio 2: Escaneo Básico con Shodan CLI (500 palabras)
4.3 Ejercicio 3: Explotación Avanzada (500 palabras)
Output: Version 4.5.4-Debian
Shodan: OSINT de Infraestructura — Guía Premium de Maestría
Capítulo 6: Troubleshooting Master Guide
6.1 Errores de Instalación
6.2 Errores de Ejecución
Shodan: OSINT de Infraestructura — Guía Premium de Maestría
Capítulo 6: Recursos y Próximos Pasos
6.1 Dónde Obtener Shodan
6.2 Recursos Adicionales
6.3 Certificaciones Profesionales
6.4 Oportunidades Laborales
6.5 Conclusión
Soporte y Contacto
Déjanos tu Feedback
Vista Previa
Shodan: OSINT de Infraestructura
Reconocimiento de Dispositivos y Superficie de Ataque
Autor: ViciousByte Security Team Nivel: Intermedio Duración: 8-10 horas de lectura práctica Versión: 1.0 Última actualización: June 2026
Lo que vas a dominar
Una guía práctica y densa sobre Shodan: OSINT de Infraestructura, de nivel Intermedio, con Shodan, Censys, Python, Shodan CLI, Nmap.
- Instalación y configuración profesional (Linux, Windows, macOS y Docker)
- Comandos y flujos de trabajo del mundo real, explicados línea por línea
- Casos prácticos y troubleshooting con soluciones probadas
- Scripts y plantillas listos para usar
Duración: 8-10 horas de lectura práctica · Nivel: Intermedio
Shodan: OSINT de Infraestructura — Guía Premium de Maestría
Introducción: El Motor de Búsqueda que Todo Profesional Debe Dominar
1. Bienvenida y Contexto
En 2025, la superficie de ataque global no se reduce — se expande exponencialmente. Cada día se conectan 550,000 nuevos dispositivos a Internet. Para 2026, habrá más de 30 mil millones de endpoints activos. La mayoría están mal configurados, expuestos sin autenticación, o ejecutando versiones de software con vulnerabilidades conocidas. Y todos ellos son visibles para quien sepa buscar.
Shodan no es un buscador de páginas web. Es un escáner planetario que indexa banners de servicio: cada puerto abierto, cada respuesta HTTP, cada handshake TLS, cada string de versión que un servidor, cámara, PLC industrial, router o base de datos emite al recibir una conexión. Google indexa contenido. Shodan indexa infraestructura.
En 2024, Shodan procesó más de 4 mil millones de banners mensuales. Su crawler global escanea 1,200 puertos comunes en cada IP pública que encuentra, desde el puerto 21 (FTP) hasta el 9200 (Elasticsearch), pasando por ICS/SCADA (502, 102, 47808), bases de datos (3306, 5432, 27017, 6379) y protocolos industriales (Modbus, DNP3, BACnet). El resultado es un mapa en tiempo real de todo lo que respira en Internet.
Casos reales que definen su relevancia:
- 2023 — Exposición masiva de Redis: Un investigador usó Shodan para descubrir 35,000 instancias de Redis sin autenticación, muchas con datos de sesiones de usuario y tokens de API en texto plano. El query
product:Redis -authreveló el desastre en segundos. - 2024 — PLCs Siemens S7 accesibles: Una búsqueda con
port:102 product:"Siemens"mostró 2,400 controladores lógicos programables conectados directamente a Internet, sin segmentación, en plantas de agua, energía y manufactura. Varios respondían a comandos de escritura sin autenticación. - 2025 — Cámaras Hikvision con firmware vulnerable: El filtro
product:"Hikvision" has_screenshot:trueexpuso 80,000 cámaras con credenciales por defecto, muchas transmitiendo en vivo desde interiores de oficinas y hogares.
Shodan no es una herramienta de hacking. Es un espejo. Refleja lo que las organizaciones han dejado expuesto. Y ese reflejo es la materia prima del OSINT de infraestructura, del threat intelligence, del pentesting externo y de la defensa proactiva.
Evolución reciente (2023-2025):
- Shodan Monitor: Alertas en tiempo real sobre nuevos servicios expuestos en rangos IP propios. Integración con Slack, Teams, webhooks.
- Shodan Trends: Datos históricos agregados para ver la evolución de vulnerabilidades a nivel global (por ejemplo, cuántos servidores pasaron de Apache 2.4.49 a 2.4.56 tras el disclosure de CVE-2023-25690).
- API v3 con streaming: Posibilidad de consumir el firehose de banners en tiempo real para SOCs y plataformas de threat intelligence.
- Integración con Nuclei: Shodan ahora expone resultados de escaneo de vulnerabilidades con plantillas Nuclei directamente en los banners, permitiendo filtrar por
vuln:CVE-2024-XXXXX.
En 2025, no saber usar Shodan es como ser bombero y no saber usar un mapa de incendios. Esta guía te lleva de cero a maestro.
2. ¿Para Quién es Esta Guía?
Esta guía está escrita para profesionales técnicos que ya operan en el campo y necesitan una referencia densa, sin paja, que les permita extraer valor operacional de Shodan desde el primer día.
Perfil del lector ideal:
- Pentester junior o mid-level que realiza assessments externos y necesita mapear la superficie de ataque de un cliente en minutos, no en horas.
- Analista SOC/Blue Team que quiere monitorizar la exposición de su organización y detectar shadow IT, servicios no autorizados o configuraciones peligrosas antes que un atacante.
- Investigador de threat intelligence que rastrea infraestructura de actores maliciosos, servidores C2, o patrones de exposición de vulnerabilidades a escala global.
- Ingeniero de seguridad cloud que audita entornos AWS, Azure o GCP y necesita validar que los buckets S3, bases de datos y balanceadores no estén expuestos públicamente.
- Estudiante avanzado de ciberseguridad que ya domina Nmap, comprende TCP/IP y quiere añadir OSINT de infraestructura a su arsenal.
Prerrequisitos técnicos:
- Comprensión sólida del modelo TCP/IP, puertos comunes y protocolos de aplicación (HTTP, FTP, SSH, DNS, Modbus, etc.).
- Familiaridad con línea de comandos Linux/Windows y scripting básico en Python o Bash.
- Conocimiento fundamental de bases de datos (MySQL, PostgreSQL, MongoDB, Redis, Elasticsearch) y sus puertos por defecto.
- Experiencia previa con Nmap o escaneo de puertos (no es obligatorio, pero acelera la curva).
Qué aprenderás exactamente al terminar esta guía:
- Construir queries de Shodan que extraigan exactamente lo que buscas: desde "todos los Jenkins expuestos en México" hasta "servidores RDP con credenciales por defecto en el rango IP de un banco".
- Automatizar búsquedas masivas con la API de Shodan y Python para generar reportes de exposición en CSV/JSON.
- Integrar Shodan CLI en pipelines de pentesting para correlacionar banners con vulnerabilidades conocidas usando Nuclei y searchsploit.
- Defender tu propia infraestructura usando Shodan Monitor y queries programáticas para detectar fugas de información, servicios shadow IT y configuraciones peligrosas.
- Interpretar banners crudos, identificar versiones exactas de software, y pivotar desde un banner a CVEs explotables en segundos.
- Usar Shodan como fuente de threat intelligence: rastrear servidores C2 de malware, identificar patrones de infraestructura de APTs, y monitorizar la propagación global de vulnerabilidades.
3. Qué Hace Diferente a Esta Guía
El 90% del contenido sobre Shodan en Internet es superficial: "busca webcam y verás cámaras". Eso no sirve en un entorno profesional. Esta guía está construida sobre experiencia real de campo: cada query, cada script y cada técnica ha sido usada en assessments pagados, investigaciones de incidentes y ejercicios de red team.
Enfoque práctico vs. teórico:
No explicamos qué es un banner. Te mostramos un banner real crudo, línea por línea, y te enseñamos qué extraer de él: versión exacta, CPE, CVE aplicables, sistema operativo subyacente, y posibles vectores de ataque. Cada capítulo incluye ejercicios reales con IPs y dominios que puedes verificar tú mismo.
Ejemplos del mundo laboral:
- "El cliente necesita un informe de exposición externa para mañana a las 9 AM." → Capítulo 2: queries pre-armadas por sector (banca, salud, energía, retail) que generan un panorama completo en 15 minutos.
- "Encontré un servidor extraño en el rango de mi organización, ¿cómo sé si es malicioso?" → Capítulo 4: técnicas de pivoting y correlación con threat intelligence.
- "Quiero monitorizar si alguien expone accidentalmente un bucket S3 con datos de clientes." → Capítulo 5: script Python que consulta Shodan cada hora y alerta por Telegram.
Scripts y comandos listos para usar:
Cada script en esta guía está completo, comentado y probado. No hay placeholders. Si ves un bloque de código, puedes copiarlo, cambiar la API key y ejecutarlo. Ejemplo real del Capítulo 3:
import shodan
import json
from datetime import datetime
API_KEY = "TU_API_KEY"
api = shodan.Shodan(API_KEY)
## Query que busca Elasticsearch expuestos sin autenticación en LATAM
query = 'product:"Elasticsearch" -"You Know, for Search" country:"MX","AR","CO","CL","PE"'
resultados = []
try:
for banner in api.search_cursor(query):
resultados.append({
"ip": banner['ip_str'],
"puerto": banner['port'],
"version": banner.get('version', 'N/A'),
"org": banner.get('org', 'N/A'),
"timestamp": banner['timestamp']
})
except shodan.APIError as e:
print(f"Error: {e}")
with open(f"elasticsearch_expuestos_{datetime.now().strftime('%Y%m%d_%H%M')}.json", "w") as f:
json.dump(resultados, f, indent=2)
print(f"[+] {len(resultados)} instancias encontradas. Reporte guardado.")
Troubleshooting de problemas comunes:
Cada técnica incluye una sección de "Cuando las cosas salen mal": qué hacer si la API devuelve 0 resultados (query mal formada), si el rate limit te bloquea (cómo usar search_cursor correctamente), si los banners están truncados (cómo solicitar el banner completo), o si Shodan no indexa el puerto que necesitas (cómo usar shodan scan para escanear bajo demanda).
4. Estructura de la Guía
La guía está organizada en 7 capítulos que siguen una progresión lógica: desde los fundamentos hasta la automatización avanzada y la defensa proactiva.
Capítulo 1 — Fundamentos y Primeros Pasos:
- Anatomía de un banner de Shodan
- Filtros esenciales:
port,country,org,product,version,os,vuln - Operadores booleanos y sintaxis avanzada
- Shodan CLI: instalación, configuración y primeros comandos
- Laboratorio: tu primer assessment externo en 10 minutos
Capítulo 2 — Queries de Alto Impacto por Sector:
- Banca y Fintech: ATMs, switches financieros, bases de datos expuestas
- Salud: DICOM, HL7, PACS, bombas de infusión conectadas
- Energía y Utilities: Modbus, DNP3, IEC 104, SCADA
- Retail y eCommerce: POS, Magento, Shopify backends
- Gobierno e Infraestructura Crítica: RDP, SSH, VPNs sin MFA
Capítulo 3 — Automatización con Python y API:
search_cursorpara extracciones masivas sin límites- Generación de reportes en CSV, JSON y HTML
- Integración con Slack/Teams para alertas en tiempo real
- Enriquecimiento de banners con datos de Censys y CVE
- Script completo: "Shodan Exposure Report Generator"
Capítulo 4 — Defensa, Hardening y Blue Team:
- Shodan Monitor para vigilancia continua de tus rangos IP
- Detección de shadow IT y servicios no autorizados
- Queries para auditar tu propia organización
- Integración con SIEM (Splunk, ELK) vía API
- Playbook: respuesta a una exposición detectada
Capítulo 5 — Ecosistema y Toolchain Completo:
- Shodan + Nmap + Nuclei: pipeline de escaneo y validación
- Shodan + Maltego: transforms para OSINT gráfico
- Shodan + SpiderFoot + Amass: correlación con dominios y ASNs
- Shodan + Metasploit: identificación de targets vulnerables
- Shodan + Censys + ZoomEye: triangulación de fuentes
Capítulo 6 — Threat Intelligence y Caza de Actores Maliciosos:
- Identificación de servidores C2 por patrones de banner
- Rastreo de infraestructura de APTs conocidas
- Uso de Shodan Trends para anticipar campañas de explotación
- Caso real: desenmascarando un servidor Cobalt Strike
Capítulo 7 — Certificaciones, Carrera y Roadmap Profesional:
- Cómo Shodan acelera tu preparación para OSCP, OSWE, GPEN, GCIH
- Habilidades que los empleadores buscan y cómo demostrarlas
- Construyendo un portafolio con casos reales de Shodan
- Roadmap de 12 meses para especializarte en OSINT de infraestructura
Metodología de aprendizaje:
Cada capítulo sigue el patrón: Concepto → Query/Comando Real → Output Real → Interpretación → Ejercicio Práctico → Troubleshooting. No leas pasivamente. Ejecuta cada query. Modifica los parámetros. Rompe los scripts y arréglalos. La maestría viene de ensuciarse las manos.
Cómo aprovechar al máximo esta guía:
- Consigue una API key de Shodan (el plan de $69 USD/mes es suficiente para el 95% de los casos; el plan Freelancer de $359 USD/mes desbloquea
search_cursorilimitado y el firehose). - Ten un entorno Linux con Python 3.10+,
shodanCLI instalado, y Nmap. - Para cada capítulo, ejecuta los ejemplos en tiempo real. No los leas: ejecútalos.
- Mantén un cuaderno de queries propias. La mejor query es la que resuelve tu problema específico.
- Únete a la comunidad de Shodan en Twitter/X y Discord para mantenerte al día con nuevos filtros y funcionalidades.
5. Disclaimer Legal y Ético
Esta guía es una herramienta educativa para profesionales de la seguridad de la información. Todo el contenido está orientado a la defensa, el hardening, el pentesting autorizado y la investigación legítima de infraestructura.
Principios de uso ético y legal:
- Solo escanea lo que posees o tienes autorización explícita para escanear. Shodan indexa banners públicos, pero el uso de
shodan scanpara escaneo bajo demanda solo debe realizarse sobre IPs propias o de clientes que hayan firmado un acuerdo de pentesting. - No accedas a sistemas sin autorización. El hecho de que un servicio esté expuesto en Shodan no te da derecho a conectarte a él, intentar credenciales por defecto, o explotar vulnerabilidades. Eso es delito en prácticamente todas las jurisdicciones.
- La información obtenida mediante Shodan debe usarse exclusivamente para:
- Assessments de seguridad autorizados (pentesting, red team, auditorías).
- Monitorización defensiva de infraestructura propia.
- Investigación académica o de threat intelligence.
- Respuesta a incidentes y análisis forense.
- No publiques, compartas ni vendas datos de exposición de terceros sin su consentimiento explícito. Incluso si los datos son públicos, la divulgación irresponsable puede causar daño y tiene implicaciones legales bajo leyes de protección de datos (GDPR, CCPA, LGPD).
- Si encuentras una exposición crítica en infraestructura ajena, el camino ético es la divulgación responsable: contacta al propietario (vía abuse contact del WHOIS o el ASN), documenta el hallazgo, y da un plazo razonable para la remediación antes de cualquier publicación.
Responsabilidades del lector:
El autor y el editor de esta guía no asumen ninguna responsabilidad por el uso indebido de las técnicas, queries o scripts aquí presentados. El lector es el único responsable de:
- Obtener las autorizaciones legales necesarias antes de realizar cualquier escaneo o prueba.
- Cumplir con las leyes locales, nacionales e internacionales aplicables.
- Usar esta información exclusivamente dentro del marco de su rol profesional y los acuerdos contractuales con sus clientes o empleadores.
Contexto profesional:
Esta guía asume que el lector es un profesional de la seguridad o un estudi
Shodan: OSINT de Infraestructura — Guía Premium de Maestría
Capítulo 1: Fundamentos y Setup Profesional
1.1 ¿Qué es Shodan? — El Motor de Búsqueda para Dispositivos
Shodan no indexa páginas web. Indexa banners de servicios expuestos a Internet: servidores web, bases de datos, cámaras IP, PLCs industriales, routers, impresoras, sistemas SCADA, refrigeradores inteligentes. Cada banner contiene información que el dispositivo revela al conectarse: versión de software, sistema operativo, puertos abiertos, cabeceras HTTP, credenciales por defecto, y a veces datos mucho más sensibles.
Definición técnica: Shodan es un motor de búsqueda que realiza escaneo pasivo y activo de la totalidad del espacio IPv4 público, recolectando banners de servicios en aproximadamente 200 puertos comunes, y almacenándolos en una base de datos consultable mediante una API REST y una interfaz web. Los crawlers de Shodan envían solicitudes TCP/UDP a direcciones IP aleatorias, capturan la respuesta inicial del servicio (el banner), y la indexan con metadatos: timestamp, geolocalización, ASN, organización, sistema operativo inferido, y más.
Historia y evolución: Creado en 2009 por John Matherly como un proyecto personal. En 2013 ganó notoriedad cuando investigadores lo usaron para exponer sistemas de control industrial conectados sin autenticación. Desde entonces, Shodan ha evolucionado hacia una plataforma empresarial con planes de suscripción, API, alertas en tiempo real, integración con herramientas de threat intelligence, y una base de datos histórica que permite ver cómo cambia la superficie de ataque de una organización a lo largo del tiempo.
Casos de uso reales en empresas:
- Red Teams: Mapeo de superficie de exposición externa de un objetivo antes de un pentest.
- Blue Teams / SOC: Monitorización continua de activos expuestos no autorizados (shadow IT).
- Threat Intelligence: Identificación de infraestructura de adversarios (C2, servidores de phishing) por fingerprints de banners.
- Cumplimiento normativo: Auditorías de exposición para PCI-DSS, ISO 27001, NIST CSF.
- Investigación académica: Estudios sobre la adopción de protocolos inseguros (Telnet, FTP anónimo) a escala global.
Comparación con alternativas:
| Herramienta | Alcance | Datos históricos | API | Precio | Enfoque | |-------------|---------|------------------|-----|--------|---------| | Shodan | IPv4 global, ~200 puertos | Sí (planes pagos) | REST, Streaming, CLI | Freemium ($69-$999/mes) | Banners de servicios | | Censys | IPv4 global, escaneos semanales | Sí | REST, BigQuery | Freemium | Certificados TLS, banners | | ZoomEye | IPv4 + IPv6, enfoque en China | Sí | REST | Freemium | Banners + vulnerabilidades | | BinaryEdge | IPv4, escaneo continuo | Sí | REST, torrents de datos | Freemium | Banners + análisis de torrents | | Onyphe | IPv4, datos enriquecidos | Sí | REST | Freemium | Threat intelligence | | FOFA | IPv4, enfoque en APAC | Sí | REST | Freemium | Banners + fingerprints |
Ventajas de Shodan:
- Cobertura de puertos más amplia que la mayoría de competidores.
- API madura con SDKs oficiales en Python, Ruby, Go.
- Integración nativa con Maltego, SpiderFoot, Recon-ng.
- Comunidad activa y gran cantidad de filtros de búsqueda documentados.
- Datos históricos accesibles (planes Small Business+).
Limitaciones:
- No escanea IPv6 de forma sistemática (solo bajo demanda).
- La frecuencia de re-escaneo depende del plan; en el plan gratuito los datos pueden tener semanas de antigüedad.
- No realiza escaneo de vulnerabilidades activo; solo reporta banners. Para correlación con CVEs se requiere integración externa o el módulo Shodan Monitor.
- La API tiene rate limits estrictos (1 query/segundo en plan Freelancer, 10 queries/segundo en plan Corporate).
1.2 Arquitectura y Componentes — Cómo Funciona por Dentro
Shodan se compone de cuatro capas principales:
[ Crawlers distribuidos ] --> [ Base de datos de banners ] --> [ Motor de búsqueda ] --> [ API / Interfaz Web ]
| | | |
Escaneo global Almacenamiento Indexación y filtros Consulta y alertas
de banners geo-tagged faceted search streaming
Crawlers (Shodan Scan Nodes): Servidores distribuidos geográficamente (US, EU, APAC) que realizan escaneos TCP SYN y UDP hacia IPs aleatorias. No completan el handshake TCP completo (half-open scan) para minimizar logs en el objetivo. Capturan el banner inicial y cierran la conexión con RST. Los puertos escaneados por defecto incluyen: 21 (FTP), 22 (SSH), 23 (Telnet), 25 (SMTP), 53 (DNS), 80/8080/443/8443 (HTTP/HTTPS), 110 (POP3), 143 (IMAP), 445 (SMB), 1433 (MSSQL), 1521 (Oracle), 3306 (MySQL), 3389 (RDP), 5432 (PostgreSQL), 5900 (VNC), 6379 (Redis), 9200 (Elasticsearch), 11211 (Memcached), 27017 (MongoDB), y muchos más. La lista completa se puede consultar en https://api.shodan.io/shodan/ports?key=TU_API_KEY.
Base de datos de banners: Almacena cada banner como un documento JSON con campos: ip_str, port, timestamp, data (banner raw), org, isp, asn, hostnames, location (lat/lon, city, country), os (inferido), domains, vulns (CVEs asociados si el plan lo incluye). Utiliza Elasticsearch internamente para búsquedas full-text y agregaciones.
Motor de búsqueda: Expone un lenguaje de consulta con filtros específicos: country:, org:, port:, product:, version:, os:, vuln:, before:, after:, net:, asn:, http.title:, http.component:, ssl.cert.subject.cn:, etc. Soporta operadores booleanos (AND, OR, NOT) y agrupación con paréntesis. Ejemplo: product:"Apache httpd" country:MX port:443 -vuln:CVE-2021-41773 busca servidores Apache en México en puerto 443 que NO tengan la vulnerabilidad CVE-2021-41773.
API REST: Endpoints principales:
/shodan/host/{ip}— Obtener todos los banners de una IP./shodan/host/search— Búsqueda por query string./shodan/host/count— Conteo de resultados por query./shodan/ports— Puertos escaneados por Shodan./shodan/protocols— Protocolos soportados./shodan/scan— Solicitar escaneo bajo demanda (requiere plan con créditos)./shodan/alert— Crear alertas de monitorización./dns/resolve— Resolución DNS./dns/reverse— Reverse DNS.
Flujo de trabajo típico de un analista:
- Definir el alcance: rangos de IP, ASN, dominios.
- Construir queries para identificar servicios expuestos.
- Usar la API para automatizar la recolección de banners.
- Parsear banners para extraer versiones, fingerprints, y posibles vulnerabilidades.
- Correlacionar con bases de datos de CVEs (NVD, Vulners).
- Generar reportes de exposición y recomendar remediación.
1.3 Instalación Paso a Paso — Shodan CLI y SDK Python
La herramienta principal para trabajo profesional es shodan-cli (interfaz de línea de comandos) y la librería Python shodan. Ambas requieren una API key, que se obtiene gratuitamente registrándose en https://account.shodan.io/register.
Requisitos del Sistema
- Hardware: Mínimo 512 MB RAM, 1 CPU. Recomendado 2 GB RAM para escaneos masivos con la API.
- SO: Linux (cualquier distribución moderna), Windows 10/11, macOS 11+, o Docker.
- Dependencias previas: Python 3.8+, pip3, git (opcional para clonar repositorios de exploits relacionados).
Obtención de API Key
- Regístrate en https://account.shodan.io/register.
- Verifica el email.
- Ve a https://account.shodan.io/ y copia la API Key (string de 32 caracteres).
- (Opcional) Actualiza a un plan pago para eliminar rate limits y acceder a datos históricos.
Instalación en Linux (Ubuntu/Debian)
## Actualizar repositorios e instalar dependencias
sudo apt update && sudo apt install -y python3 python3-pip git curl jq
## Instalar shodan CLI via pip (recomendado entorno virtual)
python3 -m venv ~/shodan-venv
source ~/shodan-venv/bin/activate
pip install shodan
## Verificar instalación
shodan version
## Output esperado: shodan 1.30.0 (o superior)
## Inicializar con tu API key
shodan init TU_API_KEY
## Output: Successfully initialized
## Probar conectividad
shodan info
## Muestra: plan, créditos de escaneo, rate limits, etc.
Resolución de dependencias: Si pip install shodan falla por falta de setuptools, ejecuta pip install --upgrade setuptools wheel. Si estás detrás de un proxy corporativo, usa pip install --proxy http://proxy:puerto shodan.
Post-instalación y paths: El binario shodan se instala en ~/.local/bin/shodan o dentro del virtualenv en ~/shodan-venv/bin/shodan. Añade al PATH si es necesario: echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc.
Instalación en Linux (RedHat/CentOS/Rocky)
## Instalar EPEL y dependencias
sudo dnf install -y epel-release
sudo dnf install -y python3 python3-pip git curl jq
## Crear virtualenv e instalar
python3 -m venv ~/shodan-venv
source ~/shodan-venv/bin/activate
pip install shodan
## Inicializar
shodan init TU_API_KEY
Diferencias con Debian: En RHEL 8+, python3-pip se instala desde AppStream. Si shodan no se encuentra, verifica que ~/.local/bin esté en PATH o usa la ruta completa del virtualenv.
Instalación en Windows
## Requisito: Python 3.8+ instalado desde python.org (marcar "Add Python to PATH")
## Abrir PowerShell como Administrador
## Verificar Python
python --version
## Instalar shodan
pip install shodan
## Inicializar
shodan init TU_API_KEY
## Verificar
shodan info
Variables de entorno en Windows: Si shodan no se reconoce, añade %USERPROFILE%\AppData\Local\Programs\Python\Python3XX\Scripts al PATH del sistema. Alternativamente, usa python -m shodan en lugar de shodan directamente.
PowerShell setup avanzado: Para automatizar, crea un perfil de PowerShell:
## Crear perfil si no existe
if (!(Test-Path $PROFILE)) { New-Item -Type File -Path $PROFILE -Force }
## Añadir alias y función
Add-Content $PROFILE @"
function Invoke-ShodanSearch {
param([string]$Query)
shodan search --fields ip_str,port,org,hostnames $Query
}
Set-Alias shodan-search Invoke-ShodanSearch
"@
Instalación en macOS
## Instalar Homebrew si no está presente
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
## Instalar Python 3
brew install python3
## Crear virtualenv e instalar shodan
python3 -m venv ~/shodan-venv
source ~/shodan-venv/bin/activate
pip install shodan
## Inicializar
shodan init TU_API_KEY
Troubleshooting M1/M2 (Apple Silicon): La librería shodan es puro Python, no tiene dependencias compiladas, por lo que funciona nativamente en ARM64 sin necesidad de Rosetta. Si pip falla con errores SSL, actualiza los certificados: /Applications/Python\ 3.x/Install\ Certificates.command.
Instalación con Docker
Dockerfile completo:
FROM python:3.11-slim
LABEL maintainer="Kungen Security Research"
LABEL description="Shodan CLI container for OSINT operations"
## Instalar dependencias del sistema
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
jq \
dnsutils \
&& rm -rf /var/lib/apt/lists/*
## Instalar shodan CLI
RUN pip install --no-cache-dir shodan
## Crear directorio de trabajo
WORKDIR /workspace
## Script de entrada para inicializar API key desde variable de entorno
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["shodan", "info"]
entrypoint.sh:
#!/bin/bash
if [ -n "$SHODAN_API_KEY" ]; then
shodan init "$SHODAN_API_KEY"
else
echo "ERROR: SHODAN_API_KEY environment variable not set."
exit 1
fi
exec "$@"
docker-compose.yml:
version: '3.8'
services:
shodan:
build: .
environment:
- SHODAN_API_KEY=${SHODAN_API_KEY}
volumes:
- ./data:/workspace/data # Para persistir resultados
- ./scripts:/workspace/scripts
stdin_open: true
tty: true
Build y run:
## Construir imagen
docker build -t shodan-cli .
## Ejecutar con API key
export SHODAN_API_KEY=TU_API_KEY
docker run -it --rm -e SHODAN_API_KEY shodan-cli shodan search "apache country:MX"
## Usar docker-compose
echo "SHODAN_API_KEY=TU_API_KEY" > .env
docker-compose run --rm shodan shodan search "nginx port:443"
Volume mounts: El directorio ./data se monta en /workspace/data para guardar resultados de escaneos en formato JSON. El directorio ./scripts permite ejecutar scripts Python personalizados que usen la API.
Verificación de Instalación
## 1. Verificar versión
shodan version
## 2. Verificar conectividad y plan
shodan info
## Output esperado:
## Query credits: 100 (plan Freelancer)
## Scan credits: 100
## Monitored IPs: 16
## Plan: dev (o freelancer, small business, etc.)
## 3. Prueba básica de búsqueda
shodan search --limit 5 "apache country:
---
## 🔍 Shodan: OSINT de Infraestructura — Guía Premium de Maestría
## Capítulo 2: Técnicas Avanzadas
---
### 2.1 Comandos Esenciales
Dominar la CLI de Shodan es lo que separa al script kiddie del operador profesional. La terminal te da velocidad, automatización y la capacidad de encadenar consultas sin tocar la interfaz web. Aquí tienes los 20 comandos que usarás a diario, con sintaxis completa, parámetros y el output real que obtendrás.
**1. Búsqueda básica con filtros combinados**
```bash
shodan search --fields ip_str,port,org,hostnames 'ssl:"Target Corp" port:443 country:MX'
Output real:
104.18.25.142 443 Cloudflare, Inc. targetcorp.com
104.18.24.142 443 Cloudflare, Inc. targetcorp.com
El flag --fields limita la salida a las columnas que necesitas, evitando ruido. ssl: busca en el certificado SSL, port: filtra por puerto, country: por código ISO de país.
2. Conteo de resultados sin descargar todo
shodan count 'product:"Apache httpd" country:DE'
Output: 124032 — ideal para dimensionar la superficie de ataque antes de lanzar un scan masivo.
3. Descarga masiva en formato JSON para procesamiento posterior
shodan download --limit 1000 apache_de.json 'product:"Apache httpd" country:DE'
Esto crea un archivo comprimido con los banners completos. Luego lo procesas con shodan parse o con tu script en Python.
4. Parseo del archivo descargado para extraer campos específicos
shodan parse --fields ip_str,port,org,data apache_de.json.gz
Output: muestra cada IP con su banner crudo. Puedes redirigir a un CSV: > apache_de.csv.
5. Búsqueda por organización (ISP o empresa)
shodan search org:"Microsoft Corporation" port:3389
Devuelve todas las IPs de Microsoft con RDP expuesto. org es el campo org del banner.
6. Búsqueda por sistema operativo detectado
shodan search os:"Windows 7" port:445
Encuentra máquinas con SMB abierto y OS Windows 7. El campo os proviene del fingerprinting pasivo de Shodan.
7. Búsqueda por banner específico (raw data)
shodan search --fields ip_str,data 'data:"220 ProFTPD" port:21'
Busca la cadena exacta dentro del banner de bienvenida FTP. Útil para versiones concretas de servicios.
8. Búsqueda por vulnerabilidad (tag de Shodan)
shodan search vuln:CVE-2019-0708
Shodan etiqueta automáticamente hosts con ciertas CVEs conocidas. Esto devuelve IPs potencialmente vulnerables a BlueKeep.
9. Búsqueda por ASN (Autonomous System Number)
shodan search asn:AS15169
AS15169 es Google. Obtienes toda la infraestructura visible de Google. Ideal para mapear el perímetro de una organización grande.
10. Búsqueda por rango CIDR
shodan search net:192.168.0.0/16
Aunque Shodan no escanea redes privadas, si algún dispositivo de ese rango está expuesto por mala configuración, aparecerá. En la práctica se usa con rangos públicos: net:104.18.0.0/20.
11. Búsqueda por ciudad
shodan search city:"Guadalajara" port:27017
MongoDB en Guadalajara. El campo city se basa en geolocalización de la IP.
12. Búsqueda por hostname
shodan search hostname:*.tesla.com
Todos los subdominios de tesla.com que Shodan ha indexado.
13. Búsqueda por producto específico
shodan search product:"MySQL" version:5.5
MySQL 5.5 sin parchear. product es el servicio identificado, version la versión exacta.
14. Búsqueda de dispositivos IoT por tipo
shodan search 'product:"Webcam" country:US'
Cámaras web en Estados Unidos. Puedes refinar con has_screenshot:true para obtener las que tienen captura de pantalla.
15. Búsqueda de servicios industriales (ICS)
shodan search 'port:502 product:"Modbus"'
Modbus sobre TCP es el protocolo de control industrial. Esto encuentra PLCs y RTUs expuestos.
16. Búsqueda de bases de datos sin autenticación
shodan search 'product:"MongoDB" -auth'
El filtro -auth busca banners que indiquen que no se requiere autenticación. Similar para Redis: product:"Redis" -auth.
17. Búsqueda de paneles de administración web
shodan search 'http.title:"phpMyAdmin" country:MX'
Encuentra phpMyAdmin expuestos en México. http.title busca en el título HTML.
18. Búsqueda de certificados SSL expirados o autofirmados
shodan search 'ssl.cert.expired:true port:443'
Certificados expirados indican negligencia y posiblemente otros fallos de seguridad.
19. Búsqueda de servicios con banner que contiene "default password"
shodan search 'data:"default password" port:23'
Encuentra dispositivos que aún muestran contraseñas por defecto en el banner de Telnet.
20. Streaming en tiempo real (API Firehose)
shodan stream --dataporten --fields ip_str,port,data
Requiere suscripción enterprise. Muestra en tiempo real los banners que Shodan recolecta. Ideal para threat hunting.
Flags universales importantes:
--limit N: máximo de resultados (default 100, máximo 1000 sin API key enterprise).--fields: columnas a mostrar (ip_str, port, org, hostnames, data, etc.).--separator: cambia el separador de campos (default tab, usar,para CSV).--color: activa/desactiva colores en terminal.
Best practices:
- Siempre usa
--fieldspara no saturar la terminal con banners de 2KB. - Para descargas grandes, usa
downloady luegoparse; es más rápido y no consume créditos de consulta repetidamente. - Combina filtros con operadores booleanos:
+(AND),-(NOT), y espacios (OR implícito). Ejemplo:'apache +ssl -country:CN'.
2.2 Automatización con Scripts
La automatización convierte Shodan en un motor de inteligencia continuo. Aquí tienes scripts completos, listos para ejecutar, que cubren monitoreo de activos, detección de nuevas exposiciones y generación de reportes.
Script Bash: Monitor de nuevos hosts por organización
Este script consulta Shodan diariamente, compara con un baseline y alerta si aparecen nuevos servicios expuestos para una organización específica.
#!/bin/bash
## shodan-monitor.sh - Alerta sobre nuevos hosts de una organización
## Uso: ./shodan-monitor.sh "Microsoft Corporation"
## Requiere: shodan CLI inicializada (shodan init <API_KEY>)
ORG="$1"
BASELINE_FILE="baseline_${ORG// /_}.txt"
NEW_HOSTS_FILE="new_hosts_$(date +%Y%m%d).txt"
LOG_FILE="shodan_monitor.log"
echo "[$(date)] Iniciando monitoreo para: $ORG" | tee -a "$LOG_FILE"
## Obtener lista actual de IPs y puertos únicos
shodan search --fields ip_str,port --limit 1000 org:"$ORG" | sort -u > current.txt
## Si no existe baseline, crear uno
if [ ! -f "$BASELINE_FILE" ]; then
cp current.txt "$BASELINE_FILE"
echo "[$(date)] Baseline creado con $(wc -l < "$BASELINE_FILE") entradas." | tee -a "$LOG_FILE"
exit 0
fi
## Comparar: hosts en current.txt que no están en baseline
comm -13 <(sort "$BASELINE_FILE") <(sort current.txt) > "$NEW_HOSTS_FILE"
NEW_COUNT=$(wc -l < "$NEW_HOSTS_FILE")
if [ "$NEW_COUNT" -gt 0 ]; then
echo "[$(date)] ALERTA: $NEW_COUNT nuevos hosts detectados:" | tee -a "$LOG_FILE"
cat "$NEW_HOSTS_FILE" | tee -a "$LOG_FILE"
# Enviar notificación (ejemplo con curl a un webhook de Slack)
# curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"Nuevos hosts en $ORG: $NEW_COUNT\"}" https://hooks.slack.com/services/XXX
else
echo "[$(date)] Sin cambios." | tee -a "$LOG_FILE"
fi
## Actualizar baseline para la próxima ejecución
cp current.txt "$BASELINE_FILE"
Programación con cron: Para ejecutarlo cada 6 horas:
0 */6 * * * /ruta/a/shodan-monitor.sh "Microsoft Corporation"
Script Python: Enriquecimiento de IPs con Shodan y exportación a CSV
Este script toma una lista de IPs (por ejemplo, de un scan de Nmap) y consulta Shodan para obtener información de cada una: puertos abiertos, organización, sistema operativo y vulnerabilidades. Genera un CSV listo para análisis.
#!/usr/bin/env python3
"""
shodan_enrich.py - Enriquece una lista de IPs usando la API de Shodan
Uso: cat ips.txt | python3 shodan_enrich.py > enriched.csv
Requiere: pip install shodan
"""
import sys
import csv
import shodan
API_KEY = "TU_API_KEY" # Reemplazar con tu key
api = shodan.Shodan(API_KEY)
## Cabecera del CSV
writer = csv.writer(sys.stdout)
writer.writerow(["IP", "Puertos", "Organización", "OS", "Vulnerabilidades", "Hostnames"])
for line in sys.stdin:
ip = line.strip()
if not ip:
continue
try:
host = api.host(ip)
ports = ",".join(str(p['port']) for p in host.get('ports', []))
org = host.get('org', 'N/A')
os = host.get('os', 'N/A')
vulns = ",".join(host.get('vulns', []))
hostnames = ",".join(host.get('hostnames', []))
writer.writerow([ip, ports, org, os, vulns, hostnames])
except shodan.APIError as e:
# IP no indexada o error de API
writer.writerow([ip, "ERROR", str(e), "", "", ""])
Output real del CSV:
IP,Puertos,Organización,OS,Vulnerabilidades,Hostnames
104.18.25.142,"80,443,8080",Cloudflare Inc.,N/A,,targetcorp.com
8.8.8.8,"53,443",Google LLC,N/A,,dns.google
Script Python: Búsqueda programática y generación de reporte HTML
Este script busca servicios expuestos de una lista de productos, genera un reporte HTML con tablas y estadísticas, y lo envía por correo.
#!/usr/bin/env python3
"""
shodan_report.py - Genera reporte HTML de exposiciones por producto
"""
import shodan
from datetime import datetime
API_KEY = "TU_API_KEY"
api = shodan.Shodan(API_KEY)
PRODUCTS = ["Apache httpd", "nginx", "MySQL", "MongoDB", "Redis"]
REPORT_FILE = f"shodan_report_{datetime.now().strftime('%Y%m%d')}.html"
html = f"""<html><head><title>Shodan Exposure Report</title></head><body>
<h1>Reporte de Exposición - {datetime.now().strftime('%Y-%m-%d')}</h1>
<table border='1'>
<tr><th>Producto</th><th>Total</th><th>Top País</th><th>Top Org</th></tr>"""
for prod in PRODUCTS:
try:
count = api.count(f'product:"{prod}"')
# Obtener top país
facets = api.count(f'product:"{prod}"', facets='country:1')
top_country = list(facets['facets']['country'][0].items())[0] if facets.get('facets') else ('N/A',0)
# Top organización
facets_org = api.count(f'product:"{prod}"', facets='org:1')
top_org = list(facets_org['facets']['org'][0].items())[0] if facets_org.get('facets') else ('N/A',0)
html += f"<tr><td>{prod}</td><td>{count}</td><td>{top_country[0]} ({top_country[1]})</td><td>{top_org[0]} ({top_org[1]})</td></tr>"
except Exception as e:
html += f"<tr><td>{prod}</td><td colspan='3'>Error: {e}</td></tr>"
html += "</table></body></html>"
with open(REPORT_FILE, 'w') as f:
f.write(html)
print(f"Reporte generado: {REPORT_FILE}")
## Para envío por correo usar smtplib (omitido por brevedad)
Logging profesional: Todos los scripts deben loguear a un archivo con timestamps. Implementa una función helper:
import logging
logging.basicConfig(filename='shodan_automation.log', level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s')
logging.info("Búsqueda iniciada para producto: Apache")
Best practices de automatización:
- Usa variables de entorno para la API key, nunca hardcodees en scripts que compartas.
- Implementa manejo de rate limits: la API gratuita permite 1 query/segundo; usa
time.sleep(1)entre llamadas en bucles. - Para descargas masivas, prefiere el método
downloadde la CLI y luego procesa con Python; es más eficiente que consultar host por host. - Almacena resultados en bases de datos SQLite para consultas históricas y tendencias.
2.3 Integración con Otras Herramientas
Shodan no es una isla. Su verdadero poder se libera cuando lo integras en tu pipeline de pentesting, threat intelligence y DevSecOps. Aquí te muestro cómo encadenarlo con Nmap, Burp Suite, Metasploit y sistemas CI/CD.
Pipeline Shodan → Nmap
Shodan: OSINT de Infraestructura — Guía Premium de Maestría
Contenido Premium
Los siguientes capítulos están disponibles en la versión completa:
- Capítulo 3: Análisis de Casos Reales
- Capítulo 4: Ejercicios Prácticos Guiados
- Capítulo 5: Troubleshooting y FAQs
- Capítulo 6: Recursos y Certificaciones
- Scripts completos y plantillas
- Soporte técnico incluido
Contenido bloqueado
Compra esta guía para acceder al contenido completo
Herramientas
Estadísticas
Compras
0
Duración
8-10 horas de lectura práctica
Nivel
Intermedio
Autor
guide-generator-worker
Versión 1.0