lunes, octubre 19, 2020

Actualización ATTPwn: Versión 0.2.1 Novedades en funcionalidades

En el artículo de hoy os mostraremos cómo agregar una función en el framework ATTPwn para la emulación de adversarios, de forma sencilla, y explicaremos algunas de las novedades que trae esta nueva versión 0.2.1 que ya puedes descargar desde su repositorio en GitHub. No son muchas las novedades, que ya sabéis que nuestra preferencia es llevar un ciclo de desarrollo rápido y con liberación de versiones cortas, pero esperamos que os sean relevantes y útiles.

Figura 1: Actualización ATTPwn: Versión 0.2.1 Novedades en funcionalidades

Aunque ya os mostrábamos en otro artículo anterior cómo añadir vuestros propios scripts a ATTPwn no había posibilidad de añadir estos scripts directamente desde la interfaz gráfica. Es por ello por lo que hemos implementado esta nueva funcionalidad para dotar así a la comunidad de la facilidad de poder contribuir de manera cómoda con la herramienta. Esta nueva opción está dentro de la vista ATT&CK, donde ahora tienes "Add Implementations" junto al botón de “View Implementations”.

Figura 2: View Implementations y Add Implementations en el GUI de ATTPwn

Cuando hagamos clic en el botón de la opción "Add Implementations", veremos la vista para añadir fácilmente la nueva funcionalidad que queramos, y así dotar de más inteligencia a la herramienta, probar nuevos scripts que estemos desarrollando y ver cómo funcionan encadenados a otras funciones o scripts

Figura 3: Opción de "Add Implementations"

La vista es muy similar a “View Implementations”, pero en este caso, se muestran todas las técnicas disponibles en la matriz de MITRE ATT&CK organizadas en función de la táctica. Podremos elegir el nombre de la “Técnica”, que será el nombre que recibirá el fichero que se guardará en la carpeta “functions” de la aplicación.

El "Check" representa la parte “lógica” que determina si el warrior se tendrá que dividir, bien sea por que tenemos una consola nueva, con privilegios elevados o un movimiento lateral, este hará que en el momento que termine la ejecución del script “muera” para que la siguiente consola pueda hacer el nuevo “HI” con el ID del warrior.

Para verificar que se ha creado nuestra función correctamente, podemos ir al apartado de “View Implementations” seleccionar la Táctica a la que pertenece y en las Técnicas debería de aparecer el nombre de nuestro script.

Figura 4: Nuestra nueva "Técnica" importada

En nuestro caso vemos que el fichero que se muestra es el anteriormente creado, basándonos en el “skeleton file” para empezar con la estructura básica de nuestra función. También, podemos mejorar o cambiar el comportamiento de scripts, como es el caso de la técnica T1211 – Explotation for Defense Evasion – Disable defender bifurcated que vamos a ver a continuación.

Disable-Defender-Bifurcated:

La semana pasada subimos nuevas funciones al repositorio de Github de ATTPwn. Una de ellas Disable Realtime con el nombre de Disable Defender. Como ya explicamos en el anterior artículo, dicha función, permite al usuario evadir la protección del antivirus de Microsoft desactivando la protección en tiempo real si y solo si, la protección contra alteraciones está deshabilitada y la función se ha ejecutado en un entorno con privilegios de administrador.

Figura 5: Función Disable Defender Bifurcated 

Al utilizar esta técnica, sin un Bypass de AMSI persistente implementado previamente, el flujo de ejecución se podría ver afectado, ya que AMSI aun estando deshabilitado seguía monitorizando ese proceso. Por lo que en esta nueva reléase, hemos implementado la función Disable Realtime añadiendo una bifurcación del warrior que esté ejecutando el plan, para solventar el problema comentado de forma previa. Es decir, esta función creará un desdoblamiento del warrior en cuestión y seguirá con el flujo de trabajo previsto por el usuario. 

Nueva generación de código en la sección: Warriors.

Han pasado un par de semanas desde que subimos la anterior actualización de ATTPwn al repositorio de Github y escribíamos sobre las nuevas funcionalidades en el artículo anterior. Una de las “mejoras” para simplificar el uso de la herramienta es la generación del warrior. Para ello hemos decidido crear nuevos comandos, para poder disminuir el riesgo a ser detectados por la primera defensa a la hora de lanzar el comando en Powershell, una de las herramientas más potentes en el mundo del pentesting.

Figura 6: Libro de Pentesting con PowerShell (2ª Edición)
de Pablo González en 0xWord

El comando que generaba el warrior, era susceptible a ser “cazado” por AMSI por lo que hemos propuesto varias medidas para evitar que ocurra, si se os ocurre otra forma para tratar de minimizarlo podéis aportar estas ideas para hacer crecer la herramienta. A la hora de generar un warrior y ejecutar el código generado en la máquina que auditemos, puede que nos encontremos un mensaje parecido a este:

Figura 7: Error "Contenido malicioso al ejecutar el código generado"

Como solución a este posible error, hemos implementado distintos bypasses de AMSI a la hora de generar el código del warrior. Uno clásico y el otro persistente. Por lo que a la hora de generar un warrior tendremos tres opciones: la opción sin bypass, la opción ofuscada y la opción persistente.

Figura 6: Distintas opciones para generar un Warrior 

Ya os iremos contando en próximos artículos todo lo que vayamos añadiendo nosotros y los aportes que hace la comunidad a este proyecto. También, si tenéis una sugerencia para añadir, será más que bienvenida, así que hacédnosla llegar dejándonos comentarios.

Saludos,

Autores:

Luis E. Álvarez, desarrollador y miembro del equipo Ideas Locas CDCO de Telefónica.
Víctor Rodríguez Boyero, desarrollador y Security Researcher en el equipo de Ideas Locas de CDCO de Telefónica.

No hay comentarios:

Publicar un comentario