Estudio, análisis y desarrollo de herramientas de las distintas fases del hacking ético

Por Fernando González Trigo

Compártelo:

Persona hackeando un sistema

07 de Nov de 2022 · Informática y TICS

¿Qué es el hacking ético? ¿Para qué sirve el hacking ético? ¿De cuantas fases consta el hacking ético? ¿Cuántas herramientas existen para ayudarnos al hacking ético?

Esta son las preguntas que se puede formular cualquier persona al empezar en el mundo de la ciberseguridad y más concretamente en el “red team” (Personas especializadas en ciberseguridad que intentan encontrar las vulnerabilidades de un sistema, atacándolo) [1]

En el desarrollo de este TFM se han estudiado las herramientas existentes para cada fase del hacking ético (reconocimiento, escaneo, obtener acceso, mantener acceso y limpiar huellas).

El objetivo de estas herramientas es facilitar el trabajo de una auditoría informática, como por ejemplo en la búsqueda inicial de información mediante técnicas OSINT, en el escaneo de redes y puertos, en el análisis básico de vulnerabilidades, en la explotación de las vulnerabilidades, en el borrador de huellas, etc.

Después del estudio y el posterior análisis de cada herramienta, se ha buscado crear una herramienta que pueda ayudar al hacker ético en todas las fases. Esta herramienta ha sido desarrollada en Python y posee un total de 12 funcionalidades que se explicarán más adelante.

El código de esta herramienta se puede encontrar en GitHub en el siguiente enlace “https://github.com/FernandoGonzTri/HackEtic/

¿Te resulta interesante?

¡Guarda este contenido completo en PDF!

Descarga gratis este contenido y consúltalo cuando lo necesites

1. Introducción

La palabra hacking ético cada día es más conocida por las empresas y cada vez está más en uso. Para entenderla se puede ver cada palabra por separado y buscar la definición en la RAE.

  • Hacker (jáquer): “Persona con grandes habilidades en el manejo de computadoras que investiga un sistema informático para avisar de los fallos y desarrollar técnicas de mejora.” [2]
  • Ético: “Conjunto de normas morales que rigen la conducta de la persona en cualquier ámbito de la vida” [3]

Por lo tanto, el hacking ético se puede definir como un proceso en el cual personas cualificadas intentan hackear un sistema para poder identificar y corregir errores o vulnerabilidades.

La dificultad de realizar hacking es entender qué se está realizando en cada momento y cómo puede afectar al sistema cada herramienta. Además, es muy complicado conocer las funcionalidades que posee cada herramienta.

En la actualidad, muchas empresas le han dado una gran importancia a la seguridad informática, ya que los daños que puede causar una mala seguridad pueden ser catastróficos para estas. Dentro de la ciberseguridad podemos diferenciar la seguridad ofensiva y la seguridad defensiva. La seguridad defensiva se encarga de proteger la empresa mediante la detección y respuesta a los ataques dirigidos, firewalls, sistemas SIEM, IDS, IPS, etc. Dentro de la seguridad ofensiva entra el hacking ético, trabajadores de la empresa u otra empresa contratada, ataca el sistema para comprobar las medidas de seguridad de estos, básicamente la idea es actuar como lo haría un ciberdelincuente. [4]

Las fases del hacking ético son las siguientes:

  1. Reconocimiento: Son las fases preparatorias, donde el hacker busca información necesaria sobre su objetivo antes de lanzar el ataque.
  2. Escaneo: Usa la información obtenida en busca de identificar vulnerabilidades.
  3. Obtener acceso: Es la fase de penetración, el hacker explota las vulnerabilidades encontradas en el escaneo.
  4. Mantener acceso: La prioridad en esta fase es mantener el acceso al sistema vulnerable.
  5. Limpiar huellas: Se trata de descubrir las evidencias de la presencia del hacker.

Por lo tanto, para cada una de estas fases habrá una gran cantidad de herramientas disponibles que se irán explicando según avance el trabajo.

 

2. Reconocimiento

