En esta entrada voy a explicar un poco de teoría sobre lo que conocemos, o referimos como “Pentest”, “Pentesting” “Prueba de penetración” o conceptos similares.
Tenemos claro que todo administrador debe ser consciente del nivel de seguridad que tiene aquello que gestiona y de si se cumplen, o no, las políticas de la organización a la que pertenece. Esto no es sólo un trabajo a realizar cada equis cantidad de tiempo sino que debe estar acompañado de un trabajo diario, concienciación de usuario, buena labor del personal de IT, compromiso, colaboración entre sectores, y un largo etcétera.
Actualmente existen estándares definidos como OSSTMM ; ISSAF ; OWASP ; WASC-TC ; PTES ; OWISAM ; que abordan los pasos, técnicas y tecnologías para llevar a cabo auditorias en distintas ámbitos, ya que como es lógico cada cual tiene sus propias características y necesidades.
Lo ideal sería contratar los servicios de empresas especializadas en el área concreta, pero por desgracia esto no siempre es posible y por tanto, al margen que nuestra profesión nos lo requiera, tenemos que tener claro el marco general sobre el que se llevan a cabo las auditorías de seguridad o pruebas de penetración para conocer el “nivel de salud” de nuestra organización.
Antes de abordar ese marco han de definirse qué se entiende por “Pentesting”, “Penetration Testing” o “Pentest”. Dichos palabras hacen referencia al proceso que se sigue para evaluar en profundidad los niveles de seguridad de algún elemento “TIC”. Así mismo, una metodología consiste en el conjunto de reglas, prácticas y procedimientos que se emplean y utilizan durante el transcurso de una auditoría. Si unificamos ambos términos, obtendríamos lo que denominamos “Metodología de Pentesting” que no es más que los pasos a seguir empleando técnicas, ideas, herramientas y prácticas para evaluar el nivel real de seguridad del que disponen redes, aplicaciones, sistemas o combinación de todas, o parte, de ellas en un entorno definido. Bien de forma puntual o dentro de un plan de evaluación de riesgos, un ejercicio de Pentesting puede considerarse como la forma más agresiva de conocer los niveles de segurida. No podemos pensar que todo son cuestiones técnicas o tecnológicas. También existe un factor de psicología, en todo esto. También hay que poner en práctica métodos que nos permitan obtener información de los empleados o responsables que nos puedan facilitar el acceso a la información que buscamos.
Dicho esto, el “Pentesting” puede realizarse siguiendo dos enfoques. No sabemos nada de nuestra organización ni de los posibles objetivos, y poco a poco vamos descubriendo los sistemas, equipos, mapas de red, etc. hasta detectar posibles vulnerabilidades o deficiencias que puedan ser explotadas. Esto es lo que se conoce como “Black Box”, (Caja Negra). Por el contrario tenemos la “White Box” (Caja Blanca) que es justamente lo contrario. Previo al test, conocemos o tenemos información que nos puede facilitar mucho las cosas. A mitad de camino tenemos el “Grey Box” (Caja Gris) que no es más que una unión entre ambas.
Así mismo debemos tener presente que estas pruebas pueden realizarse de forma “interna”, esto es desde dentro de la propia organización o “externa”, desde fuera (Internet) hacia dentro de ella.
En cualquier caso no debemos confundir los términos “Pentesting” con “Evaluación de vulnerabilidades”. Evaluar vulnerabilidades consiste en detectar aquellos “agujeros” en los sistemas, dispositivos de comunicaciones, aplicaciones, etc. que puedan ser explotadas por un posible atacante o programa malicioso (malware). Se constata que existen deficiencias y de cómo éstas deben ser corregidas, mediante actualizaciones, parches o configuraciones adicionales. Sin embargo el “Pentester” irá un paso más allá y tratará de explotarlas, escalará privilegios y mantendrá el acceso para un uso continuado o como puente a otras acciones.
A continuación abordaremos, de forma teórica, los pasos generales a seguir para llevar a cabo un “pentesting” y explicaré brevemente en qué consiste cada uno de ellos.
- Definición de objetivos
Antes de ponernos a hacer nada tenemos que conocer el alcance de nuestras acciones, hasta donde vamos a llegar y cuáles son nuestros intereses y los de la organización a la que vamos a realizar la prueba. Por ejemplo debemos dar respuesta a preguntas como:
¿El qué y cómo debería ser testeado?
¿Cómo de largo y profundo debe de ser la prueba?
¿Cuáles son los activos que más criticidad tienen para la organización a auditar?
- Recolección de información
Una vez que ya sabemos hasta dónde vamos a llegar, contra qué, cómo de profunda va a ser la cosa, que elementos son los más importantes o relevantes para la empresa, es hora de ponerse a buscar información acerca de ella. En este punto el “Pentester” echará mano de foros, boletines, redes sociales, páginas web, registros públicos, buscadores, etc. etc. Esta información podrá ser desde dominios, subdominios, correos electrónicos, números de teléfono, cuentas de usuario, etc.
Descubrimiento de los objetivos
En esta fase tendremos que identificar el estado de la red, sistemas operativos, aspectos relativos a la arquitectura de la red. Esto nos proporcionará una idea de las tecnologías y dispositivos que en ella se encuentran, así como qué equipo están activos y el papel que juegan en la red. Esto puede realizarse de forma activa, por ejemplo realizando un escaneo de la red; o de forma pasiva conectando un esnifer de red como wireshark y ver el tráfico que llega y poder identificar o deducir el entorno en el que nos encontramos.
- Enumeración de los objetivos
Aquí ya la cosa cambia, y vamos un paso adelante del paso anterior. Ahora tocará localizar los puertos abiertos (o cerrados, que también nos arroja información) y los servicios que en ellos se ejecutan. Conocido esto, se tratará de identificar sus respectivas versiones lo cual nos permitirá buscar posibles vulnerabilidades. Otra tarea de este puntos es identificar posibles equipos de seguridad como Firewalls o IDS/IPS que puedan detectar y anunciar nuestra presencia, con lo que un buen “Pentester” debe tener presente andar con sigilo y prudencia y no lanzar aplicaciones muy ruidosas que hagan saltar todas las alarmas.
- Mapa de vulnerabilidades
Conociendo los equipos que hay, sistemas operativos, qué puertos tiene abiertos, que servicios corren en ellos, sus versiones, etc. ahora toca saber si existen vulnerabilidades acerca de ellos. Aquí podremos consultar bases de datos públicas donde se publican muchas todas ellas, para obtener más y lanzar algún escáner que otro. Será la suma de ambas la que nos proporcione una visión más completa, ya que a partir de ahí podremos localizar algún tipo de exploit para poder explotarlas.
- Ingeniería Social
Como decía en párrafos anteriores, no se trata sólo de cuestiones puramente técnicas, y es aquí cuando lo demostramos. El factor humano también es otro vector de ataque. El arte del engaño, de la persuasión, de la picaresca para obtener información o acceso a redes y sistemas es otro de los procedimientos a aplicar. Por ejemplo llamar por teléfono a algún técnico o administrador para obtener correos electrónicos, teléfonos o solicitar un reseteo de una contraseña que se “creía olvidada”.
- Explotación de objetivos
Esta es una de las partes donde después de todo lo que nos lo hemos “currado”, empezamos a sacarle un partido practico. Trataremos, mediante el uso de algún exploit o bug, penetrar en algún sistema o equipo con el fin llevar a cabo una determinada acción como puede ser obtener abrir conexiones contra otros equipos, listado de usuarios, contraseñas, o lo que sea.
- Escalada de privilegios
Una vez que hemos accedido a un sistema, el siguiente paso entre otros es escalar privilegios. Si robamos las credenciales de un usuario, lo más probable es que tenga limitados los accesos o permisos. Por ello, es importante tratar de adquirir los del “super usuario” o “root” para tratar de hacer o llegar donde los usuarios con menos no pueden.
- Mantenimiento de acceso
Bien, ya tenemos todo, el acceso y todo lo demás. Pero una cosa que nos interesa es poder acceder a este sistema siempre que queramos o necesitemos, ¿no? Por ello garantizar el acceso es muy importante ya que con esto nos aseguraríamos la permanencia en él. ¿Cómo conseguirlo? Por ejemplo tratando de instalar alguna puerta trasera, tunelizando tráfico, etc.
- Documentación e informes
Y aquí toca escribir. Obviamente todo lo hecho hasta ahora, tanto si hemos tenido éxito, o no, todo esto hay documentando y presentarlo tanto al cliente que ha contratado nuestros servicios o como informe para uso interno. En él dejaremos patente los métodos, técnicas, tecnologías, registros, tiempos de actuación, etc. Etc. Etc.
Para todos estos puntos anteriores existen un verdadero arsenal de herramientas y aplicaciones que podemos encontrar en distribuciones como Kali Linux o Bugtraq entre otras. No podemos decir que exista una varita mágica, cada cual hace lo suyo y ofrecen distintos resultados aunque hay muchas que son muy parecidas.
Ahora a buscar cuales pueden ser, practicar con ellas, y a seguir aprendiendo.