CTF 2 Jaymon Security – Pentesting
1. Introducción y objetivos
En este artículo vamos a dar solución al segundo CTF (2.0) propuesto por JAYMON SECURITY que pueden descargarlo desde su página Web a través del siguiente enlace:
En este artículo se simula la realización de una auditoría de hacking ético, también conocido como Pentest, a una máquina con SO Windows perteneciente al departamento de educación de una universidad (de aquí en adelante la «organización empresarial») en la que se encuentra una plataforma de exámenes.
Para llevar a cabo las labores de hacking ético, estamos situados con nuestra máquina atacante en el segmento de red interno de la organización empresarial, en la que nos encontramos distintas máquinas interconectadas entre sí, compartiendo red y recursos. Para poder colocarnos en el mismo segmento de red que la máquina CTF hemos debido acceder vía VPN a la Local Area Network (LAN) de la organización, al igual que se realiza en los laboratorios de Hack The Box (HTB) u Offensive Security. Decir que JAYMON SECURITY también tiene su propio laboratorio de hacking ético:
Para llevar a cabo esta práctica necesitaremos tener al menos unos conocimientos básicos en hacking ético.
2. Fases del Hacking Ético profesional
Antes de proceder con la resolución del CTF, vamos a explicar brevemente cómo llevar a cabo una labor profesional de «Hacking ético», cuáles son las fases a llevar a cabo y la definición de cada una de ellas.
A continuación detallamos las fases que se deben cumplir en toda auditoría de hacking ético:
- Fase 1. Preparación: Se definen los parámetros de la prueba. Estos son los objetivos, ámbito, responsabilidades, personas de contacto, reglas, tiempo, éxitos/fracasos y documentación aprobando la prueba.
- Fase 2. Reconocimiento: Se comienza la prueba recogiendo la mayor información posible objetivo. Este punto es clave, ya que cuento mejor conozcamos el objetivo mejor podremos actuar sobre él.
- Fase 3. Escaneo: En esta fase seremos activos, enviando paquetes a la red del objetivo para identificar puertos, servicios y vulnerabilidades que éstos pudieran presentar.
- Fase 4. Explotación: Comienza la explotación de las vulnerabilidades identificadas para obtener acceso al objetivo.
- Fase 5. Análisis: Se analiza toda la información obtenida a lo largo de las fases anteriores para identificar los riesgos y priorizarlos, determinar mitigaciones, etc.
- Fase 6. Informe: Se crearán diversos documentos de carácter ejecutivo y técnico, detallando toda la prueba realizada: resultado, riesgos, etc. Los documentos deberán estar bien detallados y adaptados al lector.
3. Fase de preparación: Montaje del laboratorio
Para preparar el LAB únicamente debemos tener instalado VMware Workstation para montar las máquinas virtuales que se detallan a continuación. En este caso en particular hemos hecho uso de una VPN que muy gentilmente nos ha proporcionado Juan M. para poder conectarnos al laboratorio de hacking ético de Jaymon Security y realizar así la práctica.
- Máquina auditora/atacante: equipo informático con sistema operativo Kali Linux completamente actualizado. Se trata de una distribución basada en Debian GNU/Linux diseñada principalmente para la auditoría y seguridad informática en general. Fue fundada y es mantenida por Offensive Security Ltd. Esta distribución particularmente fue rediseñada con ciertas particularidades por Jaymon Security S.L.
Enlace Oficial para su descarga: https://www.kali.org/get-kali/
- Máquina CTF con SO Windows 7 x64: Contiene una plataforma Moodle de exámenes.
4. Fase de reconocimiento interno
Una vez posicionados en la LAN de la organización procedemos a localizar los activos que hay en la red a auditar mediante técnicas de descubrimiento de hosts, puertos y servicios, entre otros.
Para ello nos vamos a valer de Nmap, tenemos también su versión gráfica que es Zenmap, mostraré un ejemplo de cada uno de ellos.
- Netdiscover: Descubrimos dispositivos conectados a la red.
- Nmap: Es el programa gratuito por excelencia para descubrir todos los hosts que hay en uno o varios segmentos de red, así como qué puertos tiene abiertos un determinado host. También nos permite saber qué servicio hay detrás de dicho puerto abierto, e incluso saber si presenta alguna vulnerabilidad conocida. Este programa también es capaz de detectar el tipo y versión del sistema operativo que tenemos en un determinado host, y todo ello de manera muy fácil y rápida.
- Zenmap: Es la interfaz gráfica de Nmap. Proporciona una interfaz gráfica para ejecutar los diferentes tipos de análisis de puertos y servicios que tiene Nmap, y los muestra de forma intuitiva al usuario.
Con el comando netdiscover podremos ver todos los elementos conectados a la red que están a nuestro alcance.
- 192.168.153.1 : Router de la organización.
- 192.168.153.129 : Máquina con SO Windows 7 x64. La máquina CTF.
- 192.168.153.131 : Máquina con SO Windows Server 2008 R2.
- 192.168.153.136 : Máquina con SO Windows Server 2008 R2.
- 192.168.153.130 : Máquina con SO Linux Ubuntu.
- 192.168.153.139 : Máquina atacante con SO Kali Linux. Nuestra máquina.
5. Fase de escaneo y análisis de vulnerabilidades de la máquina CTF con IP 192.168.153.129
Tras la recolección de la información en las fases anteriores, comenzaremos con la fase de escaneo y análisis de vulnerabilidades. El objetivo es descubrir sistemas operativos, puertos abiertos, servicios vulnerables, rutas de comunicaciones.
En esta fase vamos a enviar paquetes de manera activa a la máquina víctima, por lo que en la medida de lo posible deberemos ser cautelosos midiendo nuestra agresividad de escaneo para intentar no levantar sospechas, ya que todo quedará registrado en los distintos logs del sistema de cada máquina víctima, además de poder haber sistemas SIEM monitorizando todo lo que ocurre en la red. Tras encontrar las vulnerabilidades deberemos analizarlas y organizar los resultados obtenidos para después planificar el método de ataque que más convenga en la fase de explotación.
Para dar cumplimiento a esta fase vamos a utilizar las siguientes herramientas: Nmap, Sparta, SuperScan, OWASP ZAP, OpenVAS, Nessus, entre otras.
Para empezar vamos a utilizar Zenmap para ver puertos y servicios de la máquina víctima:
El resultado del escaneo son cinco (5) puertos abiertos: 3306 (MySQL), 3389 (RDP), 139 y 445 (SMB) y 135 (RPC).
En este caso al ser una máquina Windows 7 y tener habilitados los puertos 139 y 445 en la fase de explotación veremos si es vulnerable a Eternalblue y desde ahí intentar acceder a esa base de datos que no sabemos qué contendrá. Otra opción es intentar comprometer el protocolo RDP de escritorio remoto mediante algún exploit conocido como «BlueKeep«, o sino mediante el uso de fuerza bruta, como bien podemos ver en el artículo de: Ataques a escritorio remoto, entrada de Ransomware.
a) Lanzamiento de OpenVas
Legados a este punto vamos a utilizar OpenVas, ya que es junto a Nessus una de las mejores herramientas para el análisis de vulnerabilidades de sistemas informáticos.
Al iniciar OpenVas nos solicita acreditación de acceso, si es la primera vez que lo vamos a utilizar, al cargar el programa nos presenta las nuevas credenciales.
- openvas-status: Para actualizar la base de datos
- openvas-start: Para iniciar la aplicación y que nos facilite las credenciales.
Una vez inicializada, abrimos el navegador en http://127.0.01:9392 para comenzar a trabajar con la aplicación e introducimos las claves de acceso.
Una vez dentro ya es introducir el target y comenzar el escaneo.
El resultado del escaneo lo he guardado en el documento “Report_OpenVas_W7.pdf”. En la imagen se muestra las vulnerabilidades encontradas según severidad. La más importante es la del servicio smb.
Con los resultados obtenidos ya podemos dar paso a la siguiente fase.
6. Fase de explotación de la máquina CTF con IP 192.168.153.129
En esta fase vamos a enumerar y ordenar toda la información que hemos obtenido en las fases anteriores para detallar nuestro plan de ataque y comenzar con la explotación de las máquinas a auditar.
Estamos realizando una auditoría interna por lo que tenemos que realizar los ataques de una forma controlada, no se nos puede ir de las manos y dejar los servicios inoperativos o inaccesibles.
Como vimos en la fase anterior esta máquina es vulnerable a “Eternalblue” ya que tiene el puerto 445 abierto, correspondiente al servicio SMB. Parece ser que no está parcheado el sistema operativo contra este agujero de seguridad así pues, vamos a comenzar el ataque.
Recordamos que la vulnerabilidad que utiliza Wannacry para propagarse es la famosa MS17-010 denominada así por el boletín oficial de Microsoft. Para explotar esta vulnerabilidad existe una herramienta llamada Eternalblue que fue liberada por ShadowBrokers ( un grupo de hackers involucrados en el hackeo a la NSA) la cual explota la vulnerabilidad y afecta al protocolo SMB ( Servicio para compartir archivos e impresoras) que ahora está portada a Metasploit por Elevenpaths.
Lo primero que vamos a hacer es abrir Metasploit en nuestra máquina auditora, ya vamos a lanzar los módulos auxiliary y exploit correspondientes para la explotación del recurso mencionado. Primeramente vamos a chequear si la víctima es susceptible de ataque a Eternalblue y en caso afirmativo proceder a la explotación para acceder a la máquina víctima.
Utilizamos el módulo auxiliary y buscamos dentro el escáner de SMB para la vulnerabilidad que nos ha reportado anteriormente OpenVas.
use /auxiliary/scanner/smb/smb_ms17_010
show options
set RHOSTS 192.168.153.129
exploit
A modo de información, decir que podríamos lanzar este escáner a toda la subred para detectar las máquinas vulnerables a este servicio. La forma de hacerlo sería poner en RHOSTS 192.168.153.2-192.168.153.254 o RHOSTS 192.168.153.1/24
En este caso, confirmamos que nuestro objetivo es vulnerable a MS17-010, así que vamos a proceder a su explotación. El siguiente paso es buscar el exploit adecuado. Para ello podemos hacer uso de herramientas como «searchsploit» o buscar en el propio framework de Metasploit mediante el comando «search». Una vez realizada dicha labor, hemos encontrado un exploit que tras su lanzamiento exitoso, nos proporcionará acceso a la máquina víctima, y además realizará automáticamente una escalada de privilegios.
use exploit/windows/smb/ms17_010_eternalblue
RHOSTS 192.168.153.129
RPORT 445
Exploit
Una vez lanzado el exploit podemos ver cómo ya estamos dentro de la máquina víctima con privilegios de usuario “SYSTEM” mediante una Shell de comandos estándar. Es por ello que a continuación vamos a proceder a obtener una “Shell Meterpreter” para poder llevar a cabo una intrusión más profesional.
shell : Volvemos a la Shell de comandos de la víctima.
whoami : comprobamos qué usuario somos.
sessions –l : información de las sesiones abiertas
sessions –u 1 : hacemos upgrade a una sesión Meterpreter, la sesión 1
Como podemos ver tenemos 2 sesiones, una con meterpreter y la otra con shell de comandos de la máquina víctima. Podemos jugar con las sesiones dejándolas en segundo plano mientras trabajamos con una y luego volver a la otra.
Nos conectamos con la sesión 2 para empezar a trabajar con meterpreter a través del comando “sessions -i 2”. Comprobamos qué usuario somos con “getuid” y comprobamos que somos el usuario “system”, con lo que vamos a poder realizar cualquier acción sin problema de permisos.
Con el comando background o ctrl+z podemos dejar la sesión en segundo plano para continuar haciendo trabajos con otras sesiones, también podemos pasarnos a utilizar una Shell estándar del sistema de la víctima mediante el comando “shell”.
Desde aquí podemos ver los servicios que están corriendo en el sistema, así como navegar por el árbol de directorios. Llegados a este punto podríamos realizar la fase de post explotación donde se refleja la permanencia al sistema de la víctima, instalando malware tipo backdoor para tener acceso al sistema cada vez que lo necesitemos. No obstante, al tratarse de una auditoría de hacking ético profesional, no se contempla ni dicha fase, ni la fase de eliminación de huellas, más propias de operaciones Red Team.
Brujuleando por el sistema encontramos en el directorio “C:\CampusVirtual\server” un servidor apache, así que vamos a iniciarlo ya que cuando hemos sacado el listado de procesos no estaba iniciado.
start xampp_start.exe
Encontramos también en una aplicación llamada “Moodle” así que vamos a iniciarla también desde “C:\CampusVirtual\”
start Moodle.exe
Moodle es una herramienta de gestión de aprendizaje, o más concretamente de «Learning Content Management», de distribución libre, escrita en PHP. Lo que viene siendo una plataforma para la realización de cursos y exámenes online. Además, al ejecutar la plataforma podemos observar que se inicia un servicio de base de datos, y ya sabemos por la fase de escaneo de puertos y servicios, que la máquina víctima tiene el puerto 3306 abierto, que es el de BBDD MySQL.
Seguimos buscando y encontramos un archivo de configuración con los datos de acceso a la base de datos.
Con esto podríamos acceder a la base de datos del Moodle desde la Shell de comandos de la máquina víctima, pero debido a ciertos problemas de enrutamiento se nos complica el conectar al servicio de “MySQL”, por lo que vamos a utilizar un plan B, el cual consiste en acceder por escritorio remoto a la máquina víctima, ya que tiene habilitado el puerto 3389 perteneciente a tal servicio (y si no lo tuviera decir que hay técnicas para habilitarlo). No tenemos credenciales de acceso en claro, pero al tener una Shell de comandos con privilegios de usuario «System», estamos en la capacidad de cambiar la contraseña de alguno de los usuarios que hay creados en la máquina víctima para posteriormente poder acceder por RDP.
net user :: Para ver todos los usuarios que hay creados en el sistema.
net user R007_1N51D3R 123456 :: Cambiamos la credencial de acceso del usuario R007_1N51D3R por 123456
rdesktop 192.168.153.129 : Para acceder por escritorio remoto
Al acceder vemos en el escritorio un acceso directo a Moodle, que al abrirlo nos abre la web de acceso, ya que el servicio lo habíamos iniciado anteriormente.
Aunque tenemos acceso a la interfaz gráfica del Moodle, no podemos ingresar porque no conocemos credenciales de acceso. A continuación vamos a ver cómo desde la propia máquina víctima, vamos a acceder a la base de datos del Moodle y sacar credenciales de acceso del usuario «administrador» para poder tener acceso a los exámenes de la plataforma.
Primeramente, deberemos ingresar en la BBDD para poder averiguar la contraseña de acceso del administrador a la plataforma gráfica. Para ello no tenemos más que ir navegando por la máquina en busca de archivos de interés, como por ejemplo archivos de configuración de servicios. Como hemos visto con anterioridad, en la siguiente imagen se muestra cómo en el archivo «config.php» encontramos los datos de acceso a la BBDD del Moodle.
Con las credenciales encontradas procedemos a ingresar en la BBDD del Moodle.
Navegando por la BBDD encontramos las credenciales de los usuarios registrados en la plataforma. Como podemos observar la contraseña de acceso está hasheada en formato MD5.
Procedemos a descifrar mediante un servicio online la contraseña hasheada en MD5 del administrador.
Una vez obtenida la contraseña descifrada, ya podemos ingresar en la plataforma Moodle y el CTF queda finalizado.
7. Fase de análisis de las vulnerabilidades encontradas y recomendaciones
En esta fase se enumeran y analizan las vulnerabilidades encontradas a lo largo del ejercicio, y se proponen las recomendaciones oportunas para la mitigación de las mismas.
Tras haber realizado la explotación de la máquina CTF podemos concluir que presenta fallas de seguridad de importante gravedad, y que abre posibles vías que un atacante puede explorar para afianzarse y atacar la red de datos empresarial donde se aloja.
Como recomendaciones generales a implantar a nivel global en los sistemas informáticos de la organización se enumeran las siguientes:
- Actualizar los Sistemas Operativos. No puede ser que haya sistemas operativos obsoletos como «Windows 7» vulnerable a “Eternalblue”.
- Deshabilitar los servicios innecesarios e instalar todos los “hotfixes” de seguridad. Actualizar los sistemas y sus programas de manera automática cada vez que haya versiones o actualizaciones disponibles.
- Consultar periódicamente las alertas de seguridad de todos los sistemas operativos.
- Mantener todo el software correctamente actualizado a sus últimas versiones. En referencia a los sistemas de antivirus y otros sistemas similares, se aconseja comprobar en cada reinicio de los sistemas y en horarios semanales programados que cumplen con la política de actualizaciones.
- En referencia al desarrollo seguro de aplicaciones, tanto de sistemas como de Web, se debe sanitizar los parámetros de entrada para evitar posibles inyecciones de código por atacantes que bien instruidos puedan realizar ejecución de comandos remotos.
- En cuanto a las credenciales (usuarios y contraseñas) a emplear en la organización se deberá establecer una política de creación y cambio de contraseñas, así como una restricción de los permisos concernientes a aquellos usuarios que deban mantener una privacidad adecuada a su estatus en la organización. Establecer credenciales de acceso robustas y con seguridad alta, es decir, que cumplan con unos mínimos de seguridad preestablecidos, como por ejemplo que contengan letras mayúsculas, otras minúsculas, números, caracteres extraños y una longitud mínima de 10 caracteres.
- Se deberá establecer una política de generación de backups de la información con una frecuencia prudencial, con el objetivo de no perder aquellos datos de cierta relevancia de la organización si, por ejemplo, un cibercriminal consigue acceso a los sistemas de la empresa e instala un ransomware.
- Se deberán implantar en la organización jornadas de concienciación para el personal de la empresa con la finalidad de reducir los ciberataques que la organización pueda sufrir, especialmente aquellos ciberataques que tengan como principal vector de ataque la ingeniería social.
- Se deberán crear medidas de protección física para restringir el acceso a los distintos sistemas de la organización, mediante el uso de sistemas de biometría, entre otros, con la finalidad de asegurarse que solo acceden a los recursos de la empresa de carácter confidencial aquellos usuarios que la empresa ha determinado que deben tener acceso a los mismos, bien por la labor que desempeñan en la organización o por la causa que sea.
Por último, me gustaría recalcar que la medida más importante a implantar en cualquier organización es la de formar en materia de concienciación a todos sus empleados, ya que estos son siempre el eslabón más débil de la cadena, y son ellos quienes estarán en el punto de mira de diversos ataques de ingeniería social, ante los que deberán estar preparados.
8. Fase de informes
En esta última fase se informa al cliente de todas las pruebas realizadas en la auditoría y los resultados obtenidos. Así pues, aportaremos toda la información de manera clara y concisa para que el cliente final pueda entender todo lo acontecido durante la auditoría.
Se expondrá cada prueba realizada, la forma de ataque y las herramientas utilizadas para su análisis y explotación. Se detallarán las vulnerabilidades encontradas en base a su criticidad según la calculadora CVSS, y las recomendaciones para mitigarlas.
Teniendo en cuenta que hay dos tipos de informes bien diferenciados entre sí, el ejecutivo y el técnico, deberemos tener en cuenta a quién irá dirigido el informe, ya que el informe ejecutivo irá dirigido a aquellos profesionales de la empresa que no tengan conocimientos técnicos en la materia de ciberseguridad (cargos directivos, etc.), y el informe técnico irá dirigido a aquellos profesionales de la empresa que presenten conocimientos sobre la materia (departamento IT, etc.).
9. Conclusiones
A lo largo de este artículo hemos visto cómo llevar a cabo una auditoría tipo «Pentest» o «hacking ético» en un sistema informático, aprovechando el laboratorio de pruebas de JAYMON SECURITY con su máquina CTF 2.
Tras la finalización de la auditoría podemos sacar la conclusión de que se deben actualizar los sistemas y proporcionar configuraciones sólidas de los mismos, pues de no ser así la organización estará siempre expuesta a sufrir ciberataques. Tampoco debemos olvidarnos de que a la hora de montar nuevas aplicaciones deberemos hacerlo siguiendo una guía de configuración segura mediante métodos de «hardening» testados con la finalidad de asegurar el buen funcionamiento, y que de esta manera la propia aplicación o servicio que esté en red no degenere en una amenaza para la propia organización, como hemos podido comprobar con la plataforma Moodle.
Para finalizar, decir que lo más importante y el mayor reto para cualquier organización es el poder mitigar la falta de concienciación de sus empleados en materia de ciberseguridad, ya que de nada vale que todos los sistemas informáticos estén bien parcheados y actualizados si éstos posteriormente hacen un mal uso de los mismos debido a su falta de formación en la materia. Para solucionar dicho problema se recomienda firmemente el impartir en su beneficio distintos cursos y conferencias para poder así fortalecer lo que supone ser el eslabón más débil de la cadena.
De estar interesado en adquirir conocimientos introductorios a hacking ético puede optar por matricularse en nuestro curso básico de hacking ético, o si prefiere adquirir conocimientos más avanzados en ciberseguridad ofensiva puede adquirir nuestro curso avanzado.