No hará mucho hablamos en este blog sobre pen testing, o si lo preferís, sobre cómo conducir tests de penetración. Lo hacíamos de una manera muy resumida, intentando diferenciar esta disciplina de la auditoría de sistemas.
Hoy vamos a dar más pistas concretas sobre cómo conducir un test de penetración. Y lo vamos a hacer recomendando este buen documento publicado en Infosecwriters, en el que Aelphaeis Mangarae nos cuenta cómo hacer una enumeración de vulnerabilidades.
El documento viene a contarnos pues cuál es el segundo paso. Entendamos que el primero es merodear, es decir, extraer la máxima información posible de un sistema. Sobre este primer paso, comentar que también hay referencias en el documento, con lo que es posible familiarizarse con los conceptos de information gathering o recolección de información. En el paper podemos encontrar información sobre:
- Descubrimiento de máquinas en servicio
- Detección de sistemas operativos que corren las máquinas descubiertas
- Ataques de fuerza bruta contra determinados servicios
- Enumeración SMTP
- Enumeración SMB
- Huellas y trazas de servidores Web
- Vulnerabilidades en sistemas Web
- Fuzzing para explotar vulnerabilidades de inyeccion SQL
- Análisis automatizado de vulnerabilidades
- Análisis de reglas de firewall
- Empleo de numerosas IPs distintas para ocultar nuestro origen
- Utilización de exploits públicos
- Utilización de Metasploit
Veamos un ejemplo simplificado de algunas de las técnicas que se citan en el documento. Vamos a intentar explotar mi servidor de correo :)
1.- Identificación del servicio en marcha
Ejecutamos un telnet contra los puertos 25 y 110 de mi hospedaje, con el resultado siguiente:
220 hospe66.hospedajeydominios.com ESMTP Exim 4.63 Mon, 20 Nov 2006 19:52:36 +0100
+OK POP3 Welcome to vm-pop3d 1.1.7e <[email protected]>
En negrita aparecen las versiones diagnosticadas.
2.- Determinación de vulnerabilidades técnicas
Consultamos las vulnerabilidades conocidas para Exim. Buceamos un poco y vemos que la última vulnerabilidad conocida afecta a la versión 4.43 y anteriores. Como yo tengo la 4.63, no es factible explotar el servidor a través de vulnerabilidades conocidas.
En el caso de vm-pop3d, lo primero es averiguar qué es vm-pop3d. Se trata de Virtual Mail, de Reedmedia, un servidor POP3. Sobre este producto ya es más difícil enumerar vulnerabilidades conocidas, con lo que lo adecuado es irse a la página del fabricante y ver cuál es la última versión, asumiendo que la última versión está libre de vulnerabilidades conocidas.
En este caso comprobamos que la última versión estable es la 1.1.6, y que actualmente, están desarrollando una versión experimental numerada como 1.1.7f. Como tengo la 1.1.7e, asumo que es la última versión en desarrollo, y que no es explotable.
Tras esto sólo quedaría realizar ataques mediante fuerza bruta y verificar si los servidores de correo admiten relay, a título de comprobaciones adicionales. En este caso, no lo admite, y las claves son de un grado de complejidad suficiente, con lo que es factible operar con este servidor de correo con garantías de seguridad, ya que no posibilita la intrusión a mi sistema de hospedaje, ni permite realizar usos indebidos del mismo.
Esto es una enumeración elemental de vulnerabilidades, reducida en este caso a la mínima expresión, ya que en un caso real hay que hacer esto con todos los servicios disponibles, e ir explotando para cada servicio vulnerable el problema de seguridad que hayamos diagnosticado. En el documento que os refiero, hay mucha más información.