El sitio web de la UCLM utiliza cookies propias y de terceros con fines técnicos y de análisis, pero no recaba ni cede datos de carácter personal de los usuarios. Sin embargo, puede haber enlaces a sitios web de terceros, con políticas de cookies distintas a la de la UCLM, que usted podrá aceptar o no cuando acceda a ellos.

Puede obtener más información en la Política de cookies. Aceptar

Herramienta Pentesting

Herramienta de pentesting para búsqueda de vulnerabilidades en redes de ordenadores. Realizado por Carlos Antonio Molina Campillo. Curso 2015/16

Resumen y agradecimientos

En la actualidad, la creciente concienciación de los peligros derivados del uso de tecnologías inseguras ha convertido a la ciberseguridad en uno de los aspectos más importantes para la sociedad; pese a ello, aún son numerosas las personas que no toman las medidas adecuadas. Los ataques llevados a cabo a través de Internet son cada vez más sofisticados y complejos, siendo sus objetivos gobiernos, empresas e incluso usuarios domésticos.

La realización de este proyecto ha supuesto una oportunidad para iniciarse en el mundo de la ciberseguridad y conocer a la comunidad que lo forma. Obteniéndose como resultado nuevos conocimientos y una herramienta completamente funcional enfocada al estudio de la seguridad en redes de ordenadores.

Las asignaturas orientadas a la informática, redes de ordenadores, electrónica e incluso acústica cursadas durante el Grado en Ingeniería en Sistemas Audiovisuales de Telecomunicación (enlace caído), así como las practicas externas en empresa y cursos extra que pudieron realizarse en la Escuela Politécnica de Cuenca, por ejemplo de Experto en Redes de Comunicaciones Cisco CCNA, han aportado de una u otra manera lo necesario para poder desarrollar la herramienta que ocupa este proyecto.

Estoy muy agradecido a la Escuela Politécnica de Cuenca por sus iniciativas, a mis profesores y compañeros que en todo momento han colaborado en mi desarrollo personal y profesional, ayudándome a encontrar algo que me apasione. A D. Marcos Fernández Berlanga tutor de este trabajo por su ayuda, y a Rafael Otal, director del trabajo y exalumno de la EPC, el colaborar en este proyecto iniciado por su grupo Securipy. Y por supuesto a mi familia, a la que debo el haber comenzado mis estudios y también terminarlos; al igual que seguir con mi formación.

Objetivo

Con el desarrollo de este proyecto se buscó la creación de una herramienta, bajo la filosofía del Software Libre, que facilite la labor del profesional encargado del estudio de las redes de ordenadores a la hora de conocer su composición y encontrar vulnerabilidades en su seguridad. Por supuesto, pudiendo ser utilizada por cualquier usuario sea o no profesional.

Desarrollo

Comenzar indicando, como se ha señalado anteriormente, que la idea original de este proyecto pertenece al grupo Securipy; formado por apasionados de la ciberseguridad que desarrollan herramientas en este ámbito.

El software desarrollado posee las siguientes características:

  • Análisis de redes de ordenadores. Obtiene su composición y características, por ejemplo, permite conocer los sistemas operativos presentes o el estado de los puertos; permitiendo incluso análisis personalizables.
  • Búsqueda en páginas webs de exploits que puedan aprovechar las vulnerabilidades de la red estudiada.
  • La información obtenida es clasificada, almacenada y actualizada de manera automática permitiendo trabajar con varios proyectos de manera cómoda. Esta información puede ser consultada, exportada y modificada.
  • Software escalable; es decir, al que se le pueden ir añadiendo nuevas funcionalidades.
  • Comprobaciones automáticas. Se encarga de verificar que el usuario esté conectado a una red, que todo el software necesario esté instalado y de que se utilicen las opciones disponibles de manera adecuada, mostrando avisos en caso contrario.
  • Facilita la labor del usuario. Por ejemplo, permite introducir la información de diferentes maneras e internamente realiza los cambios adecuados para tratarla; respecto a las comprobaciones indicadas previamente, entre otras, tiene en cuenta que se haya seleccionado a un cliente al que auditar antes de lanzar el estudio de la red, y de no ser así, informará al usuario y mostrará las disponibles para seleccionar una, evitando de este modo tener que volver al menú principal.

Software utilizado

Para el desarrollo de esta herramienta se ha hecho uso del siguiente software.

Python
Lenguaje de programación de alto nivel muy extendido. Con él se implementa la lógica de la herramienta; utilizando diferentes librerías que permiten interactuar con Nmap, la base de datos y páginas webs.

Nmap

Analizador de redes de gran fama. Empleado para estudiar la red en cuestión.

Base de datos

La información obtenida se guarda en una base de datos con la que se interactúa mediante SQLite.

GitHub

Plataforma de desarrollo colaborativo que utiliza un sistema de control de versiones, facilitando el seguimiento de la evolución del proyecto.

Estructura

La herramienta está compuesta por distintos módulos:

  • Módulo pentesting-core: se trata del núcleo, permite seleccionar con qué módulo trabajar de entre los disponibles y que estos interactúen entre sí. Además, gestiona el registro de los logs de error de la herramienta y proporciona ciertas funciones al resto de módulos.
  • Módulo nmap-scan: encargado del análisis de la red y de trabajar con la información obtenida.
  • Módulo exploit-finder: su función es la búsqueda de exploits en páginas webs a partir de la información resultante del estudio de la red.

Tratamiento de la información obtenida

La información de la red dada por el módulo nmap-scan se almacena en la base de datos brain.db y es clasificada mediante las cuatro tablas que componen dicha base de datos:

  • Tabla auditorias: cada auditoría, guardada en una fila de esta tabla, identifica a un cliente al que se ha realizado el servicio de pentesting. Ejm: universidad, biblioteca, etc.
  • Tabla revision: identifica los estudios realizados a los clientes. Cada cierto tiempo se vuelve a analizar la red para comprobar que se hayan tomado las medidas adecuadas o conocer nuevos problemas.

El organizar la información en auditorías y revisiones es una característica que facilita en gran medida el trabajo del auditor al quedar clasificada automáticamente.

  • Tabla hosts: guarda las características de los equipos con los que en algún momento ha habido conexión durante el estudio.
  • Tabla puertos: almacena los puertos detectados de cada equipo, su estado y propiedades. De gran importancia al ser los puertos los responsables de intercambiar información con la red.

Toda esta información se va actualizando en cuanto se detectan cambios en la red; por ejemplo, el estado de los equipos con los que antes había conexión pero ahora no, nueva información obtenida, etc. Siempre utilizando una nueva fila en la base de datos con el fin de obtener un histórico.

Manejo de la herramienta

Esta herramienta ha sido probada en el sistema operativo macOS y algunas distribuciones Linux como Ubuntu y Kali Linux.

En las referencias se dan unas páginas webs en las que se explica cómo comenzar a utilizar esta herramienta en nuestro ordenador, así como links a otras webs de utilidad.

Al ejecutar el software, se accede al siguiente menú principal:

Desde este menú se escoge el módulo con el que trabajar. Por ejemplo, de seleccionar el módulo nmap-scan se llega a su menú:

Como se observa en la imagen anterior, este módulo permite:

  • Seleccionar una auditoría y revisión existentes con las que trabajar, o crear unas nuevas.
  • Diferentes opciones para estudiar la red: conocer equipos conectados, sus sistemas operativos, puertos, etc. Incluso se puede indicar manualmente un estudio personalizado a realizar.
  • Consultar la información almacenada en la base de datos o modificarla.
  • Utilizar una pequeña calculadora de direcciones IP para facilitar la labor del pentester a la hora de conocer la red a la que está conectado.

A continuación, se ejemplifica la red que puede deducirse con los datos mostrados como ejemplo al explicar las tablas que forman la base de datos:

Una vez se tiene información suficiente de la red como para conocer posibles vulnerabilidades, se buscará mediante el módulo exploit-finder aquellos exploits que puedan aprovechar dichos fallos de seguridad. Este permite consultar dos páginas webs especializadas en la búsqueda de exploits, Exploit Database y 0day.today; y descargar los deseados.

Tras elegir con cuántas páginas webs trabajar, deben indicarse los términos a buscar, bien manualmente o empleando la información almacenada en la base de datos del módulo nmap-scan, con la posibilidad de utilizar un archivo que modifica estos términos con el fin de obtener más resultados. Finalmente se muestran los resultados obtenidos y se permite escoger entre repetir la búsqueda o descargar los exploits que más interesen.

Conclusiones

Se ha obtenido una herramienta que cumple los objetivos marcados inicialmente y que puede ser ampliada por cualquier persona que desee colaborar. A nivel personal supuso, además de la adquisición de nuevos conocimientos, la oportunidad de participar en eventos enfocados a la divulgación de las diversas ramas de la ciberseguridad, en los que se presentó esta herramienta, en especial en las jornadas Morteruelo.CON-2016.

Referencias

Memoria completa de este trabajo

https://ruidera.uclm.es/xmlui/handle/10578/11592

Tutoriales para trabajar con la herramienta desarrollada

https://cmoli.blogspot.com.es/2016/03/tfg-i-nmap-scan-instalacion.html

https://cmoli.blogspot.com.es/2016/03/tfg-ii-nmap-scan-escaneo-de-hosts.html

https://cmoli.blogspot.com.es/2016/03/tfg-iii-nmap-scan-escaneo-de-puertos.html

Código en GitHub

https://github.com/securipy/pentesting-core
https://github.com/securipy/nmap-scan
https://github.com/securipy/exploit-finder
Grado en Ingeniería en Sistemas Audiovisuales de Telecomunicación

http://www.epc.uclm.es/ep/?page_id=69

Escuela Politécnica de Cuenca

https://politecnicacuenca.com/

Cisco CCNA

https://www.netacad.com/es/courses/ccna/

Grupo Securipy

https://securipy.com/

Lenguaje Python

https://www.python.org/

Página web Nmap

https://nmap.org/

Página web SQLite

https://sqlite.org/

Página web GitHub

https://github.com

https://github.com/logos

Sistema operativo macOS

http://www.apple.com/es/macos/sierra/

Sistema operativo Ubuntu

https://www.ubuntu.com/

Sistema operativo Kali Linux

https://www.kali.org/

Página web Exploit Database

https://www.exploit-db.com/

Página web 0day.today

http://0day.today/

MorterueloCON y AjoarrieroLabs

https://www.morteruelo.net/

Presentación en MorterueloCON de esta herramienta

http://www.cuencaon.com/congresoseguridadmorteruelo.html