APT Pentest con Empire


Antes de nada, conviene aclarar que APT son las siglas del término inglés Advanced Persistent Threat, que traducido al castellano seria Amenaza Avanzada Persistente. Tradicionalmente, tendíamos a asociar los ciberataques con el objetivo de infectar al mayor número de equipos posibles, bien para que las oportunidades de obtener algún tipo de beneficio fueran mayores o simplemente por notoriedad. Por contra, las APT no son ataques aleatorios, estos tienen objetivos específicos a los que comprometer, con la intención de permanecer en dichos sistemas y sustraer información valiosa de manera continua mediante el uso de malware especialmente diseñado para este propósito.

Caso de pentesting APT básico

Para traspasar la primera línea de defensa de una organización, existen un gran número de vectores de infección diferentes. Podemos aprovechar vulnerabilidades, fallos de seguridad no conocidos (0days) o malas configuraciones en los sistemas. Pero la tendencia y la experiencia nos dice que el eslabón más débil suele ser no tanto el sistema como el usuario. Por este motivo, para los ataques tipo APT se suelen utilizar vectores de infección contra empleados usando técnicas de ingeniería social como son los documentos ofimáticos, el spear-phishing, la llaves USB olvidadas...En muchos casos se suele combinar el uso de estas técnicas de ingeniería social con el uso posterior de 0days o vulnerabilidades.

Concienciados de que los usuarios/empleados en la mayoría de escenarios constituyen el eslabón más débil de la cadena y por tanto pueden ser el vector de entrada de las APT, conviene poner a prueba la sensibilización de los mismos. Para la ejecución de esta idea, diseñaremos un test de intrusión sencillo basado en el envío de un correo (spear-phishing) con un documento adjunto que será el encargado de "infectar" al destino.

1. Definiendo objetivos

En primer lugar, nuestro objetivo será obtener el mayor número de correos relacionados con la organización a la que queremos realizar el test de intrusión. Una vez tengamos un listado de los posibles objetivos, el siguiente paso será elegir aquellos perfiles que consideremos adecuados para la prueba.

Para llevar a cabo nuestro propósito de recoger el mayor número posible de correos electrónicos, podemos utilizar diferentes medios, desde buscadores de contenido como Google o Bing, hasta servidores de claves PGP o redes sociales como LinkedIn. Para automatizar y facilitar este proceso, existen varias herramientas como TheHarvester o Maltego. En nuestro caso utilizaremos TheHarvester usando de fuente el buscador Google, tal y como muestra el ejemplo de la siguiente imagen. Lo ideal sería repetir el proceso con todas las fuentes que nos ofrece la herramienta.


Como vemos se lista una serie de correos relacionados con la organización, pero, ¿Cuáles suelen ser los objetivos reales de los ataques APT? Podemos pensar en que la figura lógica a la cual dirigir el ataque debe ser un alto cargo de la organización, por suponer que está almacenara información realmente valiosa. Pero debemos pensar, bien sea por precaución, que estas personas tendrán especial cautela y estarán lo suficientemente protegidas. Por este motivo, las APT suelen ir dirigidas a empleados de menor perfil que puedan convertirse en un trampolín hacia los sistemas realmente valiosos. Una estrategia a seguir en nuestro caso podría ser empezar con los empleados de perfil más bajo, pensando que puedan estar más expuestos y continuar posteriormente escalando la prueba hacia cargos más altos.

2. Preparando la prueba

Con los objetivos bien definidos, es hora de crear el documento "malicioso" que adjuntaremos a los correos enviados. Realmente nuestro documento no busca infectar al usuario, el propósito real es abrir una shell remota que nos permita identificar a aquellos usuarios que han corrido el riesgo de ser infectados. Para ejecutarlo, usaremos las macros de Office. Las macros son una secuencia de ordenes o comandos escritos en lenguaje VBA (Visual Basic for Applications) que permiten automatizar tareas. Una vez el objetivo abre el documento, con un simple click para habilitar el contenido, ejecutaría el código de la macro, dándonos información de la persona que lo ha realizado.

Para obtener la shell remota y el código malicioso de la macro utilizaremos Empire, un framework enfocado en la fase de post-explotación que tiene la capacidad de ejecutar agentes PowerShell

El primer paso una vez lanzado Empire, es configurar nuestro listener, que será el encargado de capturar la sesión de PowerShell lanzada en el sistema objetivo. Con las opciones por defecto tenemos suficiente.


En segundo lugar seleccionaremos un stager (pensemos en payload), que será el encargado de establecer un canal entre nuestro listener y el sistema objetivo, en el cual se habrá ejecutado previamente. Existen muchos tipos de stager que Empire puede generar, pero en nuestro caso seleccionaremos el stager macro. Una parte importante que no podemos olvidar es que debemos asociar a nuestro stager el listener creado anteriormente.


El resultado de ejecutar el stager es la creación de un fichero en una ruta determinada (/tmp/macro por defecto) que contendrá el código a adjuntar como macro a nuestro fichero de Office. El menú de macros en Word, Excel o Powerpoint lo podemos encontrar en la pestaña de Vista.



Para nuestro caso y a modo de ejemplo, utilizaremos como argucia un sorteo en nuestra organización debido al 10º aniversario de la misma, para lo que crearemos un fichero .doc (Es importante guárdalo como Documento de Word 97-2003 para que funcione). Es importante dedicar tiempo a la creación del documento que utilizaremos, puesto que nuestro objetivo debe tener confianza en el contenido del mismo para pulsar sobre "Habilitar contenido". Podemos utilizar Word, Excel o Powerpoint para la creación de dicho fichero, argumentado diferentes asuntos como por ejemplo la presentación de un nuevo calendario laboral.



El ultimo paso seria enviar este documento a los correos obtenidos en el primer paso. Para que el usuario crea que estos correos son legítimos, podemos crear un dominio parecido al de la organización o hacer mail spoofing (convendría asegurarnos de que no se tiene implementado un SPF). Cuando un usuario habilite el contenido del documento y se "infecte", pasará automáticamente a nuestra lista de agents, donde podremos consultar directamente el nombre de usuario y de la máquina para identificar a los usuarios que se hubieran infectado en un escenario real.



Y hasta aquí nuestro sencillo test de intrusión APT mediante ingeniería social. Desde Hack'n'Bytes no nos hacemos responsables por los pescozones que pueda generar una prueba de este tipo.