Mostrando entradas con la etiqueta AMSI. Mostrar todas las entradas
Mostrando entradas con la etiqueta AMSI. Mostrar todas las entradas

domingo, octubre 03, 2021

GoAround: Automatización de bypasses a AMSI y ofuscación de código PowerShell

Realizando el Máster de Seguridad de las TIC en la Universidad Europea, se proponían varios temas como posibles Trabajos de Fin de Máster, entre los que se incluía el desarrollo de una herramienta que automatizase la realización de bypasses a la protección AMSI. Entonces yo no tenía ni idea de qué era eso de AMSI (Antimalware Scan Interface), pero buscando un poco por Internet descubrí que era una protección antimalware de Windows y que el objetivo del trabajo era lograr “saltársela”, por lo que me pareció un tema muy interesante. 

Figura 1: GoAround: Automatización de bypasses a AMSI
y ofuscación de código PowerShell

De modo que comencé mi TFM, dirigido por Pablo González (a quien le agradezco toda la ayuda), con el objetivo de desarrollar dicha herramienta.Y así es como surgió GoAround: una herramienta con dos funcionalidades principales. En primer lugar, permite la generación automática de scripts para realizar un bypass a AMSI y, en segundo lugar, permite la ofuscación de cualquier script de código PowerShell.

¿Qué es AMSI?

AMSI es una protección antimalware de Windows que se integra con el antivirus que esté instalado en la máquina (aunque este no sea Windows Defender). Además, tiene integración con JavaScript, VBScript y PowerShell de tal modo que, antes de ejecutar códigos escritos en estos lenguajes, los analiza para ver si son o no malware. En este caso nos vamos a centrar únicamente en su integración con PowerShell.

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

Para realizar las comprobaciones, AMSI se basa bien en el hash del archivo o bien en palabras o funciones que se utilicen en el código y que tenga clasificadas como maliciosas. Por ejemplo, AMSI va a bloquear directamente cualquier script de PowerShell que contenga la palabra “amsiutils”.

Ofuscación de código PowerShell con GoAround

Para evitar la detección de ciertos scripts, se pueden utilizar técnicas de ofuscación como las siguientes:

- Uso aleatorio de mayúsculas: se basa en alterar las funciones de PowerShell, utilizando letras mayúsculas y minúsculas aleatoriamente. Esto logrará cambiar el hash del archivo original. Funciona debido a que PowerShell no es sensible a mayúsculas y minúsculas, es decir, “Get-Process” lo entiende igual que “GEt-pROcesS”. Sin embargo, AMSI tampoco es sensible a mayúsculas y minúsculas, por lo que no nos servirá si lo que está utilizando para detectar el script es una palabra clave como “amsiutils”. Únicamente sirve si lo que tiene AMSI registrado es el hash del archivo malicioso. 
 
Figura 3: Ofuscación del archivo con uso aleatorio de mayúsculas

- Concatenación de cadenas de texto: como AMSI en ocasiones lo que hace es detectar palabras, bastará con separar una palabra en dos o más cadenas de texto para que esta ya no sea detectada. Por ejemplo, si transformamos “amsiutils” a “amsiu” + “tils”, AMSI ya no detectará nuestro script como malicioso.

Figura 4: Ofuscación de archivo mediante concatenación de cadenas de texto 

- Inserción de variables: se basa en lo mismo que la concatenación de cadenas de texto. En este caso, para separar la palabra deberemos crear una variable ($var = “tils”, por ejemplo) para después formar “amsiutils” de la forma: “amsiu$var”. De este modo, AMSI ya no detectará el script como malicioso. GoAround permite la ofuscación de scripts de PowerShell de forma automática usando alguna de estas tres técnicas, tal y como se puede ver en las siguientes imágenes.

Figura 5: Ofuscación de archivo mediante inserción de variables

Bypass a AMSI con GoAround

La herramienta GoAround permite la generación automática de dos tipos de bypasses: el bypass de reflexión desarrollado por Matt Graeber (ligeramente modificado) y el bypass de parcheo de la función AmsiScanBuffer desarrollado por Paul Laîné.


Si bien es cierto que los bypasses a AMSI suelen tener una vida corta, debido a que acaban siendo detectados por la propia protección, el hecho de utilizar técnicas de ofuscación que tienen elementos aleatorios (es decir, cada vez se genera un archivo diferente), puede ayudar a aumentar el tiempo de funcionalidad de estos bypasses.

Figura 7: Uso del bypass de reflexión ofuscado mediante concatenación de cadenas de texto

En las imágenes se puede observar cómo, utilizando estos dos bypasses se consigue en ambos casos deshabilitar AMSI y ejecutar elementos maliciosos en PowerShell. Como se puede observar, tras la ejecución de los bypass ya se podría ejecutar cualquier otro script malicioso.

Figura 8: Uso del bypass de Paul Laîné ofuscado mediante inserción de variables

El objetivo principal de esta herramienta es ayudar a los pentesters durante sus tareas de post-explotación, en las que habitualmente podrán encontrarse con que la protección AMSI para los scripts que quieren ejecutar en las máquinas. En un futuro, el objetivo es incluir más bypasses y más técnicas de ofuscación para mantener esta herramienta actualizada. Quizá incluso añadir la funcionalidad necesaria para que funcione también con scripts escritos en VBScript o en JavaScript. Hasta entonces, podéis descargar la herramienta desde GitHub [GoAround].

Autora: Ana Junquera Méndez

miércoles, mayo 19, 2021

AMSITrigger v3 & Chimera: Más herramientas de ofuscación y bypass de AMSI en Windows

