← Volver al inicio
Shodan OSINT Reconocimiento IoT CVE Pasivo
Básico

Shodan: OSINT y Reconocimiento Pasivo

05/09/2024

Shodan es el motor de búsqueda de dispositivos conectados a Internet. Indexa banners de servicios, versiones de software y metadatos de millones de hosts globalmente. Es la herramienta más potente de reconocimiento pasivo: no enviamos ningún paquete al objetivo.

1. Configuración de la CLI de Shodan

# Instalar la CLI:
pip3 install shodan

# Autenticar con tu API key (requiere cuenta gratuita o de pago):
shodan init TU_API_KEY

# Ver información de tu cuenta:
shodan info

# Ayuda de comandos:
shodan --help

2. Búsquedas básicas por web

# Buscar por banner de servicio:
apache
nginx 1.18
IIS/10.0

# Buscar por país:
country:ES apache
country:US "webcam"

# Buscar por ciudad:
city:"Madrid" port:22
city:"Barcelona" product:MySQL

# Buscar por organización/ASN:
org:"Telefonica"
org:"Amazon" port:3389

# Buscar por rango de red/CIDR:
net:192.168.0.0/24
net:203.0.113.0/24

# Buscar por puerto específico:
port:8080 product:Tomcat
port:27017             # MongoDB expuesto
port:9200              # Elasticsearch expuesto
port:6379              # Redis sin autenticación

3. Filtros avanzados de Shodan

# CVE específica en producción:
vuln:CVE-2021-44228    # Log4Shell — servidores afectados en todo el mundo
vuln:CVE-2019-19781    # Citrix ADC (Shitrix)
vuln:CVE-2017-0144     # EternalBlue (MS17-010)

# Producto + versión:
product:OpenSSH version:7.4
product:"Apache httpd" version:2.4.49   # Apache Path Traversal CVE-2021-41773

# Sistemas de control industrial (ICS/SCADA):
product:Siemens
"Modbus" port:502
"SCADA" port:102

# Cámaras y dispositivos IoT:
"Server: IP Webcam Server"
"webcamXP"
product:"Hikvision IP Camera"
"GoAhead-Webs" port:80

# Paneles de administración expuestos:
http.title:"phpMyAdmin"
http.title:"Grafana"
http.title:"Kibana"
http.title:"Jenkins"
http.title:"Admin Panel"

# Certificados SSL de un dominio:
ssl:"objetivo.com"
ssl.cert.subject.cn:"*.objetivo.com"

4. Uso de la CLI de Shodan

# Búsqueda básica:
shodan search "apache 2.4.49"

# Contar resultados sin mostrarlos:
shodan count "port:27017 MongoDB"

# Buscar y mostrar solo IPs:
shodan search --fields ip_str "port:6379 -auth" | awk '{print $1}'

# Buscar hosts de una organización:
shodan search --fields ip_str,port,org "org:Telefonica" 

# Consultar información de una IP:
shodan host 1.2.3.4

# Monitorización de alertas (plan pago):
shodan alert create "Mi empresa" 203.0.113.0/24
shodan alert list

5. Shodan + Python API

import shodan
import json

API_KEY = "TU_API_KEY"
api = shodan.Shodan(API_KEY)

# Buscar servicios MongoDB expuestos en España:
try:
    results = api.search('port:27017 country:ES')
    print(f'Total resultados: {results["total"]}')
    
    for r in results['matches']:
        print(f"IP: {r['ip_str']}")
        print(f"Puerto: {r['port']}")
        print(f"Org: {r.get('org', 'N/A')}")
        print(f"Versión: {r.get('version', 'N/A')}")
        print("---")
        
except shodan.APIError as e:
    print(f'Error: {e}')

# Obtener información completa de un host:
host = api.host("1.2.3.4")
print(json.dumps(host, indent=2, default=str))

6. Búsquedas combinadas para pentesting

# Paneles de login de VPN expuestos:
http.title:"Pulse Connect Secure"
http.title:"GlobalProtect"
http.title:"Cisco AnyConnect"

# Dispositivos de red con credenciales por defecto:
"default password" http.title:"Router"
product:"MikroTik" port:8291

# Bases de datos sin autenticación:
product:CouchDB port:5984
"Elasticsearch" port:9200 country:ES

# Servidores con versiones vulnerables antiguas:
product:"Apache httpd" version:"2.2"
product:OpenSSL version:1.0

# RDP expuesto:
port:3389 os:"Windows Server 2008"

# Panels de control industrial en España:
country:ES port:102 "Siemens"

7. Dorking con Google + Shodan combinados

ObjetivoFiltro Shodan
MongoDB sin authport:27017 -"requires auth"
Redis sin authport:6379 "redis_version" -"requirepass"
Elasticsearch abiertoport:9200 json country:ES
Log4Shell vulnerablevuln:CVE-2021-44228
Cámaras IPproduct:"Hikvision" port:80
Jenkins sin authhttp.title:"Dashboard [Jenkins]" -"Authentication"
Grafana expuestohttp.title:"Grafana" country:ES
phpMyAdminhttp.title:"phpMyAdmin" country:ES