SHODAN: Motor de búsqueda para encontrar dispositivos conectados a internet (Guía de uso y desarrollo 101)

0
7493
views

Shodan es un motor de búsqueda que le permite al usuario encontrar iguales o diferentes tipos específicos de equipos (routers, servidores, etc.) conectados a Internet a través de una variedad de filtros. Algunos también lo han descrito como un motor de búsqueda de banners de servicios, que son metadatos que el servidor envía de vuelta al cliente. Esta información puede ser sobre el software de servidor, qué opciones admite el servicio, un mensaje de bienvenida o cualquier otra cosa que el cliente pueda saber antes de interactuar con el servidor.

1- Como funciona Shodan?

Shodan es un buscador tipo google, pero de dispositivos conectados a internet. Te permite hacer búsquedas por sistemas operativo, sofware en particular, IP, marcas entre otras cosas. Shodan recolecta toda esta información utilizando los banners, que son básicamente metadatos que utilizando los servidores.

Para poder usar shodan tienes que registarte, bueno en realidad puedes usarlo sin registro pero solo te mostrara una cantidad limitada de registros encontrados.

2 -Que nos puede mostrar shodan?

Prácticamente cualquier dispositivo conectado a internet(incluso si tu tostadora tiene wifi) puede encontrarnos cámaras web, señales de tráfico, proyectores de video, enrutadores, sistemas de calefacción para el hogar y sistemas SCADA que, por ejemplo, controlan las plantas de energía nuclear y las redes eléctricas. Si tiene una interfaz web, ¡Shodan puede encontrarla!

3- buscar en shodan

Puedes realizar búsquedas personalizadas o ver que sale en ultimas busquedas. Si le damos clic en el logo de shodan nos llevara a una pantalla donde nos da detalles de como utilizar la herramienta y las ultimas búsquedas.

Para ver las búsquedas populares das clic en “Explore” y nos mostrara las siguiente pantalla.

para utilizar una de estas búsquedas solamente necesitamos dar clic sobre una de ellas, en este caso vamos a utilizar “webcam”. Como pueden ver realiza la busqueda y nos muestra un listado de dispositivos que contengan la palabra webcam en su banner.

Ahora podemos dar clic en alguna de las IPs y ver que nos muestra en ellas.

3.1 – buscar utilizando filtros

Ahora utilizaremos los filtros que nos ofrece shodan para realizar una busqueda, Los filtros nos permiten restringir los resultados de búsqueda según criterios específicos. Siempre son minúsculas y se pueden usar para incluir y excluir resultados. Por ejemplo, la siguiente consulta de búsqueda encuentra resultados de Modbus en los EE. UU .:

puerto: 502 país: EE. UU.

algunos filtros básicos que podemos usar son los siguientes

city: encuentre dispositivos en una ciudad en particular
country: encuentre dispositivos en un país en particular
geo: puedes pasar las coordenadas
hostname: busca valores que coincidan con el nombre de host
net: búsqueda basada en un IP o / x CIDR
os: búsqueda basada en el sistema operativo
puerto: encuentre puertos particulares que estén abiertos
before/after: encuentre resultados dentro de un marco de tiempo

por ejemplo buscaremos servidores con windows server 2003 solo en mexico

windows server 2003 country:mx

de esta manera utilizando los filtros, podemos hacer búsquedas más especificas.

Desarrollando con la API de Shodan

Shodan no solamente es el buscador vía el sitio web, si no que también tiene una API(Application Programming Interface) la cual nos permite utiliza las funciones de shodan en diferentes lenguajes de programación.  Para mas información sobre que lenguajes se pueden utilizar y librerías existen pueden visitar la sección de desarrolladores.

En el ejemplo que les voy a mostrar les enseñare como realizar un pequeño script utilizando python.

Lo primero que tenemos que hacer es buscar nuestra API KEY la cual se encuentra en la parte de My account, una vez que estemos ahi, nos mostrara los siguiente.

Ya tengamos nuestra llave, ya podemos utilizar las funciones de shodan desde nuestro script en python.

requerimientos

El primer paso seria crear un archivo nuevo, con el nombre que quieran y lo guardan como nombre_que_quieras_.py. Yo utilizare atom como editor de texto pueden utilizar el que más les guste. Una vez hecho esto importamos la librería de shodan, creamos una variable donde vamos agregar nuestra API KEY.

import shodan

SHODAN_API_KEY = ""
api = shodan.Shodan(SHODAN_API_KEY)