Ya hemos hablado de AMSI en El lado del mal en diversas ocasiones. Es un tema de mucho interés en el Ethical Hacking actual, ya que los propios sistemas EDR utilizan este tipo de solución para poder detectar situaciones anómalas que puedan ocurrir en los procesos, generalmente, en Powershell, Javascript o VBS, aunque no exclusivamente.

Figura 1: AMSITrigger v3 & Chimera. Más herramientas de
ofuscación y bypass de AMSI en Windows

Hemos visto cómo trabajar manualmente con los bypasses de AMSI y con la existencia de servicios como AMSI.fail, el cual nos permite generar diferentes tipos de códigos que pueden ayudar al pentester a hacer el bypass de AMSI. Hemos visto y trabajado con los bypasses de AMSI en nuestra herramienta iBombshell. Hemos ido explicando técnicas manuales que se pueden automatizar para trocear algunos scripts, ofuscar y hacer prueba y error para conseguir el bypass de AMSI.

Figura 2: Pentesting con Powershell 2ª Edición

En el artículo de hoy hablaremos de un par de herramientas que ayudan al pentester a encontrar y entender dónde AMSI detecta las funciones en Powershell que se quieren ejecutar. Esto es vital para poder aplicar técnicas de ofuscación para evadir la protección cuando estamos en un proyecto de hacking ético. Además, hablaremos de Chimera un script de bash que nos permite realizar esa evasión o bypass de AMSI ofuscando por completo o parcialmente el código de la función de Powershell.


Figura 3: El poder del Pentesting con Powershell

La primera herramienta que vamos a ver es AMSITrigger, la cual va por su versión v3. Esta herramienta permite leer funciones o scripts de Powershell e ir haciendo llamadas a AMSI para ver en qué líneas o instrucciones se detecta como malicioso. De esta forma el pentester tiene una visión rápida de qué debe “tocar” para que AMSI no detecte el código como malicioso.

Figura 4: AMSITrigger v3

AMSITrigger tiene diferentes opciones, las cuales pueden verse en la imagen. La idea es bastante sencilla se obtiene el fichero con el código fuente, ya sea a través de una URL o porque lo tengamos en disco y se lo pasamos al binario de AMSITrigger. La opción ‘-f’ nos permite indicar el grado de análisis que queremos realizar. Para un ejemplo sencillo y saber en qué línea del código fuente están las líneas que AMSI está detectando como malicioso tenemos que indicar la opción ‘-f 2’.

Figura 5: Opciones de AMSITrigger

Para mostrar un ejemplo rápido disponemos de un script o función de Powershell que permite hacer el bypass de UAC a través de las Environment Injection. Si indicáramos en AMSITrigger la opción ‘-u’ y la dirección URL dónde se encuentra el código, la herramienta se descargaría la función y la analizaría, sin necesidad de tener que descargarlo nosotros. Por ejemplo:

-u https://raw.githubusercontent.com/Telefonica/ibombshell/
                    /master/data/functions/bypass/uac/invoke-environmentinjection.

Como puede verse en la imagen, en la línea 21 AMSI está detectando como maliciosa esa línea. Habrá que trabajar sobre ella para evitarlo. En el caso de que AMSI no detectara ninguna línea como maliciosa, el resultado nos indicaría precisamente este hecho. Como veis es muy fácil de utilizar.

Figura 6: AMSI detecta como maliciosa la línea 21

Otro ejemplo que vamos a analizar es el de la función amsi-memory de iBombShell. Como se puede ver en la imagen, se obtiene una serie de líneas y los campos que provocan la detección por parte de AMSI. Ahora tocaría jugar con la ofuscación para lograr la no detección.

Figura 7: Ofuscación del Bypass de AMSI

Herramientas como AMSITrigger son bastante interesantes para ir conociendo en detalle el nivel de labor que tenemos por delante a la hora de cambiar un script para que no se detecte. Las medidas con las que jugar son varias, pero todas importantes e interesantes.

Chimera   

Ahora comentaremos la herramienta Chimera. Este script permite sustituir variables, nombres de funciones, comentarios, aplicar un tipo de ofuscación, sustituir tipos de datos, ofuscar direcciones IP, etcétera. Es un all-in-one. Lo mejor que tiene Chimera es que el usuario puede elegir qué tipo de ofuscación y qué grado de sustitución de elementos quiere llevar a cabo.

Figura 8: Chimera Script

En la siguiente imagen, tenemos un ejemplo sobre una función que es detectada por algunos motores AV. Decimos algunos por ser generosos. Al invocar el script con la opción ‘--all’ se ejecutan todas las sustituciones que se pueden hacer, pero también podemos ir seleccionando cuales si y cuales no.

Figura 9: Todas las sustituciones con Chimera

En estas imágenes podemos ver ejemplos de cómo actúa Chimera y cómo transforma el script original en una serie de información ofuscada no entendible y que a ojos de AMSI, seguramente, pueda pasar más desapercibida.

Figura 10: Transformación realizada

Sin duda, estas dos herramientas, cada una en su funcionalidad aportan valor al pentester y permiten saber cuando AMSI nos detecta y por qué y poder dar solución de forma automática y con ofuscación a esta detección. Dos herramientas que debemos meter en la mochila del pentester para el día a día en el Ethical Hacking.
 
Saludos,

Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters: Gold Edition", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell (2ª Edición)”, "Pentesting con Kali Silver Edition" y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.  Para consultas puedes usar el Buzón Público para contactar con Pablo González - Conseguir 100 Tempos Gratis en MyPublicInbox

 Contactar con Pablo González

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares