Orientando el pentesting hacia un ataque APT: Correos electrónicos

miércoles, 11 de junio de 2014

La seguridad de las empresas depende de muchos factores y ya se sabe que el eslabón más débil suele ser no tanto el servidor como el usuario. Con este enfoque, el pentesting debería evolucionar y llegar a combinar el proceso de intrusión "habitual" con la información recopilada sobre los usuarios. ¿Por qué no añadir a un proceso de hacking ético pruebas que simularían un ataque del tipo APT, (Advanced Persistent Threat) contra el objetivo con la idea de retroalimentar las dos vertientes del proceso? El resultado podría ser mucho más provechoso.

Un test de intrusión "tradicional", ofrece la posibilidad de realizar ataques controlados a sistemas expuestos, pero lo cierto es que si un atacante real quiere vulnerar una organización, quizá el camino más corto consista en el ataque a los empleados. Y para que este camino más corto sea aún más efectivo, debe recopilar información sobre ellos, obteniendo una visión global que aumente las posibilidades de éxito. Así, el concepto de pentest se expande, ya no solo a todo lo que se exponga en la red, sino además a la necesidad de concienciar y poner controles para que los datos "filtrados" sobre empleados no estropeen la inversión en seguridad.

Cuando en un proceso de hacking ético se han realizado pruebas de pentesting externo a la organización, los resultados han podido ser utilizados para pruebas de APT o ingeniería social y viceversa. En realidad, ambos procesos se encuentran unidos de alguna manera y no deberían ser tomados como independientes. Un atacante no lo hará en el mundo real.

Un APT es un concepto complejo que puede que se haya desvirtuado, pero en general, es un conjunto de ataques informáticos que suceden de una manera continua sobre una persona o un conjunto de personas de interés. El fin es conseguir la información de valor de las que esta persona o conjunto de personas disponen por sí mismas o en su entorno. Existen tres vertientes en un APT:
  • Es un proceso avanzado. Aunque no siempre se utilizan técnicas avanzadas para lograr los objetivos, en muchas ocasiones se necesitan varios desencadenantes o condiciones para que el ataque tenga éxito.
  • Es un proceso persistente. Se hace un seguimiento del objetivo, intentando monitorizar acciones, clasificar comportamientos en el mundo digital, incluso fuera de él, y realizando un profiling de la persona.
  • Es un proceso basado en las amenazas del mundo digital. Un usuario está expuesto a más amenazas cada día y los empleados de una organización no son una excepción.
Atendiendo a esta definición, el resultado de un pentesting podría considerarse como una entrada muy útil para un proceso de ataque tipo APT: metadatos, tipos de software que se utiliza en una organización, correos electrónicos de usuarios, correos electrónicos personales, direcciones IP, números de teléfono, etcétera... Por sí solos pueden no suponer un gran descubrimiento para el informe de un test de intrusión, pero es información valiosa para potenciar un APT.

Ejemplos del mundo real

En un pentest clásico, es habitual conseguir cuentas de correo para aplicar fuerza bruta o ataques de diccionario contra un servicio. Esta prueba suele hacerse usando un diccionario de contraseñas no seguras, para asegurar que no se protegen las cuentas con contraseñas débiles. Para conseguir correos electrónicos en Internet se pueden utilizar diversos medios: el primero son buscadores como Google, Bing o Exalead. Para facilitar la tarea existen varias herramientas como TheHarvester o Maltego.

Ejemplo de salida de TheHarvester

Aunque en la imagen no se pueda visualizar se han obtenido más de 30 resultados. Esta puede ser una buena manera de comenzar con la recolección de cuentas de usuario. Pero es que, además, esta es información muy valiosa para un profiling de empresa orientándolo a un ataque del tipo APT.

Otra de las vías para la recolección de correos electrónicos y cuentas de usuario es la búsqueda a través de los servidores de claves PGP. Esta plataforma proporciona mucha información interesante para poder utilizar y personalizar a los usuarios. Por ejemplo, realizando una simple búsqueda por dominio se obtiene lo siguiente:

Ejemplo de información sobre claves PGP

Donde se concluyen varios datos interesantes:
  • El usuario y el correo electrónico.
  • El nombre completo de la persona. En este caso, el nombre será real la mayoría de las veces, puesto que un usuario configura su clave pública con su nombre verdadero para que pueda ser encontrado en estos servidores.
  • Puesto de trabajo en la organización. Algunos usuarios así lo hacen.
  • Correo alternativo. En algunas ocasiones los usuarios utilizan la misma clave PGP para varios correos, por lo que será posible encontrar cuentas genéricas de Gmail, Hotmail, o el ISP contratado. Esto permitirá relacionar a una persona entre su correo profesional y su correo personal. De ahí se puede saltar hacia las redes sociales y otros entornos de interés. 
Si se elige una búsqueda avanzada en un servidor de claves, es posible extraer más información aun. Por ejemplo, obtener información sobre si la clave está revocada o si la confirman otros usuarios. Este es un punto interesante: conocer con quién se relaciona una persona es importante puesto que, para la preparación de un ataque más sofisticado del tipo APT, permite disponer de diferentes caminos alternativos para poder llegar al objetivo final.

Ejemplo de "círculo de confianza" en claves PGP

En Eleven Paths estamos realizando un plugin para obtener este tipo de información en nuestra herramienta de pentesting persistente Faast. El objetivo es que nuestra visión global de la seguridad de una organización no se quede simplemente en el estado de los servicios expuestos, malas configuraciones, vulnerabilidades en aplicaciones, etcétera. Nuestra idea es ofrecer un informe de todo lo que puede afectar a una organización además de los elementos que un atacante pueda utilizar para dañar la imagen de una empresa. El ejemplo expuesto, centrado en el correo electrónico, es una muestra de cómo ampliar el campo de acción de un pentest y enriquecerlo con datos personales "descuidados" en la red.

Plugin de Faast

En la imagen se puede visualizar un ejemplo de salida de nuestro plugin en desarrollo. Nuestro sistema Faast pronto proporcionará esta información, pero lo más importante es que Faast es capaz de brindar más información utilizable en estos procesos. En las pruebas que vamos realizando en entornos controlados se encuentran nombres de personas, DNI, usuarios, software asociados a máquinas de ciertos usuarios, sistemas operativos, etcétera. Esta información resulta muy valiosa como punto de partida para un ataque de tipo un APT.

Pablo González
pablo.gonzalez@11paths.com

2 comentarios:

  1. Muy buen artículo, sin lugar a dudas es muy importante trabajar sobre la información de los usuarios a la hora de realizar un Pentest. Les dejo un enlace a mi blog que describe una herramienta que me encuentro desarrollando justamente para obtener información de personas.

    http://mamaquieroserpentester.blogspot.com.ar/2014/06/welcome-to-ikn0wu.html

    ResponderEliminar
  2. Aunque por lo que se y he podido leer sobre el tema mas o menos se el porque, pero todavía a día de hoy con los adelantos que hay, no me entra en la cabeza que si una empresa contrata a un Pentester para realizar una auditoria de seguridad, que no tiene otro fin que el de saber si son vulnerables o no y corregir esos fallos, pongan tantas limitaciones a la hora de realizar una auditoria, pues creo que es un error por parte de ellos ya que nunca sabrán si lo son al 100% ya que seria equivalente a ir dejando el trabajo a medias, esto pone hasta en duda la seriedad de dicha empresa o empresario en si, pues a ningún jefe le gusta que sus empleados vayan dejando sus tareas a medio acabar, se predica con el ejemplo, no? Pues son ellos los principales responsables de la seguridad de su empresa si es que verdaderamente le importa.

    Salu2¡

    ResponderEliminar