Esta fase es la primera del hacking ético, consiste en usar técnicas para investigar y recolectar la mayor información posible sobre el objetivo.

En esta fase, se están buscando dos objetivos. El primero es ver qué información podría ver un atacante externo acerca del objetivo que se está estudiando y el segundo es obtener información para nuestra auditoría.

 

2.1. Herramientas de la fase

El comienzo de esta fase empieza con la recogida de información externa, esto se realiza mediante técnicas OSINT. Una de las herramientas más conocidas para ayudarnos en este proceso es Maltego. Es un software que se utiliza para OSINT, desarrollado por Paterva. Esta herramienta es de software gratuito y se puede ejecutar tanto para Windows, IOS, Linux. Sirve para identificar relaciones entre personas, grupo de personas, compañías, organizaciones, sitios web, infraestructura de internet, afiliaciones, documentos y archivos.

Otra herramienta para recogidas de información a través de DNS es dnsenum. Es un script Perl multiproceso usado para enumerar información DNS de un dominio y descubrir bloques de IP no contiguos. Esta herramienta consigue direcciones del host, servidores de nombre. Registros MX, etc. Esto da mucha información de sistemas que están en la zona desmilitarizada de la red, además esto no levanta sospechas a un IDS. [5]

Además, existe una herramienta para reconocer los servicios que hay en una web, conocida como Wappalyzer, que es una extensión para conocer como se ha desarrollado una web, es muy sencillo de utilizar, simplemente instalas la extensión en tu navegador web y accedes a una página web y solamente tienes que pinchar en el icono. La herramienta te mostrara que tecnologías web usa el sitio web.

Otras herramientas útiles pueden ser Dnsdumpster, Nmapper, Hunter, Skrapp, Shodan, URLFuzzer, Golismero.

 

2.2. Desarrollo de herramientas de reconocimiento

La fase de reconocimiento consiste en encontrar subdominios, números de teléfonos, correos electrónicos, nombres, etc. Todo esto pasando desapercibido. Por lo tanto, se van a desarrollar herramientas que intenten conseguir esto.

 

2.2.1. Búsqueda de subdominios

La idea de esta herramienta es que haga una búsqueda de subdominios predefinidos en un fichero dado un dominio.

La función simplemente pide un dominio que se debe introducir por teclado y gracias a la función ‘gethostbyname’, importada de la librería de ‘socket’, se comprueba si el subdominio existe, en caso de existir se muestra por pantalla, en caso de no existir devuelve una excepción que controla la función para que no falle.

Un ejemplo de funcionamiento es el siguiente: 

Figura 1 Búsqueda de subdominios

Figura 1 Búsqueda de subdominios

 

2.2.2. Búsqueda de correos electrónicos

En esta opción, vamos a buscar los correos electrónicos de un dominio. La idea es que dada una página web busque, mediante expresiones regulares, un correo electrónico; para ello buscará tanto en la página principal como en los enlaces de esta.

Por lo tanto, el programa solamente pide el dominio donde se quiere empezar a buscar. Lo primero que se hace es leer el html de la página principal para buscar mediante expresiones regulares un correo electrónico. Luego, mediante una librería ‘BeatifulSoup’, se buscan los enlaces posibles en esa página.

Cada enlace que encuentra se guarda en una lista, se comprueba si ya está en ella y se buscan los correos en esa página. Cuando encuentra un correo, comprueba si ya está en la lista, y si no está, lo inserta. Por último, muestras los correos encontrados por pantalla y con la URL donde lo ha encontrado.

Figura 2 Búsqueda de correos

Figura 2 Búsqueda de correos

 

2.2.3. Búsqueda de números de teléfono

Esta herramienta es muy parecida a la anterior, pero cambiando la expresión regular para buscar números de teléfonos. En este caso, también busca tanto en la página principal como en los enlaces de esta página.

Figura 3 Búsqueda de teléfonos

Figura 3 Búsqueda de teléfonos

