Pentester e Intrusión en un sistema Versus Analista Forense y Detección de Intrusión (Parte I de III)
A lo largo y ancho de Internet no son difíciles de encontrar casos prácticos que explican el uso de diferentes técnicas y herramientas para aprovechar vulnerabilidades en sistemas, aplicaciones, dispositivos móviles, redes de datos, etcétera. De la misma forma, aunque en menor medida, es posible encontrar sin mucha dificultad supuestos prácticos en los que se realizan acciones de detección y análisis de distintos tipos e incidentes de seguridad.
En el primer caso estaríamos dentro del ámbito de la seguridad ofensiva, los red team, el pentesting y el hacking ético; y en el segundo, nos estaríamos moviendo dentro del ámbito de la seguridad defensiva, los blue team y el DFIR (Digital Forensic and Incident Response). Sin embargo, lo que no es tan fácil de encontrar son supuestos prácticos que aúnen las dos aproximaciones, es decir, supuestos prácticos en los que se realicen una serie de acciones para lograr vulnerar un sistema e inmediatamente después se analice el rastro dejado por dichas acciones en los distintos elementos o artefactos del sistema.
Figura 1: Pentester e Intrusión en un sistema Versus
Analista Forense y Detección de Intrusión (Parte I de III)
En el primer caso estaríamos dentro del ámbito de la seguridad ofensiva, los red team, el pentesting y el hacking ético; y en el segundo, nos estaríamos moviendo dentro del ámbito de la seguridad defensiva, los blue team y el DFIR (Digital Forensic and Incident Response). Sin embargo, lo que no es tan fácil de encontrar son supuestos prácticos que aúnen las dos aproximaciones, es decir, supuestos prácticos en los que se realicen una serie de acciones para lograr vulnerar un sistema e inmediatamente después se analice el rastro dejado por dichas acciones en los distintos elementos o artefactos del sistema.
Ethical Hacking Didáctico
Aplicando un enfoque didáctico, son indudables las ventajas que aporta el trabajo con este tipo de casos prácticos. Desde el punto de vista ofensivo, ayuda a tomar consciencia de la mayor o menor incidencia que las acciones realizadas durante una auditoría de seguridad o test de intrusión dejan en los sistemas, lo cual redundará en una mejora a la hora de tomar decisiones durante un trabajo de este tipo.
Figura 2: Libro de Ethical Hacking 2ª Edición de Pablo González en 0xWord |
Por otro lado, desde el punto de vista defensivo, ayuda a comprender mejor el proceso por el cual han sido generadas las evidencias encontradas durante un proceso de análisis o el motivo por el cual se produce una alerta en nuestros sistemas de monitorización, esto redundará en una mayor eficiencia a la hora de analizar los artefactos de un sistema o a la hora de diseñar alertas personalizadas o indicadores de compromiso (IoCs) para nuestros sistemas de monitorización.
Durante el curso que ahora acaba, he impartido, en el CIFP Rodolfo Ucha Piñeiro de Ferrol, los módulos de Análisis forense informático y Bastionado de redes y sistemas que forman parte del nuevo Curso de especialización en ciberseguridad en entornos de las tecnologías de la información de la familia profesional de Informática y comunicaciones. Durante el transcurso del mismo, y principalmente para el primero de los módulos mencionados, he tenido que diseñar e implementar diferentes supuestos prácticos de este estilo para poder trabajar posteriormente con distintos artefactos y herramientas forenses que nos permitiesen analizar lo sucedido.
A modo de ejemplo, describo a continuación como implementar y analizar un escenario práctico sencillo sobre una máquina metasploitable 3 basada en Ubuntu Server 14.04. La utilización de máquinas de este estilo, con diferentes vulnerabilidades en los servicios que implementan, facilita mucho la tarea de preparación de un escenario ya que, sobre el mismo sistema, es posible realizar una gran variedad de acciones que tendrán distintos tipos de impacto sobre los diferentes artefactos del sistema.
Durante el curso que ahora acaba, he impartido, en el CIFP Rodolfo Ucha Piñeiro de Ferrol, los módulos de Análisis forense informático y Bastionado de redes y sistemas que forman parte del nuevo Curso de especialización en ciberseguridad en entornos de las tecnologías de la información de la familia profesional de Informática y comunicaciones. Durante el transcurso del mismo, y principalmente para el primero de los módulos mencionados, he tenido que diseñar e implementar diferentes supuestos prácticos de este estilo para poder trabajar posteriormente con distintos artefactos y herramientas forenses que nos permitiesen analizar lo sucedido.
A modo de ejemplo, describo a continuación como implementar y analizar un escenario práctico sencillo sobre una máquina metasploitable 3 basada en Ubuntu Server 14.04. La utilización de máquinas de este estilo, con diferentes vulnerabilidades en los servicios que implementan, facilita mucho la tarea de preparación de un escenario ya que, sobre el mismo sistema, es posible realizar una gran variedad de acciones que tendrán distintos tipos de impacto sobre los diferentes artefactos del sistema.
Además, es fácil encontrar abundante documentación sobre cómo explotar las vulnerabilidades que presentan. Obviamente, para ilustrar la explotación y análisis de vulnerabilidades más recientes será necesario partir de máquinas con sistemas más actuales.
Explotación de vulnerabilidades
Para realizar la intrusión utilizaremos una máquina Kali Linux situada en la misma red que la máquina objetivo. Comenzaremos realizando un escaneo con nmap sobre todos los puertos de la máquina (-p) tratando de obtener la versión del servicio que se está ejecu- tando (-sV) y estableciendo un número mínimo de paquetes enviados por segundo (--minrate 7500).
Explotación de vulnerabilidades
Para realizar la intrusión utilizaremos una máquina Kali Linux situada en la misma red que la máquina objetivo. Comenzaremos realizando un escaneo con nmap sobre todos los puertos de la máquina (-p) tratando de obtener la versión del servicio que se está ejecu- tando (-sV) y estableciendo un número mínimo de paquetes enviados por segundo (--minrate 7500).
En este caso, vamos a aprovechar las vulnerabilidades existentes sobre el servidor de Ruby on Rails que se está ejecutando en el puerto 3500. Y haremos sobre este entorno un poco de Pentesting con Metasploit.
Figura 4: Metasploit para Pentesters Gold Edition de Pablo González en 0xWord |
Utilizaremos para ello el exploit rails_actionpack_inline_exec de Metasploit que sacapa partido de la explotación de la vulnerabilidad con CVE 2016-2098. Primeramente, estableceremos los parámetros necesarios para ejecutar el exploit.
Acto seguido lo ejecutamos e inmediatamente conseguimos una shell remota, pero con el usuario chewbacca que no tiene permisos de administrador.
Trataremos de hacer ahora una Escalada de Privilegios que nos dé permisos de root dentro de la máquina. Para ello, primero miramos la versión de sistema operativo y el kernel de la máquina víctima.
Luego, haciendo una búsqueda por los exploits disponibles para dicha versión, seleccionaremos uno que nos permita una Escalada de Privilegios.
Una vez elegido, lo que haremos a continuación será descargar el fichero con el exploit dentro de la máquina víctima, en este caso el 37292.c, compilarlo y ejecutarlo. Lo descargaremos de https://www.exploit-db.com/download/37292:
Lo renombramos, compilamos y ejecutamos. Tras la ejecución vemos que hemos conseguido hacernos con privilegios de root dentro de la máquina víctima.
Figura 5: Configuración del exploit en Metasploit
Acto seguido lo ejecutamos e inmediatamente conseguimos una shell remota, pero con el usuario chewbacca que no tiene permisos de administrador.
Figura 6: Conseguido permisos de usuario
Trataremos de hacer ahora una Escalada de Privilegios que nos dé permisos de root dentro de la máquina. Para ello, primero miramos la versión de sistema operativo y el kernel de la máquina víctima.
Figura 7: Versión del kernel de la máquina víctima
Luego, haciendo una búsqueda por los exploits disponibles para dicha versión, seleccionaremos uno que nos permita una Escalada de Privilegios.
Figura 8: Búsqueda de exploits para escalada de privilegios
Una vez elegido, lo que haremos a continuación será descargar el fichero con el exploit dentro de la máquina víctima, en este caso el 37292.c, compilarlo y ejecutarlo. Lo descargaremos de https://www.exploit-db.com/download/37292:
Figura 9: Descarga del exploit de EoP que vamos a usar
Lo renombramos, compilamos y ejecutamos. Tras la ejecución vemos que hemos conseguido hacernos con privilegios de root dentro de la máquina víctima.
Figura 10: Compilación, ejecución y Elevación de Privilegios a root hecha.
Vamos a habilitar ahora un mecanismo para facilitar accesos posteriores. Ya hemos conseguido entrar pero ahora hay que conseguir la permanencia, que es otra de las fases de todo buen Ethical Hacking. Cómo conseguir tener control perdurable a lo largo del tiempo, incluso después de los reinicios y de la aplicación del parche a las vulneratilidades explotadas para conseguir el acceso inicial.
Figura 11: Pentesting con Kali Silver Edition |
Para ello, vamos a mirar los usuarios que hay en el sistema y vamos a elegir uno de los que crean por defecto los servicios instalados y con los que, en teoría, no es posible iniciar una sesión interactiva. En este caso, nos fijamos en el usuario www-data. La daremos una contraseña, le indicaremos una shell de inicio y lo añadiremos al grupo sudo:
Vamos a comprobar ahora si es posible conectarnos por SSH con dicho usuario. Lo haremos desde otra terminal de nuestra máquina Kali Linux.
Comprobamos cómo, efectivamente, hemos podido acceder al sistema y obtener permisos de root haciendo uso del usuario www-data que previamente hemos dejado bien preparado para poder volver a esta máquina siempre que queramos.
Y hasta aquí nuestra toma de control total de una máquina, tal y cómo lo haría un atacante de verdad. Pero toda intrusión deja rastros, y aquí no los hemos borrado pertinentemente. Esto es algo que, curiosamente, no se enseña en los cursos de test de penetración. La razón es bastante simple, cuando alguien es contratado para realizar un proyecto un Ethical Hacking no tiene porque preocuparse de que los analistas forenses lo localicen, pero los malos de verdad si que están preocupados por eso... o deberían.
Figura 12: Usuarios disponibles en el sistema
Vamos a comprobar ahora si es posible conectarnos por SSH con dicho usuario. Lo haremos desde otra terminal de nuestra máquina Kali Linux.
Figura 13: Preparando el usuario www-data
Comprobamos cómo, efectivamente, hemos podido acceder al sistema y obtener permisos de root haciendo uso del usuario www-data que previamente hemos dejado bien preparado para poder volver a esta máquina siempre que queramos.
Figura 14: Accediendo como www-data
Y hasta aquí nuestra toma de control total de una máquina, tal y cómo lo haría un atacante de verdad. Pero toda intrusión deja rastros, y aquí no los hemos borrado pertinentemente. Esto es algo que, curiosamente, no se enseña en los cursos de test de penetración. La razón es bastante simple, cuando alguien es contratado para realizar un proyecto un Ethical Hacking no tiene porque preocuparse de que los analistas forenses lo localicen, pero los malos de verdad si que están preocupados por eso... o deberían.
En las siguientes partes vamos a ver cómo un trabajo de Análisis Forense puede descubrir todo lo que ha pasado a la hora de hacer un post-mortem de una intrusión, pero eso lo vermos en la siguiente parte de este artículo.
Saludos,
Autor: Andrés del Río
No hay comentarios:
Publicar un comentario