Existen varios enfoques iniciales utilizados por los delincuentes cuando intentan comprometer un entorno, siendo el más extendido en el mundo el ataque de suplantación de identidad (phishing), que suele depender de la interacción con la persona que será el objetivo. Sin embargo, existe otro método muy usado que puede no depender de ningún tipo de interacción con las personas: la explotación de vulnerabilidades.
Aunque se trata de una cuestión muy compleja, tanto descubrir vulnerabilidad como desarrollar el software que se aprovechará de la vulnerabilidad, existe software que ya cuenta con una serie de herramientas y exploits listos para ser empleados, como Metasploit Framework de Rapid7.
Este framework, que está instalado por defecto en uno de los sistemas operativos más extendidos entre la comunidad de seguridad, Kali Linux, también puede instalarse en Windows, MacOS y otras distribuciones de Linux como Fedora, Red Hat y CentOS.
Para este artículo, utilizaré un Kali Linux representando al atacante y un sistema operativo preparado para ser comprometido, Metasploitable 2.
A pesar de tener una máquina vulnerable conocida como objetivo, es muy importante tener en cuenta que, en el momento de escribir este artículo, el framework Metasploit viene con 2315 exploits por defecto y la posibilidad de añadir exploits de otras fuentes. Para este artículo, exploraré solo una de estas miles de vulnerabilidades, que, como las demás, también puede usarse para interactuar con entornos reales y comprometerlos. Es una herramienta poderosa con características que también pueden ser utilizadas por personas malintencionadas y es altamente recomendable no despreciarla o subestimarla.
Hechas las salvedades necesarias sobre el entorno de pruebas, voy a simular cómo un ciberdelincuente podría interactuar con un servidor objetivo. Y el primer paso, una vez identificada la IP, es ver qué posibilidades de entrada se le presentan al servidor, por lo que realicé un sencillo escaneo de todos sus puertos.
Hay varias posibilidades para entrar en el servidor, pero elegí el servidor de páginas para fines de demostración.
El escaneo de puertos utilizado anteriormente (nmap) tiene el potencial de ser mucho más robusto y proporcionar resultados con mucha más información, pero Metasploit también tiene opciones de escaneo y utilizaré el módulo auxiliar HTTP Scanner para identificar si alguna otra información será útil para el ataque.
Para utilizar esta función, escribí en la consola de la herramienta: use auxiliary/scanner/http/http_version. Tras este paso, empleé el comando options para identificar qué campos eran necesarios para que funcionara. Como se muestra en la imagen superior, el único campo que hay que rellenar es RHOST, que se usa para especificar la(s) IP(s), red(es) o host(es) que serán analizados.
Tras rellenar la IP de nuestro objetivo, ejecuté el comando run para poder realizar el análisis. El resultado muestra varios detalles más sobre el servicio, entre ellos que se trata de un Apache que ejecuta la versión 2.2.8 y que utiliza recursos PHP
Como PHP es un lenguaje ampliamente conocido, hay algunas características presentes en su instalación que pueden permitir a alguien obtener aún más información del sistema. Cuando intenté acceder a esta página estándar con esta información, me di cuenta de que estaba presente en el servidor.
Entonces busqué formas de explotar vulnerabilidades relacionadas con PHP. Como sé que la herramienta tiene algunas opciones, utilicé la función de autocompletar escribiendo use exploit/multi/http/php y pulsando la teclaTAB dos veces – esto hace que aparezcan las opciones que se muestran en la imagen de abajo. A continuación, elegí utilizar php_cgi_arg_injection
Al igual que con otras funciones de Metasploit, volví a utilizar el comando options para identificar qué requisitos eran necesarios para que el exploit se ejecutara en nuestro objetivo.
En este caso, el uso del exploit estaba asociado a un payload, es decir, al intérprete que recibe la conexión inversa cuando se explota con éxito la vulnerabilidad.
Para que esto funcionase, era necesario rellenar RHOSTS, configurando la IP de nuestro objetivo, y LHOST apuntando a la IP de la interfaz que recibe la conexión inversa.
Tras la configuración, ejecuté el comando exploits. Si el objetivo cumple los requisitos para explotar la vulnerabilidad, se crea una conexión inversa y el atacante es transportado a la consola de meterpreter, lo que le permite ejecutar comandos directamente dentro del objetivo.
La lista de comandos es amplia y las posibilidades son diversas. Para ilustrarlo, he ejecutado los siguientes comandos:
- getuid:Permite identificar al usuario de la sesión establecida. En el caso del ejemplo anterior, el usuario es www-data, responsable del mantenimiento del servicio que fue explotado. Las acciones de este tipo de usuario suelen estar limitadas y para tener el control total del servidor sería necesario escalar privilegios, lo que no se demostrará en este artículo.
- sysinfo: Permite conocer la situación es sysinfo. Proporciona cierta información sobre el sistema operativo que ha sido comprometido y facilita cualquier búsqueda de información o incluso la escalada de privilegios.
- Is: Es un ejemplo de los posibles comandos utilizados para navegar entre los archivos del servidor. Puedes realizar las mismas acciones que si estuvieras en una consola local en el propio servidor, como navegar entre carpetas, crear y eliminar archivos, descargar o subir información, matar procesos, entre muchas otras. Vale la pena señalar que cambiar ciertas partes del sistema, cualquiera que sea, dependerá de cuántos privilegios tenga el usuario. En el caso del usuario en cuestión, www-data, las acciones del sistema probablemente no tengan los privilegios.
Herramientas como Metasploit Framework están diseñadas para ayudar a los profesionales de la seguridad a hacer pruebas en entornos, pero, como cualquier otra herramienta, la forma de uso depende del carácter de la persona que la usa.
Personas malintencionadas con conocimientos mínimos, que se encuentran fácilmente en foros y vídeos de Internet, pueden tener un impacto significativo en un entorno.
Fuentes: