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