En este caso, puede que algunos números coincidan con el formato de un número de teléfono, pero no sea un teléfono. Además, en la imagen se puede observar que obtiene los números en todos los formatos posibles, con espacios, sin espacios, con el +34, etc.

 

3. Escaneo

En esta fase, se utiliza toda la información conseguida en la fase anterior para identificar vulnerabilidades. Durante esta fase se usan herramientas de escaneo de puertos, mapeadores de red, barredores de ping y protocolos de red, escáner de vulnerabilidades, etc.

Existen 3 tipos de escaneos:

  • Escaneo de puertos: Se determinan qué puertos TCP/IP están abiertos.
  • Escaneo de vulnerabilidades: Se determina la existencia de vulnerabilidades conocidas en el host.
  • Escaneo de red: Se determinan qué hosts están activos.

En esta fase, se busca nombres de ordenadores, sistemas operativos (SO), software instalado, direcciones IP, cuentas de usuario.

 

3.1. Herramientas de la fase

Algunas herramientas interesantes pueden ser:

  • Nmap: Es un programa de código abierto que sirve para escanear puertos y nodos vivos. Fue creado por Gordon Lyon, aunque actualmente está a cargo una gran comunidad. Principalmente fue desarrollado para Linux, aunque ahora es multiplataforma. [6]
  • Sparta/Legion: Es un programa de interfaz gráfico que une varios programas como nmap, ssylez, nikto, hydra, nbtscan y mucho más. Es una de las mejores herramientas de análisis de vulnerabilidades en remoto. En Kali 2019 se llamaba Sparta, a partir de 2020 pasó a llamarse Legion.
  • Nessus: Nessus es un programa de escaneo de vulnerabilidades en diversos sistemas operativos. Es un demonio, nessusd, que realiza un escaneo en el sistema operativo para que luego gracias al cliente Nessus nos informa del estado del escaneo.

Otras herramientas interesantes son Wpscan, ZAP, OpenVAS, Nikto.

 

3.2. Desarrollo de herramientas de escaneo

Como se ha estudiado en este capítulo, la idea de esta fase es escanear redes, puertos y vulnerabilidades, por lo tanto, el objetivo de este capítulo es intentar desarrollar herramientas que nos ayuden en estos tipos de escaneo.

Las herramientas para desarrollar serán descubrimiento de sistemas operativos, escaneo de redes y escaneo de puertos.

 

3.2.1. Descubrir que sistema operativo usa

Es muy importante cuando se escanea un host, saber qué sistema operativo está funcionando en él, puede ser Windows, Linux, Mac Os, ya que existirán distintos tipos de vulnerabilidades según el sistema operativo.

Para descubrir que sistema operativo está instalado en el host, se va a hacer uso de la herramienta ping. Esta herramienta manda un mensaje ICMP a una dirección IP y este lo devuelve. Ahora conociendo su TTL se puede saber qué sistema operativo está corriendo, ya que Linux tiene un TTL de 64 y Windows de 128 [7].

Figura 4 Descubrimiento sistema operativo

Figura 4 Descubrimiento sistema operativo

 

3.2.2. Descubrir los hosts de una red

Lo siguiente será descubrir qué host hay en una red, esto es muy importante a la hora de escanear redes porque gracias a ello se consigue conocer cuántas direcciones IP están siendo utilizadas en la red que se está escaneando.

Para ello, el programa pedirá una dirección IP y probará todas las subredes de esa dirección. Si el usuario introduce por pantalla la dirección 192.168.1.1, se probará desde la 192.168.1.1 hasta la 192.168.1.256. Se hará ping a todas las direcciones y se comprobará si la máquina destino ha devuelto el ping o no.

Para aumentar la velocidad de escaneo se hará uso de hilos. Además, se pedirá al usuario dónde quiere empezar a escanear y dónde terminar.

Figura 5 Descubrimiento de hosts de una red

Figura 5 Descubrimiento de hosts de una red

 

3.2.3. Descubrir los puertos de un host

