Cómo crear tu propio Shodan: mongoDB [Parte I]

Espero que este verano os guste la nueva saga de entradas que voy a publicar de cómo hacernos nuestro propio Shodan para casa. ¿Que es el buscador Shodan? ya en este blog hablé con anterioridad sobre la potencia de este buscador y cómo la utilicé para encontrar servidores vulnerables en España a Drown Attack. Aun así os dejo la definición según Wikipedia que me parece correcta: “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.1 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.”

Tras terminar la herramienta pensé en un nombre y la he bautizado “Shodita” que es la unión del buscador Shodan y Nobita (Shodan + Nobita = Shodita) el protagonista de Doraimon. ¿Por qué? la verdad es que en el momento en que se me ocurrió esta entrada me acorde de este personaje y todos los problemas que tenia en sus capítulos. Doraimon exponía siempre soluciones con dispositivos y por ello esta asociación a un personaje con problemas y una aplicación que almacena posibles problemas de seguridad de servidores.

Para crear esta herramienta necesitaremos fundamentalmente las siguiente cosas:

  • En estos tutoriales utilizaré el sistema operativo Ubuntu con Python versión 2.7.9
  • Usaremos mongoDB como base de datos noSQL.
  • La sección de muestra de resultados podemos hacerlo con PHP o Python + Django.

Mi objetivo con este tutorial es enseñar lo fácil que puede llegar a ser a tener un sistema que almacene una gran cantidad de datos de otros servidores. De esta forma llegar a poder auditar de forma masiva decenas de servidores a la vez. También es una forma de comprender el poder que tiene el Big Data. Recomiendo este artículo “El secreto que se esconde tras las predicciones del Bing Data” de mi amigo Javier que lo explica muy bien.

Voy a empezar a explicar como funciona mongoDB y cómo instalarlo en nuestro Ubuntu:

Cualquier base de datos que se precie, tiene que permitirnos realizar las típicas operaciones: inserciones, modificaciones, eliminaciones y consultas. MongoDB no es diferente, y aunque tiene algunas peculiaridades que iremos describiendo, permite realizar dichas operaciones. Eso sí, nos tenemos que olvidar de SQL.

  1. Para instalarlo solo tendremos que hacer un apt-get: “~$ sudo apt-get install mongodb” (si te imprime una excepción de conexión visita esta web donde te ayudará a solucionarlo)
  2. Para poder acceder en nuestro terminal pondremos: “~$ mongo” a partir de aquí ya estaremos dentro de la shell de mongodb.
  3. Para hacernos una idea los datos serán almacenados en colecciones de datos. Para crear una colección (qué podría ser como una tabla de una base de datos o incluso una base de datos) solo debemos de poner lo siguiente en la shell: “> db.createCollection(‘Shodita’)
  4. Debemos saber que mongoDB es muy parecido a un json por su estructura de datos. Para insertar los elementos sería algo así: “> db.shodita.insert({ip:”127.0.0.1″, banner: “hello, i am stupid pc”})
  5. Para buscar es igual de fácil: “> db.shodita.find({ip:”127.0.0.1})” el método find tiene 2 parámetros que podemos usar. Digamos que el primero es como el WHERE en las consultas SQL y el segundo las columnas que queremos que nos devuelva.

Conociendo como funciona – aun falta explicar el update – ahora vamos a crear la estructura de los datos que vamos a almacenar. Los datos que recogeremos serán la IP, los puertos y los servicios, el banner que nos responde el servidor, estado http, hora y fecha del momento que guardamos los datos y fecha y hora de última modificación. También podemos incluir la geolocalización de la IP. Quedaría algo así:

{ip:”127.0.0.1″, pys: [{puerto:”80″, servicio:”http”},{puerto:”22″, servicio:”ssh”}], banner: “hello, i am stupid pc”, http: “200”, fecha_insert: “27-06-2016 19:25”, fecha_update: “27-06-2016 19:26”}

Esto de momento por hoy. Si te parece interesante el artículo me encantaría saber tu opinión y si tienes alguna idea de mejora pues compártela conmigo y los demás Lo dicho si nos ayudas a compartir para que pueda llegar al máximo número de personas nos harás muy felices. Un saludo.

NOVITA-FOOTER

 

4 Comments

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *