
Descubriendo Shodan.io
El buscador para el IoT (Internet de las cosas). Pero , ¿Qué es eso del Internet de las cosas?
El Internet de las cosas
Es un concepto relativamente reciente que describe la interconexión digital de objetos cotidianos con Internet.
El concepto fue propuesto por primera vez por Kevin Ashton en 1999 en el MIT. ¿Y qué hay en el internet de las cosas?
Shodan.io
Si entramos directamente en el apartado de Explorar veremos las categorías destacadas de Shodan y nos encontramos con lo siguiente:
- Sistemas de control industrial
- Bases de datos
- Videojuegos
En las columnas de la derecha nos encontramos con las búsquedas más votadas y las más recientes.

Explorando algunas categorías: (Sistemas de control industrial)
Sus siglas en inglés son ICS (Industrial Control System) pero ¿qué son exactamente? Pues tal y como shodan nos dice los ICS son ordenadores que controlan el mundo que te rodea. Son máquinas responsables de controlar cosas como el aire acondicionado de tu oficina, las turbinas de una planta de energía, la iluminación en un teatro o robots en una fábrica, y generalmente no suelen necesitar la interacción de un ser humano para comunicarse a través de internet. Aquí os dejo unos enlaces de Wikipedia que explican los términos mas comunes utilizados en éstos sistemas:
Términos mas comunes
- ICS (Sistema de control industrial)
- SCADA (Control de supervisión y adquisición de datos)
- PLC (Controlador lógico programable)
- DCS (Sistema de control distribuido)
- RTU (Unidad terminal remota)
Protocolos
Los siguientes protocolos son algunos de los idiomas que utilizan los sistemas de control industrial para comunicarse a través de Internet. Muchos de ellos fueron desarrollados antes de que Internet se convirtiera en algo muy utilizado, por lo que los dispositivos ICS accesibles por Internet no siempre requieren autenticación — ¡no es parte del protocolo!
Algunos de ellos son: Modbus, Siemens, DNP3, Niagara Fox Protocol, BACnet, EtherNet/IP, GE-RTP, OMRON FINS, Crimson v3, Codesys, IEC 60870–5–104, ProConOS.
Aunque esa puede ser una de las principales utilidades de la herramienta, si tu servidor o dispositivo utiliza alguno de éstos protocolos y está conectado a internet aparecerá en Shodan,en cuanto el Spider del Radar ICS lo detecte, y con sus herramientas podrás auditar la configuración y seguridad del mismo, consultando qué información está disponible y cual no y ajustando luego dichas configuraciones en tu máquina.
Su creador John Matherly se define a si mismo en su biografía de Twitter como cartógrafo de internet.
La API de Shodan.io
Shodan dispone de una serie de librerías de programación en diversos lenguajes mediante los cuales se pueden desarrollar aplicaciones que consuman los datos disponibles.
Así como de una consola que podemos descargar en éste enlace en el cual nos indica también los pasos a seguir para una correcta instalación.
Una vez dentro de la consola existen diversos comandos que debemos conocer para hacer buen uso de ésta herramienta, veamos cuales son los mas importantes:
La interfaz de línea de comandos
count:
Devuelve el número de elementos de una consulta de búsqueda.
Ejemplo:
$ Shodan count microsoft iis 6.0
5310594download:
Con éste comando podemos descargar en formato JSON cada uno de los resultados de una búsqueda, y nos arrojará cada Banner en una línea.
Éste comando resulta imprescindible para procesar los datos mas adelante con el comando PARSE y realizar operaciones con los datos.
Como la paginación a través de los resultados consume créditos de consulta, tiene sentido siempre descargar las búsquedas que estás haciendo, para no tener que utilizar créditos en una búsqueda que hiciste en el pasado.