Después de descubrir los hosts de una red, nos puede interesar cuáles son los puertos que están activos en un host. Por lo tanto, este es el objetivo de la siguiente herramienta.

Esta herramienta es muy parecida a la anterior, se escanearán los puertos con el rango que diga el usuario y se mostrarán, por pantalla, los puertos que están abiertos.

El rango de puertos es de 1 a 65535, si el rango que elige el usuario no está entre estos valores, tendrá que volver a escribirlos.

Figura 6 Escaneo de puertos

Figura 6 Escaneo de puertos

 

4. Obtener acceso

El objetivo principal de esta fase es conseguir acceso al sistema víctima, explotando las vulnerabilidades que se encontró en la fase de escaneo. En esta fase, el hacker ético intenta entrar al sistema con ataques ransomware, virus, gusanos, rootkits, etc.

Tras lograr acceso en esta fase, el atacante buscará aumentar sus privilegios a nivel de administrador para instalar las aplicaciones que necesite.

Este ataque se puede llevar a cabo mediante servicios LAN, internet o sin estar conectado a la red y puede estar dirigido a sistemas operativos, servidores web, aplicaciones, etc.

 

4.1. Herramientas de la fase

Para esta fase existen herramientas que intentan acceder al sistema gracias a las vulnerabilidades encontradas, aunque muchas herramientas tienen la fase de escaneo y obtener acceso juntas, ya que cuando encuentran la vulnerabilidad también la explotan como, por ejemplo, algunos scripts de nmap. Por lo tanto, se explicarán algunas herramientas que pueden ir tanto en la parte de escaneo con en la parte de obtener acceso, ya que ejecutan ambas cosas.

  • Metasploit: Es un proyecto de código abierto que proporciona información sobre las vulnerabilidades y ayuda en las pruebas de penetración. Contiene alrededor de 2000 exploits para poner aprueba la ciberseguridad de cualquier sistema informático. Inicialmente fue escrito en Perl y luego fue transcrito en Ruby.
  • THC Hydra: Usa ataques de fuerza bruta para descifrar servicios de autenticación remota. Se usa para acceder a redes inalámbricas, servidores web, servidores de correo, etc. Estos ataques suelen ser muy ruidosos, se quedan guardados en los logs del sistema atacado y harán saltar las alarmas en los NDR, IDS, etc.
  • Burpsuite: es una plataforma integrada para la realización de las pruebas de seguridad de las aplicaciones web. Permite combinar avanzadas técnicas manuales con la automatización de pruebas de seguridad alineadas con el estado de la técnica

Otras herramientas son Hashcat, Aircrack-ng, Searchsploit, John the Ripper, SQLMap, Armitage, Cobalt Strike.

 

4.2. Desarrollo de herramientas de obtención de acceso

Como se ha comprobado en el anterior apartado de herramientas, estas no solo buscan las vulnerabilidades, sino que también las ejecutan. Por lo tanto, esto es lo que buscará en esta sección: crear herramientas que encuentren y ejecuten las vulnerabilidades.

 

4.1.1. Fuerza bruta hacia una página de login

Esta herramienta busca acceder al login de una web. Para ello, mediante la fuerza bruta, intenta entrar en el sitio web.

Los pasos de esta herramienta son los siguientes:

  1. La herramienta solicita una url de un login.
  2. El usuario escribe la url.
  3. Se busca el formulario de esa url.
  4. Se comprueba si el método del formulario es get o post.
  5. Se buscan los inputs del formulario.
  6. Se buscan el nombre y valor de cada input y el valor.
  7. Se pregunta por las posiciones del usuario y la contraseña.
  8. Se pregunta por el mensaje de error
  9. Si el método es get
    1. Se cogen las variables que no son de usuario ni contraseña y se forma la cadena
    2. Se crea la cadena aleatoria con el usuario y contraseña
    3. Se envía con el método get
  10. Si el método es post
    1. Se cogen las variables que no se modifican y se guardan en los parámetros.
    2. Se añaden los parámetros de usuario y contraseña.
    3. Se envía con el método post.
  11. Se comprueba si el mensaje que se recibe incluye el mensaje de error.
  12. Si no lo incluye, se ha encontrado la contraseña y se muestra por pantalla.

 

