Cuando realizamos un ataque sobre entornos Windows, corresponde primero saltar el Antivirus muchas o pocas veces esto es posible gracias a que se ejecuta algún binario en memoria y el mismo no sea detectado por comportamiento, pero cuando deseamos ejecutar un fichero Powershell, llegamos a tener el siguiente mensaje This script contains malicious content and has been blocked…, si tu equipo está en castellano Este script contiene elementos malintencionados y ha sido bloqueado por el software antivirus.
Ah esto se le llama AMSI que significa Anti Malware Scan Interface, que tiene como objetivo escanear y bloquear cualquier proceso que sea sospechoso o potencialmente malo analizando las entradas, en su respectivo momento Powershell era el niño mimado, ya que podía ejecutar cualquier cosa es decir brindar la oportunidad de ejecutar Malware en un equipo.
La respuesta de Microsoft ante esto fue hacer uso de AMSI, en palabras simples detecta cadenas para determinar si un código es o no malo.
Ejemplo de AMSI
A continuación ejecutaremos el comando amsiutils
en una terminal de PowerShell sin privilegios, ya que no necesitamos privilegios administrativos para llegar a saltar este control, ni tampoco desactivar el motor antivirus.
La pregunta que seguro te estarás realizando es porque el término amsiutils es detectado, como malicioso?, Esto es debido a que es una palabra prohibida como lo mencionamos al inicio de esta publicación, si identifica esto en cualquier script será identificado como malicioso, otro ejemplo al ejecutar una reverse shell en PowerShell.
Debido a esto podríamos indicar que AMSI cuenta con la capacidad de detectar casi todos los scripts de Powershell conocidos, pero como siempre podemos encontrar algunos métodos o técnicas para saltar este control en específico, en el caso de la Shell reversa haciendo uso de Chimera se logra saltar AMSI.
Saltando el control de AMSI
Para saltar el control de AMSI puede ser realizado de diferente formas por ejemplo:
- Dividiendo el texto que queremos ejecutar, en más de un fichero
- Codificando la cadena en base64.
- Usar la codificación y decodificación por medio de XOR.
- Renombrar funciones (Pyfuscation)
Veremos el salto de AMSI dividiendo la palabra amsiutils de la siguiente manera "amsi" + "utils"
.
A pesar de realizar un bypass con los 3 ejemplos mencionados se requiere que se parchee AMSI en memoria para realizar una desactivación completa.
Recursos adicionales
A continuación listamos algunos recursos que pueden apoyar y entender en mayor profundidad lo que es AMSI y como realizar el respectivo Bypass, recuerda que esta entrada es 101 con el fin de comprender y entender los conceptos iniciales de Seguridad Informática.
- How to Bypass AMSI and Execute malicious PowerShell code
- Exploring PowerShell AMSI and Logging Evasion
- AMSI Bypass REdyx,
- AMSI Bypass: Patching Technique
Comentarios
En próximas entradas iremos viendo en mayor profundidad el proceso de Bypass de AMSI, por ejemplo como realizamos en Pyfuscation y Chimera respectivamente para saltar AMSI, te gustaria que abordemos alguna otra entrada? avisanos en los comentarios o en el grupo de Telegram.
Regards,
Snifer