en esta parte ya hemos inicializado el objeto API. El cual usaremos para llamar los metodos de shodan.

Ahora creamos un input, para que puedas teclear lo que quieres buscar, luego pasamos lo capturado en input y se lo pasamos al metodo de buscar de shodan api.search()

buscar = raw_input ('What do you want to look for?: ' ) 
results = api.search(buscar)

ahora creamos una iteracion para que nos muestro todo los elementos que encuentre con la palabra que hemos introducido en el input

for result in results['matches']:


    try:
        #print results

        print ('IP: %s' % result['ip_str'])
        print ('Port: %s' % result['port'] )
        print ('Hostname: %s' % result['hostnames'])
        print ('OS: %s' % result['os'])
        ip = result['ip_str']
        port = result['port']

        print ('http://'+str(ip) + ':' + str(port))

        print '-----' * 10

        # Show the results
    except shodan.APIError, e:
        print 'Error: %s' % e
print ('Results found: %s' % results['total'])

Ahora cada vez que encuentre una resultado que coincida con la palabra que introdujiste te lo mostrara con los siguientes parámetros

print ('IP: %s' % result['ip_str'])
        print ('Port: %s' % result['port'] )
        print ('Hostname: %s' % result['hostnames'])
        print ('OS: %s' % result['os'])

que son ip, puerto, nombre del host y sistema operativo. El script completo quedaria asi.

import shodan

SHODAN_API_KEY = "f34ufafrh34fh3f873h4f83h"
api = shodan.Shodan(SHODAN_API_KEY)


buscar = raw_input ('Que quieres buscar?: ' )
#array

#search API shodan
results = api.search(buscar)

for result in results['matches']:


    try:
        #print results

        print ('IP: %s' % result['ip_str'])
        print ('Port: %s' % result['port'] )
        print ('Hostname: %s' % result['hostnames'])
        print ('OS: %s' % result['os'])
        ip = result['ip_str']
        port = result['port']

        print ('http://'+str(ip) + ':' + str(port))

        print '-----' * 10

        # Show the results
    except shodan.APIError, e:
        print 'Error: %s' % e
print ('Results found: %s' % results['total'])

Ahora salvamos el script y lo corremos desde nuestra terminal

user@computer:$ python nombre_de_tu_archivo.py

user@computer:$ Que quieres buscar?: webcam
IP: 192.135.56.10
Port: 23
Hostname: []
OS: None
http://192.135.56.10:23
--------------------------------------------------
IP: 158.46.19.10
Port: 8080
Hostname: []
OS: None
http://158.46.19.10:8080
--------------------------------------------------
IP: 87.138.137.237
Port: 8081
Hostname: [u'p578a89ed.dip0.t-ipconnect.de']
OS: None
http://87.138.137.237:8081
--------------------------------------------------
IP: 95.76.154.118
Port: 8080
Hostname: []
OS: None
http://95.76.154.118:8080
--------------------------------------------------
IP: 2.233.12.185
Port: 8000
Hostname: [u'2-233-12-185.ip215.fastwebnet.it']
OS: None
http://2.233.12.185:8000
--------------------------------------------------
IP: 83.19.150.182
Port: 81
Hostname: [u'cxq182.internetdsl.tpnet.pl']
OS: None
http://83.19.150.182:81
--------------------------------------------------
IP: 73.7.23.61
Port: 8080
Hostname: [u'c-73-7-23-61.hsd1.ga.comcast.net']
OS: None
http://73.7.23.61:8080
--------------------------------------------------
IP: 91.160.12.5
Port: 8080
Hostname: [u'91-160-12-5.subs.proxad.net']
OS: None
http://91.160.12.5:8080
--------------------------------------------------
IP: 50.38.5.43
Port: 80
Hostname: []
OS: None
http://50.38.5.43:80
--------------------------------------------------
IP: 81.89.50.197
Port: 8081
Hostname: [u'81.89.50.197.host.vnet.sk']
OS: None
http://81.89.50.197:8081
--------------------------------------------------
Results found: 4986

asi de simple seria crear un ejemplo utilizando la API de shodan en python. Espero que les haya sido de mucha ayuda este tutorial.

Toda la información proporcionada en este medio es para fines educativos, en ningún caso alguno se hace responsable e cualquier mal uso de la información. Toda la información es para el desarrollo e investigación de métodos de seguridad informática.

No olvides visitar nuestra hacking shop

shop