BYPASS AMSI
¿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
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
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.
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.
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.
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
el paso siguiente es compilar el stage del covenant y codificar el binario a base64.
luego generare un payload en .jpg para realizar un upload al servidor web y anexarlo como argumento al convertbytes.ps1
espero que les haya gustado nos vemos en otro post de evasion
recursos