Éste sería un ejemplo de la información que puede ofrecer el Banner de un servidor:
{
"Timestamp": "2014-01-16T08: 37: 40.081917",
"Hostnames": [
"99-46-189-78.lightspeed.tukrga.sbcglobal.net"
],
"Org": "AT & T U-verse",
"Guid": "1664007502: 75a821e2-7e89-11e3-8080-808080808080",
"Datos": "NTP \ nxxx.xxx.xxx.xxx: 7546 \ n68.94.157.2: 123 \ n68.94.156.17: 123",
"Puerto": 123,
"Isp": "AT & T U-verse",
"Asn": "AS7018",
"ubicación": {
"Country_code3": "Estados Unidos",
"Ciudad": "Atlanta",
"Código postal": "30328",
"Longitud": -84.3972,
"Country_code": "US",
"Latitud": 33.93350000000001,
"Country_name": "Estados Unidos",
"Area_code": 404,
"Dma_code": 524,
"Region_code": null
},
"Ip": 1664007502,
"Dominios": [
"Sbcglobal.net"
],
"Ip_str": "99.46.189.78",
"Os": null,
"Opts": {
"Raw": "\\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \ X00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x01G \\ x06 \\ xa7 \\ x8ec. \\ xbdN \\ x00 \\ x00 \\ x00 \\ x01 \\ x1dz \\ x07 \\ x02 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ X00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \ \ X00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \ \\ x00 \\ x00 \\ x00 \\ x00 \\ x00XD ^ \\ x9d \\ x02c. \\ xbdN \\ x00 \\ x00 \\ x00 \\ x01 \\ x00 {\\ x04 \\ x04 \\ X00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \ \ X00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \ \ x00 \\ x00 \\ x00 \ X00 \\ x00 \\ x00YD ^ \\ x9c \\ x11c. \\ xbdN \\ x00 \\ x00 \\ x00 \\ x01 \\ x00 {\\ x04 \\ x04 \\ x00 \\ x00 \\ x00 \ \ X00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ X00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 ",
"Ntp": {
"Más": false
}
}
}host:
El comando host nos ofrece toda la información relativa a la máquina en cuestion que estemos analizando, cómo y dónde se encuentra, que puertos están abiertos, que organización posee la direción IP, etc.
Por ejemplo:
$ shodan host 189.201.128.250 Ésta consulta nos devolvería algo así:

search:
El comando buscar nos permite en Shodan desde la línea de comandos y nos muestra los resultados de una forma amigable. De forma predeterminada mostrará la dirección IP, el puerto, los nombres de host y datos de la máquina. También podemos personalizar la salida de los campos con el modificador fields.
Ejemplo:
Para buscar “Microsoft ISS 6.0” e imprimir su IP, puerto, organización, nombre de host utilizaríamos el siguiente comando:
$ Shodan search --fields ip_str, puerto, org, hostnames microsoft iis 6.0Y el resultado sería algo así:

Obviamente todo ésto y mucho mas está disponible en la web de Shodan (en inglés) así como vídeos explicativos usando la consola de comandos que pueden resultar muy instructivos.
Los programadores tienen a su disposición las bibliotecas que facilitan el acceso a la API de Shodan en los lenguajes de programación mas comunes, como son: Python, Rubi, PHP, C#, Go, Haskell, Java, Node.js,Pearl, PowerShell y Rust así como toda la documentación necesaria para construir sus aplicaciones.
Shodan también dispone de un servicio de pago o entrerprise access para proyectos grandes o empresas que se dediquen al negocio con éstos datos o quieran construir productos basados en ellos.
Obviamente el mercado mundial del IoT se está haciendo cada vez mas grande, tanto que algunas estadísticas como las de la empresa Gartner estiman que para 2020 habrá mas de 25 millones de “cosas” conectadas a internet, y es que, tal y como cita el artículo, “Usos del IoT que antes eran impracticables, ahora se están volviendo cada vez mas prácticos.” por eso empresas como Shodan apuestan por los Crawlers que exploran el ciberespacio y la auditoría de éstos sistemas cada vez mas numerosos. Pudiendo realizar importantes estudios de mercado y estadísticas diarias que optimicen las estrategias y las líneas de negocio de las compañías, así como su seguridad y privacidad.
