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.
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.
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.
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’.
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:
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.
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.
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.
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.
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.
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.
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.
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 |
No hay comentarios:
Publicar un comentario