BYPASS AMSI

Cocinando nuestra receta con powershell y c#

3xploit
4 min readFeb 28, 2022

¿QUÉ ES AMSI?

Para empezar, vamos a explicar qué es AMSI . Se refiere a Antimalware Scan Interface, es una interfaz disponible en Windows 10 para que las aplicaciones solicitadas, en tiempo de ejecución, un análisis síncrono de un búfer de memoria mediante cualquier solución de seguridad que tengamos instalada

Deteccion Amsi
Detección Amsiutils
Shell de detección inversa powershell simple

Acontinuacion cocinaremos nuestra receta para evadir amsi y poder tener nuestro shell reverse o ejecucion de codigo en memoria sin ser detectado :)

Crearemos un proyecto en visual studio para cocinar nuestra receta

Aplicacion Windows form c#
config Name Proyecto

Ahora tenemos nuestro proyecto base para crear nuestro codigo. presionamos clic derecho sobre Form1 y eliminamos

seleccionamos clic derecho en el nombre de nuestro proyecto y agregamos nuevo elemento en este caso Clase,cambiamos el nombre por un identificador para nuestra clase en mi caso sera Apis.cs, donde Importaremos el kernel32 para hacer uso de LoadLibrary,VirtualProtect,GetProcAddress gracias a Pinvoke.

Class Apis

añadiendo mas ingredientes a nuestra receta nos centraremos en el program.cs despues de tener lista nuestra clase Apis.cs donde estara el core de nuestro proyecto.

en la siguiente imagen detallamos una clase publica llamada Resurrect es irrelevante el nombre pero hay que tenerlo en cuenta si quieres realizar un reflexion, en este caso elimine el namespace del proyecto y queda tal cual

generamos dos matriz de bytes una llamada key y otra salt la cual usaremos para descifrar el string amsi.dll y AmsiScanBuffer

a gran escala observamos Patching en memoria en bytes, el amsi.dll para cargarlo con la funcion LoadLibrary en este caso cifrado y retornado en tiempo de ejecucion igualmente para el amsiScanbuffer.

resultado de escaneo proyecto dll 1/40 scantime

en la imagen anterior podemos observar el resultado del escaneo del proyecto de la dll analisis scan time sobre un resultado positivo 1/40 en motores de escaneo.

continuamos con el proceso en esta parte desarrolle un script en powershell el cual basicamente me lee todos los bytes de la dll y me genera un invoke para poder ejecutar mi codigo que quiero ejecutar en memoria el cual contiene los metodos de ejecucion para cargar el parche de amsi y posteriormente lanzar nuestro codigo, el cual sera llamado por medio de un link.

convertBytes.ps1

https://raw.githubusercontent.com/3xploit666/AM/master/ConvertBytes2.ps1

he desarrollado un script en powershell el cual basicamente convierte la dll en bytes y genera un punto de reflexion en memoria para ejecutar el parche amsi en tiempo de ejcucion y recibe como argumentos un path de nuestro payload

generando payload.jpg

en este ejemplo hare uso de un comand and control llamado covenant utilizado como herramienta de red teamers.

generare un stage.exe y lo adaptare tal cual pueda llamar el entrypoint

stager covenant

el paso siguiente es compilar el stage del covenant y codificar el binario a base64.

stage base64

luego generare un payload en .jpg para realizar un upload al servidor web y anexarlo como argumento al convertbytes.ps1

payload.jpg
Defender activated
grunts active conection

espero que les haya gustado nos vemos en otro post de evasion

recursos

https://github.com/3xploit666/AM

--

--

3xploit

Ethical Hacker | Pentester Cloud | Red Team | Offensive Developer | Adversary Simulation | Golang Developer