shodan - API exploit

Shodan Overview

Shodan es un servicio web que nos permite obtener información de los dispositivos que se conectan a internet. Este portal escanea periódicamente todo el rango de redes públicas (internet) y clasifica la información para que esta pueda ser consumida fácilmente.

En el mundo actual cada vez es más habitual que cualquier dispositivo disponga de conexión a internet, lavadoras, proyectores, impresoras, … normalmente para poder añadirle el sufijo smart. Con ello los fabricantes son capaces de proporcionarnos nuevos servicios que nos pueden ayudar en nuestro día a día. Estos servicios pueden ser muy útiles, pero si no somos cuidadosos a la hora de configurarlos, shodan, entre otros, los añadirá a su base de datos.

Es muy interesante ya que nos proporciona información de ip’s, dominios o dispositivos, sin la necesidad de tener que escanearlos nosotros mismos, siendo muy útil en las primeras fases de análisis en una auditoría.

También dispone de varias categorías divertidas, como dispositivos con passwords por defecto, cámaras web o de seguridad abiertas, video games, etc … que para días en los que uno se aburre puede ser entretenido explorar.

Una de las opciones que me parece más interesante es la posibilidad de hacer uso de una API, que nos permite mediante programación trabajar con la información del portal. Es la parte en la que centrare el post ya que su potencial es increíble. Con ella, como veremos, podemos maximizar la utilidad de nuestros pequeños scripts.

Para ello propondré dos ejemplos de vulnerabilidades de hace unos años y que ya han sido resueltas por los fabricantes. No obstante, veremos que aún encontraremos numerosos dispositivos sin actualizar publicados en internet.

IMPORTANTE, los dos scripts que detallaremos a continuación se exponen solo como ejemplo que ilustre el potencial de la API de shodan. Se han creado con un fin didáctico y no me hago responsable del mal uso que se les pueda dar.

Plex media center

Plex es un media center de uso bastante extendido, que permite a los usuarios: ver, ordenar y compartir contenido multimedia.

Hace ya un tiempo, leí un artículo referente a la vulnerabilidad CVE-2014-9181 de este media center. En él se explicaba el procedimiento de como mediante urls no protegidas se podía obtener un token que nos permitía posteriormente acceder a todo el contenido del media center. El proceso era tedioso y mecánico, por lo que ideal para crear un script que lo realizara automáticamente y mediante el uso de la API de shodan obtener los plex publicados en internet y crear una playlist con todas las películas que este encuentra.

Lo podéis descargar de mi github plex-CVE-2014-9181.py, es necesario obtener una API key, que se puede obtener de forma gratuita registrándose en la página de shodan, y ejecutarlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
~:$ python3 plex-CVE-2014-9181.py  

[+] getting plex servers from shodan...

[+] Results found: 592

[+] Trying to get the tokens

[+] Tokens found: 95

[+] Trying to get the movie sections

[+] printing the tokens and movie sections

[+] Finding titles

[+] Films found: 4818

[+] Creating a new m3u file

En este caso está configurado para obtener películas en español y con una pequeña modificación podemos obtener películas en otros idiomas o eliminar el filtro editando la línea 58 del script.

1
sections = soup.findAll('Directory', {'type': 'movie','language':'es'}) 

Cada vez que lo ejecutemos puede que nos proporcione resultados diferentes, internet esta en constante cambio.

Para ver el resultado tendremos que abrir la playlist resultante con nuestro reproductor de video preferido.

Solo resaltar que, del mismo modo que estamos obteniendo un listado de películas, que alguien ha descargado, seguramente fraudulentamente, se podría dar el caso de usuarios que estuvieran publicando también videos personales o fotografías y que sin saberlo lo estén compartiendo con todo el mundo.

Mikrotik

Mikrotik es un fabricante de dispositivos de red, routers, switch … económico y con buenas prestaciones, muy extendido en campings y hoteles.

En el 2018 fue descubierta una vulnerabilidad CVE-2018-14847 que permitía mediante el uso de una técnica de Path Traversal la obtención de las credenciales de administración.

Igual que en el caso anterior, con el exploit obtenido de exploit-db y el uso de la API de shodan obtenemos un script que verifica los routers expuestos en internet escaneados por shodan, y nos proporciona las credenciales de los mismos.

Hay que decir que, para que se pueda explotar la vulnerabilidad, es necesario que el puerto 8291, que es un puerto administrativo esté publicado, lo que desde mi punto de vista es una mala praxis.

Lo podéis descargar desde mi github mikrotik-CVE-2018-14847.py, será necesario también, como en el caso anterior, usar la API key de shodan y ejecutarlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
~:$ python3 mikrotik-CVE-2018-14847.py  

[+] getting mikrotik routers from shodan...

[+] Results found: 1464945

[+] Lets try top get the creds

checking router with ip: xxx.xxx.xxx.xxx

xxx.xxx.xxx.xxx

User: admin

Pass: xxxxxx

En este caso, obtenemos el control de las comunicaciones de los equipos vulnerables, lo que es un grave riesgo para sus propietarios, dado que con ello es posible interceptar todas sus comunicaciones, tanto las de internet como las locales.

Si analizamos los resultados veremos que no somos los primeros en obtener las credenciales y que muchos de ellos están siendo usados por delincuentes para minar criptomonedas, algo curioso de analizar para ver cómo trabajan.

Conclusiones

Después de los ejemplos mostrados creo que queda patente el potencial de shodan, para comprometer sistemas de forma masiva con la información que nos provee.

Es también relevante que ocho y cuatro años respectivamente, después de que las vulnerabilidades han sido resultas, existan tantos dispositivos sin actualizar expuestos en internet. Algo no estamos haciendo bien, fabricantes y profesionales de la seguridad de la información. Tenemos que concienciar a usuarios y empresas de la importancia de mantener sus sistemas protegidos.

Es necesario tomar medidas, mantener los sistemas actualizados, publicar únicamente los puertos necesarios para los servicios que estemos ofreciendo y protegerlos, como mínimo contra los ataques ya conocidos. También puede ser interesante hacerse invisible, bloqueando los robots que escanean nuestros servicios constantemente.

Hasta aquí el post de hoy. Espero haya sido de vuestro interés.
No dudéis en contactar mediante el formulario para hacerme llegar vuestros comentarios.