Una muestra del funcionamiento de la herramienta es el siguiente:

Figura 7 Fuerza bruta mediante post – Login

Figura 7 Fuerza bruta mediante post – Login

 

4.2.2. Ataque de Denegación de Servicios (DoS)

Este ataque es sencillo de realizar, simplemente el usuario pone una dirección IP y un puerto y se crean 1000 hilos, estableciendo sockets para realizar una conexión y conectarse.

Cuando se quiera finalizar el ataque simplemente se pulsa enter y se cerrarán todos los hilos y dejarán de crear sockets, como se puede observar en la imagen.

Figura 8 Ataque DoS

Figura 8 Ataque DoS

 

5. Mantener Acceso

Después de la fase de obtener acceso es importante que, cuando la víctima apague el ordenador, no termine con nuestro ataque, por lo tanto, la idea de esta parte es establecer persistencia en el sistema, como por ejemplo intentar hacer una escalada de privilegios, y probar un ataque de manera controlada.

 

5.1. Herramientas de la fase

En esta fase, las herramientas que se usen necesitarán tener acceso a la máquina atacada para realizar su función.

Buscan obtener información confidencial, elevar privilegios, instalación de puertas traseras, etc.

  • Lynis: Esta herramienta podría estar en la fase de escaneo, ya que ejecuta una auditoría del sistema, pero al tener que ejecutarse de manera local en el sistema, podemos incluirla dentro de esta fase, ya que se encontrarán errores que el atacante podrá usar para elevar privilegios, buscar otras vulnerabilidades, posibilidades de instalar troyanos, etc.
  • Wireshark: Es un analizador de paquetes de red y su objetivo es capturar paquetes dentro de una red y ofrecer información detallada de los mismos. Por lo tanto, como en la herramienta anterior, es necesario estar dentro de la red que se quiere auditar para poder capturar el tráfico interno.

Otras herramientas interesantes son NXcrypt, Linux Exploit Suggester (LES), Window Exploit Suggester, PrivessCheck.

 

5.2. Desarrollo de herramientas de mantener acceso

En este capítulo, se buscará conseguir la forma de mantener acceso una vez apagado el ordenador para poder entrar siempre que se quiera.

 

5.2.1. Búsqueda de información de la máquina

Después de obtener acceso a la máquina, se puede ejecutar esta herramienta para obtener información importante como:

  • Usuario de la shell actual.
  • Nivel de los permisos.
  • Nombre de la máquina.
  • Información del kernel.
  • Vulnerabilidades encontradas según la versión del kernel.
  • Lista de usuarios del sistema.
  • Permisos de sudo del actual usuario.

En el caso de la búsqueda de vulnerabilidades, se obtiene la versión del sistema operativo y se búsqueda si existe algún exploit o shellcode mediante el comando “searchsploit”

El uso de esta herramienta se observa en la siguiente imagen:

Figura 9 Búsqueda de información de la máquina

Figura 9 Búsqueda de información de la máquina

 

5.2.2. Puerta trasera (Backdoors)

En este capítulo, se desarrolla una puerta trasera para que el atacante pueda tener acceso a la máquina víctima, para ello haremos uso de sockets.

Por lo tanto, nuestra herramienta lanzará un servidor que estará a la escucha de recibir peticiones. Este servidor, siempre que exista la terminal donde se ejecutó, estará funcionando aún después de cerrar el cliente por lo que está trabajando a escondidas, ya que la ejecución de nuestra herramienta no se queda parada.

En la imagen observamos cómo sería el lanzamiento en la herramienta:

Figura 10 Herramienta de puerta trasera

Figura 10 Herramienta de puerta trasera

 

Ahora ejecutaríamos el cliente desde nuestra máquina colocando como argumentos la dirección IP del servidor y el puerto de la siguiente manera:

Figura 11 Comunicación cliente-servidor

