CÓMO CREAR TU PROPIO SHODAN: DETECCIÓN DE SERVICIO WEB [PARTE V]

shodita


 

Volvemos el primer día de la última semana de julio de 2016. La pasada semana hicimos una prueba con 100 IPs para ver el funcionamiento y comprobamos que todo funcionaba correctamente. Tardábamos unos 40 minutos aproximadamente en analizar las 100 Ips por bot. Siempre dependerá de nuestra conexión y la del servidor, además de las características del ordenador con el que trabajemos.

Mencionar que si estas interesado empezar a programar con Python: QuantiKa14 desde 2013 oferta un curso online por solo 110 € donde podrás aprender hacer todo esto y mucho más.

Hoy quiero arreglar el fallo de la comprobación en los puertos 80 debido a qué detecté manualmente que muchas de esas IPs tenían algún servicio web en el puerto 80 y no devolvían ningún mensaje de respuesta. Por lo que decidí incluir una función que intentara acceder por HTTP y si devolvía una web consigamos obtener la etiqueta “<title></title>” y “‘name’:’description'”.

Antes de empezar a explicar debemos importar la librería urllib2 y BeautifulSoup. ¿Cómo instalar BeautifulSoup?

pip install beautifulsoup4

Esta librería es muy útil para realizar el parser html de la web, podemos crear infinidades de crawlers y bots con esta herramienta.

Lo primero que haremos después de incluir las 2 librerías será añadir en la función “main()” de nuestro bot un condicional que nos dirija a la función “detect_web_service()” si la variable port contiene el valor  80. En caso contrarío seguirá el flujo por la función “banner_grabbing()” que ya hablamos de él en las anteriores entradas.

condicional-main-shodita

Después de hacer esto debemos crear la función detect_web_service(). A través de los métodos urllib2.urlopen(url).read()importante incluir en la ip “http://” –  obtendremos el código html que luego se lo pasaremos a la varita mágica de BeatifulSoup.

detect-web-shodita

También podemos usar las excepciones de urllib2 para controlar mejor que es lo que pasa. Por si nos da un error HTTP o un URLerror.

urllib2-exception

En la linea 40 y 41 creamos 2 variables que tendrán el contenido del título y de la descripción de la web. Para conseguir eso he inventado estas 2 funciones que parsearan el código en busca de lo que necesitamos:

title-description-web-shodita

Ya tenemos nuestro sistema de comprobado de servicios web que serán insertados en nuestra base de datos mongoDB. El resultado quedaría así:

report-shodita

NOVITA-FOOTER

5 Comments

  1. Norberto 14 agosto, 2016 Reply
    • Jorge Websec 18 agosto, 2016 Reply
  2. Davis 25 agosto, 2016 Reply
    • Jorge Websec 25 agosto, 2016 Reply
      • Davis 25 agosto, 2016 Reply

Add a Comment

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