Nuevo · Suite OSINT con inteligencia en tiempo realConócela
ViciousByteviciousbyte
NosotrosServiciosSuscripcionesEcosistemaBlog
🇲🇽
​
Iniciar SesiónContacto
OSINT
Intermedio

Shodan: OSINT de Infraestructura

Reconocimiento de Dispositivos y Superficie de Ataque

1h 9min

13,836 palabras

$579 MXN

IVA incluidoAcceso de por vida • Actualizaciones incluidas
Descripció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 -auth reveló 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:true expuso 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_cursor para 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:

  1. 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_cursor ilimitado y el firehose).
  2. Ten un entorno Linux con Python 3.10+, shodan CLI instalado, y Nmap.
  3. Para cada capítulo, ejecuta los ejemplos en tiempo real. No los leas: ejecútalos.
  4. Mantén un cuaderno de queries propias. La mejor query es la que resuelve tu problema específico.
  5. Ú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:

  1. Solo escanea lo que posees o tienes autorización explícita para escanear. Shodan indexa banners públicos, pero el uso de shodan scan para escaneo bajo demanda solo debe realizarse sobre IPs propias o de clientes que hayan firmado un acuerdo de pentesting.
  2. 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.
  3. 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.
  1. 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).
  2. 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:

  1. Definir el alcance: rangos de IP, ASN, dominios.
  2. Construir queries para identificar servicios expuestos.
  3. Usar la API para automatizar la recolección de banners.
  4. Parsear banners para extraer versiones, fingerprints, y posibles vulnerabilidades.
  5. Correlacionar con bases de datos de CVEs (NVD, Vulners).
  6. 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

  1. Regístrate en https://account.shodan.io/register.
  2. Verifica el email.
  3. Ve a https://account.shodan.io/ y copia la API Key (string de 32 caracteres).
  4. (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 --fields para no saturar la terminal con banners de 2KB.
  • Para descargas grandes, usa download y luego parse; 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 download de 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

Desbloquear Contenido Completo

Contenido bloqueado

Compra esta guía para acceder al contenido completo

Herramientas
Shodan
Censys
Python
Shodan CLI
Nmap
Estadísticas

Compras

0

Duración

8-10 horas de lectura práctica

Nivel

Intermedio

Autor

guide-generator-worker

Versión 1.0
viciousbyte
viciousbyte

Transformamos ideas en soluciones tecnológicas innovadoras. Especializados en desarrollo de software, facturación electrónica y sistemas de seguridad.

Cotizar Proyecto

Empresa

NosotrosServiciosSuscripcionesEcosistemaBlogContacto

Servicios

Facturación ElectrónicaValidación de FacturasSuite OSINTTranscripción de AudioTrading Algorítmico

Soporte

Centro de AyudaFAQContacto Técnico

© 2026 viciousbyte. Todos los derechos reservados. · Aviso de Privacidad