Figura 11 Comunicación cliente-servidor

En la imagen se observa que con el comando “exit” se cierra la conexión y se puede volver a abrir, ya que el servidor se queda a la espera de nuevas conexiones. Además, se observa que tenemos acceso al sistema.

 

6. Borrado de huellas

Tras realizar el ciberataque, se deben eliminar todas las evidencias que pueden culpar al atacante. El rastro que dejas se conoce como ‘digital footprint’.

Las técnicas más recurrentes consisten en eliminar o alterar archivos de registro, ocultar archivos o directorios o usar conexiones cifradas con el sistema víctima.

 

6.1. Herramientas de la fase

Algunas herramientas conocidas son:

  • Tor: El proyecto principal de Tor es que el encaminamiento de los mensajes intercambiados entre los usuarios no revela la identidad (dirección IP), y que mantenga la integridad y el secreto de la información.
  • Auditpol: Muestra información y realiza funciones para intentar manipular las directivas de auditoría.
  • Stegdetect: Es una herramienta para detectar estenografía en imágenes.

Otras herramientas son elsave, openpuff, proxychains, wevutil.

 

6.2. Desarrollo de herramientas de borrado de huellas

En este capítulo, se realizará una herramienta que borre los logs más importantes que hayan sido creados y otra herramienta que elimine todo lo que se ha descargado para ejecutar esta herramienta.

 

6.2.1. Búsqueda e intento de borrado de logs

En este caso, la herramienta busca en el siguiente directorio (“/var/log/”) todos los ficheros donde aparezca el nombre del usuario se mostrarán por pantalla y serán borrados.

Además, si el fichero esta codificado, se muestra un mensaje por pantalla, y si es un directorio, se comprueba también ese directorio.

Una muestra del funcionamiento del programa es la siguiente:

Figura 12 Búsqueda de logs

Figura 12 Búsqueda de logs

 

6.2.2. Borrado de la herramienta

Esta herramienta es muy sencilla, simplemente coge el directorio donde se está ejecutando el programa y borra todos los ficheros de dentro incluido el directorio. El programa finaliza tras el borrado.

Figura 13 Borrado de la herramienta

Figura 13 Borrado de la herramienta

 

7. Conclusiones

En este trabajo se ha realizado un estudio de las distintas herramientas de cada fase del hacking ético, gracias a esto se ha logrado realizar una herramienta que recoja varias ideas de otras herramientas en una sola.

El mundo de la ciberseguridad está constantemente cambiando, es interesante ir conociendo las nuevas herramientas que salen, nuevas vulnerabilidades, etc. Por lo tanto, la herramienta creada en este proyecto tiene que estar adecuándose a los nuevos métodos que vayan saliendo.

Referencias

 

[1] «Red Team,» [En línea]. Available: https://intelequia.com/blog/post/2088/red-team-y-blue-team-funciones-y-diferencias-en-ciberseguridad.

[2] «Real Academia Española - Hacker (jáquer),» [En línea]. Available: https://dle.rae.es/j%C3%A1quer#TLIznqw.

[3] «Real Academia Española - ético,» [En línea]. Available: https://dle.rae.es/%C3%A9tico?m=form.

[4] «Recolección de información de páginas web,» 6 marzo 2022. [En línea]. Available: https://nptg24.github.io/recoleccion-web/.

[5] «keepcoding,» 6 junio 2022. [En línea]. Available: https://keepcoding.io/blog/que-es-nmapciberseguridad/

[6] S. Blog, 14 abril 2014. [En línea]. Available: http://subinsb.com/default-device-ttl-values/

[7] «Tarlogic,» [En línea]. Available: https://www.tarlogic.com/es/productos/burp-suiteprofessional/

Compártelo:

Valora este artículo:
Ver todos los artículos del área de Informática y TICS
Universidades colaboradoras
La universidad Antonio de Nebrija es Universidad colaboradora con INESEM Business School La universidad a Distancia de Madrid es Universidad colaboradora con INESEM Business School